1<!doctype html> 2 3<html lang="en" dir="ltr"> 4 <head> 5 6<!--LOOMI SDK--> 7<!--DO NOT EDIT--> 8<link rel="preconnect" href="https://live.visually-io.com" crossorigin data-em-disable> 9<link rel="dns-prefetch" href="https://live.visually-io.com" data-em-disable>
10<script type="text/javascript" data-em-disable data-vsly> 11 (()=> { 12 const env = 2; 13 var store = "myfirmtech.myshopify.com"; 14 var alias = store.replace(".myshopify.com", "").replaceAll("-", "_").toUpperCase(); 15 var jitsuKey = "js.57731776662"; 16 var themeId = 137274720406; 17 var role = "main"; 18 window.loomi_ctx = {...(window.loomi_ctx || {}),storeAlias:alias,jitsuKey,env,themeId,role}; 19 20 21 22 23 24 window.loomi_ctx.blockingConcent = false; 25 loomi_ctx.ttl=1793657581; 26 loomi_ctx.embeddedTests=[]; 27 })() 28</script>
vendor: 1 bytes, line 28
28
29<script type="text/javascript" data-em-disable> 30 !function(){var e,t,n;!function(e){e.JSCondition="jsCondition",e.JSFunction="jsFunction",e.JSEvent="jsEvent",e.Selector="selector",e.ElementEvent="elementEvent",e.PageLoad="pageLoad",e.Timeout="timeout",e.Inactivity="inactivity",e.ExitIntent="exitIntent",e.Conjunction="conjunction"}(e||(e={})),function(e){e[e.PAUSED=4]="PAUSED"}(t||(t={})),function(e){e[e.LOCAL=0]="LOCAL",e[e.STAGE=1]="STAGE",e[e.PROD=2]="PROD",e[e.TEST=3]="TEST"}(n||(n={}));const r="lmi_preview";var o;!function(e){e.USE_CASE="USE_CASE",e.ADD_TO_CART="ADD_TO_CART"}(o||(o={}));const i=function(e){void 0===e&&(e=()=>window);try{return Promise.resolve(v(()=>void 0!==_(()=>e().removeEventListener),100,100)).then(function(){return Promise.resolve()})}catch(e){return Promise.reject(e)}},s=function(e,t){void 0===e&&(e=()=>window),void 0===t&&(t=!1);try{function n(){return Promise.resolve()}const r=t&&a()?Promise.resolve(v(()=>c,1e3,10)).then(function(){}):Promise.resolve(v(()=>void 0!==_(()=>e().addEventListener),10,1e3)).then(function(){});return Promise.resolve(r&&r.then?r.then(n):n())}catch(o){return Promise.reject(o)}};let c=!1;function a(){return!0===_(()=>window.vslyDeferResources)}function u(e,t){void 0===t&&(t=20);let n=0;return function(){clearTimeout(n),n=setTimeout(()=>e(...[].slice.call(arguments)),t)}}window.addEventListener("load",()=>{setTimeout(()=>{c=!0},2e3)});const l="vsly-hide-theme-preview",d="vslyCtags",m=()=>{_(()=>{const e=window.loomi_ctx.ctags||[];0===e.length?window.loomi_ctx.ctags=JSON.parse(localStorage.getItem(d)||"[]"):localStorage.setItem(d,JSON.stringify(e)),_(()=>{const e=JSON.parse(localStorage.getItem("vslyCustomCtags")||"[]");e&&e.length>0&&(window.loomi_ctx.ctags=[...window.loomi_ctx.ctags||[],...e])})})},f=()=>new Date(1e3*Math.floor(Date.now()/1e3));function h(e,t){void 0===t&&(t={async:!1,defer:!1});const n=_(()=>window.visually.flags["bunny-cdn"]),r=A();return p(`vsly-lib-${e}`,`https://${n?"assets.visually.io":r}/vsly/lib/${e}.js`,t)}function p(e,t,n){return void 0===n&&(n={async:!1,defer:!1}),new Promise((r,o)=>{let i=document.getElementById(e);i?r(document.getElementById(e)):(i=document.createElement("script"),i.id=e,i.src=t,i.async=n.async||!1,i.defer=n.defer||!1,i.setAttribute("data-em-disable",""),i.onload=()=>r(i),i.onerror=()=>o(new Error(`Failed to load ${t}`)),document.head.appendChild(i))})}function v(e,t,n,r){return void 0===t&&(t=500),void 0===n&&(n=4),new Promise((o,i)=>{e()?o(0):0!==n?setTimeout(()=>{r&&r()&&i(`condition rejected ${_(()=>e.toString())}`),v(e,t,n-1).then(o).catch(i)},t):i(`condition rejected ${_(()=>e.toString())}`)})}function w(e,t){void 0===t&&(t=500);const n=_(()=>window.visually_io_editor)?Date.now()+1e4:Infinity;function r(o){try{const i=e();i?o(i):Date.now()>=n?o(void 0):setTimeout(()=>r(o),t)}catch(e){console.error("vsly-when",e),Date.now()>=n?o(void 0):setTimeout(()=>r(o),t)}}return new Promise(e=>{r(e)})}function y(e){return!Array.isArray(e)||0===e.length}function g(e){return btoa(unescape(encodeURIComponent(JSON.stringify(e))))}function _(e,t){void 0===t&&(t=void 0);try{return e()}catch{return t}}const S=e=>e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;function E(){const e=window.loomi_ctx?.clientId;return e?(window.localStorage.setItem("vsly__st",String(e)),String(e)):window.localStorage.getItem("vsly__st")}function P(e,t,n){void 0===t&&(t=5),void 0===n&&(n=500),t>=0&&!_(e)&&setTimeout(()=>{_(e)||P(e,t-1)},n)}const A=function(e){return void 0===e&&(e=window.loomi_ctx.env),e===n.STAGE?"sdk.loomi-stg.xyz":"live.visually-io.com"};function I(e){return e.replace(/[^a-z_A-Z0-9]/gi,"_")}const b=()=>!!_(()=>x()()),x=()=>_(()=>window.Shopify.customerPrivacy.analyticsProcessingAllowed)||_(()=>window.Shopify.customerPrivacy.userCanBeTracked)||_(()=>window.visually.analyticsProcessingAllowed);function C(){const e=function(){try{return Promise.resolve(v(()=>!!_(()=>window.loomi.jitsu),a()?1e3:500,120)).then(function(){return _(()=>window.loomi.jitsu)})}catch(e){return Promise.reject(e)}}();return{register(t,n,r,o){e.then(e=>_(()=>e.register(t,n,r,o)))},track:function(t,n,r){return Promise.resolve(e).then(function(e){return Promise.resolve(_(()=>e.track(t,n,r))).then(function(){})})},trackExt:function(t,n){return Promise.resolve(e).then(function(e){return Promise.resolve(_(()=>e.trackExt(t,n))).then(function(){})})}}}let k=!1,T=!1;function N(e,t,n){return{id:T?"lmi-000":"lmi-"+ ++j,isApplied:!1,kind:e,selector:t,value:n}}function O(e,t){let n,r=!1;return null!==e.previousElementSibling?n=e.previousElementSibling:(n=e.parentElement,r=!0),n?(e.outerHTML=t,r?n.firstElementChild:n.nextElementSibling):e}let j=Math.round(1e4*Math.random()),L=[],$=new Map;const R="lmid",D="lmwv";function U(){return!!_(()=>window.vsly_fbs)}function M(){return window.location.search.includes("lmi_debug")||U()}function q(){M()&&console.debug("loomi-editor",...[].slice.call(arguments))}function F(){M()&&console.error("loomi-editor",...[].slice.call(arguments))}let B=!0,J={};class V{constructor(e,t){this._value=void 0,this._addedAt=void 0,this._value=e,this._addedAt=t||(new Date).getTime()}value(){return this._value}addedAt(){return this._addedAt}}class H{constructor(e,t){this.backend=void 0,this.ttlMillis=void 0,this.backend=e,this.ttlMillis=t}isValid(e){return!!e&&(new Date).getTime()-e.addedAt()<=this.ttlMillis}get(e){const t=this.backend.get(e),n=this.isValid(t);if(t&&n)return t.value();n||this.backend.remove(e)}set(e,t,n){const r=new V(t,n);this.backend.set(e,r)}}class G{constructor(e){this.namespace=void 0,this.namespace=`vsly_cache_${e}`,window[this.namespace]={}}get(e){return _(()=>window[this.namespace][e])}remove(e){_(()=>delete window[this.namespace][e])}set(e,t){window[this.namespace][e]=t}}class z{constructor(e){this.namespace=void 0,this.namespace=`vsly_cache_${e}`}get(e){return _(()=>{const t=sessionStorage.getItem(`${this.namespace}_${e}`);if(!t)return;const n=JSON.parse(t);return new V(n._value,n._addedAt)})}remove(e){sessionStorage.removeItem(`${this.namespace}_${e}`)}set(e,t){sessionStorage.setItem(`${this.namespace}_${e}`,JSON.stringify(t))}}class K extends H{constructor(e,t){super(new G(e),t)}}const W=function(e,t){void 0===t&&(t=8397271938200529);let n=3735928559^t,r=1103547991^t;for(let t,o=0;o<e.length;
30o++)t=e.charCodeAt(o),n=Math.imul(n^t,2654435761),r=Math.imul(r^t,1597334677);return n=Math.imul(n^n>>>16,2246822507)^Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),`${4294967296*(2097151&r)+(n>>>0)}`},Q="targeting-changed",Y="vslyThemeTest",Z="0891c521a9aa47c6a9fd965198b7ed44",X="_203";function ee(e,t,n,r,o){void 0===n&&(n=10),void 0===r&&(r=!1),void 0===o&&(o="none");const{_USE_CASE:i,_USE_CASE_VARIANT:s,_USE_CASE_AUDIENCES:c,_USE_CASE_VERSION:a,_USE_CASE_GA_VARIANT:u,_USE_CASE_GA:l}=e;if(U()||ie())return;if(!function(e){try{const t=location.pathname,n=new URL(e);if(location.search.includes("vsly-redirected-from"))return!1;if(!0===_(()=>window.visually.flags["sdk-kill-advanced-redirect-checks"]))return!0;{let e=!1;const r=decodeURIComponent(location.search);return n.searchParams.forEach((t,n)=>{const o=decodeURIComponent(`${n}=${t}`);r.includes(o)||(e=!0)}),!!((_(()=>Array.from(n.searchParams.values()).length)||0)>0&&e)||t!==n.pathname}}catch(e){return!1}}(t))return;if(!function(e,t,n){const r=`vsly-redirect-${W(`${n._USE_CASE}-${n._USE_CASE_VARIANT}-${n._USE_CASE_VERSION}-${e}`)}`;return"session"===t?"true"!==sessionStorage.getItem(r)&&(sessionStorage.setItem(r,"true"),!0):"user"!==t||"true"!==localStorage.getItem(r)&&(localStorage.setItem(r,"true"),!0)}(t,o,e))return;h();const d=`${i}-${s}`,m={type:"USE_CASE",ts:f().valueOf(),payload:{sid:_(()=>window.loomi_ctx.session.id),user:{anonymous_id:_(()=>window.loomi_ctx.userId)},use_case:i,use_case_variant:s,...a?{version:a}:{},...c?{audiences:c}:{}},options:{gaName:_(()=>I(l)),gaVariant:_(()=>I(u))}};function h(){document.body&&(document.body.style.opacity=0)}_(()=>{ce(i)&&(m.payload.clickId="redirect",m.options.isRedirect=!0)}),window.vsly_redirecting=!0,setTimeout(function(){try{h();const e=JSON.stringify(m),n=g(m),o=!d.includes(re);let i=t;try{new URLSearchParams(location.search).forEach((e,t)=>{(r||oe(t))&&(i=te(i,t,e))})}catch(t){q("e87",{redirectUrl:i,key:d,event:e,ex:t})}return i=te(i,"vsly-redirected-from",d),o&&(i=te(i,"vsly-redirected-event",n)),location.replace&&location.replace(i),Promise.resolve()}catch(e){return Promise.reject(e)}},n)}function te(e,t,n){try{const r=new URL(e);return r.searchParams.append(t,n),r.href}catch(t){return`${e}${e.includes("?")?"&":"?"}key=${n}`}}function ne(e){return{_USE_CASE:e.experienceId,_USE_CASE_VARIANT:e.variantId,_USE_CASE_VERSION:e.version,_USE_CASE_AUDIENCES:_(()=>window.loomi_ctx.audiences.join("|"),""),_USE_CASE_GA:e.gaExperienceName,_USE_CASE_GA_VARIANT:e.gaVariantName}}const re="theme_test_redirect_back_to_main",oe=e=>e.toLowerCase().startsWith("utm");function ie(){return _(()=>window.Shopify.designMode,!1)}function se(){return _(()=>window.Shopify.country)||_(()=>window.visually.country)}const ce=e=>window.loomi.conf.experiments.find(t=>t.name===e).isRedirect,ae=(e,t)=>{_(()=>!0===window.visually.flags["sdk-disable-dynamic-height-strategy"],!1)||e&&function(e,t,n){let r=e,o=0;for(;r.parentElement&&o<10;)n(r.parentElement),r=r.parentElement,o+=1}(e,0,e=>{const t=e.style.height;var n;(n=t)&&""!==n&&(e.style.removeProperty("height"),e.style.minHeight=t)})};function ue(e,t,n,r){if(!document.body.contains(r)){const r=document.querySelector(n);return r?(t(),e(),{element:r,isDetached:!0}):{isDetached:!1}}return{isDetached:!1}}function le(e){if(!_(()=>window.visually.flags["visibility-redo"]))return document.querySelector(e);const t=document.querySelectorAll(e);for(let e=0;e<t.length;e++){const n=t.item(e);if(de(n))return n}return _(()=>t[0])}function de(e){try{if(!_(()=>window.visually.flags["visibility-redo"]))return!0;if(!e)return!1;const t=e.getBoundingClientRect(),n=getComputedStyle(e);return!_(()=>"none"==n.display||"0"==n.opacity||"hidden"==n.visibility||t.width<=5&&t.height<=5||"none"==e.style.display||"0"==e.style.opacity||"hidden"==e.style.visibility)}catch(e){return!0}}function me(e){return _(()=>window.visually.flags[e],!1)}function fe(){return _(()=>!0===window.vslyDeferWidgets||me("sdk-defer-widgets"),!1)}const he="visually",pe="widgets";let ve;function we(e,t){const n=e+t,r=`vslyw-${n}`;if(!document.getElementById(r)){const e=document.createElement("script");e.id=r,e.type="text/javascript";
30const t=_(()=>window.visually.flags["bunny-cdn"]),o=A();e.src=`https://${t?"assets.visually.io":o}/widgets/${n}.js`,document.head.appendChild(e)}}window.IntersectionObserver&&(ve=new IntersectionObserver((e,t)=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;(function(e){const t=e.getAttribute("lmw"),n=e.getAttribute(D);if(t&&n){const r=t+n;return v(()=>_(()=>!!window[he][pe][r])&&_(()=>!!window.preact),50,500).then(()=>{_(()=>window[he][pe][r](`#${e.id}`))}),!0}return!1})(n)&&t.unobserve(n)}})},{root:null,rootMargin:window.vslyDeferWidgetsMargin||"100px",threshold:.1}));const ye="vsly-orig-sel";function ge(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}const _e=function(e){try{return Promise.resolve(ge(function(){return Promise.resolve(v(()=>!!_(()=>document.querySelector(e)),250,100)).then(function(){return Promise.resolve(document.querySelector(e))})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}};function Se(e,t,n){const r=t.extra;return n&&n>=3?void 0!==r&&!!_(()=>e.childNodes[r]):!!r&&!!_(()=>e.childNodes[r])}function Ee(e,t,n){void 0===n&&(n=10),me("kill-theme-testing")||Pe(t)||(Ae(e,t),ee(e,Ie(t).href,n,!0,"session"))}const Pe=e=>{if(xe())return!0;_(function(){try{return Promise.resolve(v(()=>!!document&&!!document.head,10,2e3)).then(function(){const e=document.head||document.getElementsByTagName("head")[0];if(!e.querySelector(`#${l}`)){const t=document.createElement("style");t.id=l,t.appendChild(document.createTextNode("#preview-bar-iframe,#PBarNextFrameWrapper,#PBarNextFrame { display: none !important;}")),e.appendChild(t)}})}catch(e){return Promise.reject(e)}});const t=window.loomi_ctx.themeId||_(()=>window.Shopify.theme.id),n=window.loomi_ctx.role||_(()=>window.Shopify.theme.role),r=!Ne({id:t,role:n}),o=_(()=>!window.loomi_ctx.testedThemes.includes(t));return!(!r||!o)||Te({id:t,role:n},e)},Ae=(e,t)=>{const n=e._USE_CASE!==re;Le(t)&&n&&[sessionStorage,localStorage].forEach(e=>Oe(e))},Ie=e=>{let t=Re();return _(()=>!!window.loomi_api.vslyResolveThemeTestUrl)&&(t=_(()=>window.loomi_api.vslyResolveThemeTestUrl(t),t)),t.searchParams.append("preview_theme_id",`${e||""}`),t},be=()=>{const e="vsly-tts";if($e(e)||De(e))return;ke();const t=Ie("");t.searchParams.append(e,"1"),sessionStorage.setItem(e,`${f().valueOf()}`),document.body.style.opacity=0,location.replace(t.href)},xe=()=>
30{const e="vsly_disableThemeTest",t=$e("disableThemeTest")||!!sessionStorage.getItem(e);return t&&sessionStorage.setItem(e,"1"),ie()||t},Ce=()=>0===(window.loomi_ctx.embeddedTests||[]).filter(e=>e.experiment.isThemeTest).length,ke=()=>[sessionStorage,localStorage].forEach(e=>e.removeItem(Y)),Te=(e,t)=>e.id===t||Ne(e)&&!t,Ne=e=>"main"===e.role,Oe=e=>e.setItem(Y,"1"),je=e=>e.getItem(Y),Le=e=>!!e,$e=e=>_(()=>Re().searchParams.has(e)),Re=()=>_(()=>new URL(window.location.href)),De=e=>{const t=sessionStorage.getItem(e);if(t){const e=f().valueOf()-Number(t);return Number.isFinite(e)&&e<864e5}return t},Ue="data-rid",Me="data-alchemy-element-root";let qe,Fe=0;function Be(e){return e.hasAttribute(Ue)||e.hasAttribute(Me)}const Je=function(e,t){try{return Promise.resolve(v(()=>!!document&&!!document.body&&!!document.querySelector,50,200)).then(function(){!function(){if("undefined"==typeof document)return;Ve||(Ve=new MutationObserver(He)),He();const e="spa"===_(()=>window.vslyIntegrationType,"static")?document:document.body;Ve.observe(e,{childList:!0,subtree:!0,characterData:!0,attributes:!1})}(),e&&(k=e),t&&(T=t)})}catch(e){return Promise.reject(e)}};let Ve;function He(){L.filter(e=>!e.isApplied).forEach(e=>{try{const t=_(()=>document.body.querySelector(e.selector));if(!t)return void function(e,t,n,r,o){void 0===r&&(r=100),void 0===o&&(o=10);const i=!!t,s=_(()=>J[e])||0;!i&&B&&s<o&&(B=!1,J[e]=(_(()=>J[e])||0)+1,setTimeout(()=>{try{n()}catch(t){F("failed to run setTimeout on refreshAllElementsSets",e,t)}B=!0},r+50*s))}(e.selector,t,He,100,10);if($.has(e.id))return;if(function(e,t){if(e&&(void 0===qe&&(qe=!!document.querySelector(`[${Me}],[${Ue}]`)),qe)&&function(e){return["replace","appendBefore","appendAfter","compound","widget","moveElem"].includes(e.kind)}(t))for(let t=e;t;t=t.parentElement)if(Be(t))return!0;return!1}(t,e)&&!function(){if(U())return!0;const e=window.vslyHydrationSize||1,t=!!window.elementIdToRuntimeInitialized&&Object.values(window.elementIdToRuntimeInitialized).length>=e;t&&0===Fe&&(Fe=Date.now());const n=Date.now()-Fe,r=window.vslyHydrationGrace||500;return t&&n>r}())return;const n=Ge(e,t);n&&($.set(e.id,n),e.isApplied=!0)}catch(t){!function(){M()&&console.warn("loomi-editor",...[].slice.call(arguments))}("failed to resolve command from mutation request with exception.",t,e)}}),Ke()}function Ge(e,t){if("replace"===e.kind)return function(e,t,n,r,o){let i=o||e,s=!1;const c=n.outerHTML;return{id:e,isApplied:()=>s,kind:"replace",do:()=>{s||(k&&n.setAttribute(R,i),n.outerHTML!==r&&(n=O(n,r),ae(n),k&&n.setAttribute(R,i),s=!0))},undo:()=>{s&&n.outerHTML!==c&&(n=O(n,c),s=!1)},redoIfNeeded:()=>!1,setDebugId:e=>i=e}}(e.id,0,t,e.value,e.id);if("appendBefore"===e.kind||"appendAfter"===e.kind)return function(e,t,n,r,o){let i=o||e,s=!1,c=document.querySelector(t),a=document.createElement("div");const u=()=>{s||("appendBefore"===r&&(c=document.querySelector(t),_(()=>c.parentNode.insertBefore(a,c)),ae(c),a=O(a,n),k&&a.setAttribute(R,i),s=!0),"appendAfter"===r&&(s||(c=document.querySelector(t),c.nextSibling?(_(()=>c.parentNode.insertBefore(a,c.nextSibling)),ae(c)):(_(()=>c.parentNode.appendChild(a)),ae(c)),a=O(a,n),k&&a.setAttribute(R,i),s=!0)),s=!0)},l=()=>{s&&(a.remove(),s=!1)};return{id:e,isApplied:()=>s,kind:r,do:u,undo:l,redoIfNeeded:()=>{const e=ue(u,l,t,c);return e.element&&(c=e.element),e.isDetached},setDebugId:e=>i=e}}(e.id,e.selector,e.value,e.kind,e.id);if("appendCss"===e.kind)return function(e,t,n,r){let o=r||e,i=!1,s=document.querySelector(t);const c=document.createElement("style"),a=()=>{i||(c.innerHTML=n,k&&c.setAttribute(R,o),document.head.appendChild(c),i=!0)},u=()=>{i&&(c.remove(),i=!1)};return{id:e,kind:"appendCss",isApplied:()=>i,do:a,undo:u,redoIfNeeded:()=>{const e=ue(a,u,t,s);return e.element&&(s=e.element),e.isDetached},setDebugId:e=>o=e}}(e.id,e.selector,e.value,e.id);if("appendJs"===e.kind)return function(e,t,n,r,o){let i=r||e,s=!1,c=document.querySelector(t),a=null;const u=()=>{s||(a||(a=document.createElement("script")),a.setAttribute("type","application/javascript"),a.innerHTML=function(e,t){return e&&t?`(async () => {\n const _USE_CASE = "${t.experienceId}";
30\n const _USE_CASE_VARIANT = "${t.variantId}";\n const _USE_CASE_VERSION = ${_(()=>t.version||0,0)};\n const _USE_CASE_AUDIENCES = "${_(()=>window.loomi_ctx.audiences.join("|"),"")}";\n const _USE_CASE_GA = "${_(()=>t.gaExperienceName.replace(/"/g,'\\"'),t.gaExperienceName)}";\n const _USE_CASE_GA_VARIANT = "${_(()=>t.gaVariantName.replace(/"/g,'\\"'),t.gaVariantName)}";\n const _USE_CASE_CTX = {_USE_CASE,_USE_CASE_VARIANT,_USE_CASE_VERSION,_USE_CASE_AUDIENCES,_USE_CASE_GA,_USE_CASE_GA_VARIANT};\n const __currentScriptElement = document.currentScript;\n ${e}\n if (typeof vslyCleanup !== 'undefined') { \n if (__currentScriptElement) {\n __currentScriptElement.__vslyCleanup = vslyCleanup;\n }\n }\n })()`:!t&&e?`\n(async () => {\n const __currentScriptElement = document.currentScript;\n ${e}\n if (typeof vslyCleanup !== 'undefined') { \n if (__currentScriptElement) {\n __currentScriptElement.__vslyCleanup = vslyCleanup;\n }\n }\n})();\n`:e}(n,o),k&&(a.id=i),document.body.appendChild(a),s=!0)},l=()=>{if(!s)return;const e=(()=>{try{const e=a.__vslyCleanup;if(e)return e(),!0}catch(e){k&&console.error("vslyCleanup error:",e)}return!1})();a&&a.remove(),e&&(a=null),s=!1};return{id:e,kind:"appendJs",isApplied:()=>s,do:u,undo:l,redoIfNeeded:()=>{const e=ue(u,l,t,c);return e.element&&(c=e.element),e.isDetached},setDebugId:e=>i=e}}(e.id,e.selector,e.value,e.id,e.options);if("appendFont"===e.kind){const t=JSON.parse(e.value);if(t&&t.family&&t.weights)return function(e,t,n){n=n||e;let r=!1;const o=document.createElement("link"),i=(c=t.weights,(s=t.family).toLowerCase().includes("jetbrains")&&(s="JetBrains Mono"),`https://fonts.googleapis.com/css2?family=${encodeURIComponent(s)}:wght@${_(()=>c.join(";"))}&display=block`);var s,c;return o.setAttribute("href",i),o.setAttribute("rel","stylesheet"),{id:e,isApplied:()=>r,kind:"appendFont",do:()=>{r||(k&&o.setAttribute(R,n),document.head.appendChild(o),r=!0)},undo:()=>{r&&(o.remove(),r=!1)},redoIfNeeded:()=>!1}}(e.id,t,e.id)}else{if("compound"===e.kind){const n=e.value.map(n=>(n.options=e.options,Ge(n,t))).filter(e=>e);return function(e,t,n){let r=!1;return{id:e,isApplied:()=>r,kind:"compound",do:()=>{r||(t.filter(e=>!e.isApplied()).forEach(e=>{e.setDebugId&&e.setDebugId(n),e.do()}),r=!0)},undo:()=>{r&&(t.filter(e=>e.isApplied()).reverse().forEach(e=>e.undo()),r=!1)},redoIfNeeded:()=>t.map(e=>e.redoIfNeeded()).filter(e=>e).length>0}}(e.id,n,e.id)}if("widget"===e.kind){const t=_(()=>e.block.value),n=_(()=>t.env.sectionId.substring(1),e.id);return function(e,t,n,r,o,i,s){void 0===s&&(s="");const c=i||t;let a=!1;const u=`vslyp-${t}`;let l=null,d=null,m=[];const f=()=>{a||(we(r,s),"replace"===e?w():y(),fe()&&ve||h(),a=!0)},h=()=>{const e=r+s;v(()=>_(()=>!!window[he][pe][e])&&_(()=>!!window.preact),50,500).then(()=>{ae(l),_(()=>window[he][pe][e](`#${t}`))})},p=()=>{if(!a)return;d&&d.remove();const t=document.getElementById(u);if(t&&t.remove(),"replace"===e&&l&&l.children&&l.children.length>0){let e=0;for(const t of l.children)t.style.display=m[e],e+=1}a=!1},w=()=>
30{if(l=le(n),l){if(m=[],l.children&&l.children.length>0)for(const e of l.children){const t=e;t&&!t.getAttribute("preact")&&(m.push(t.style.display),t.style.display="none")}g(),l.appendChild(d),fe()&&ve&&ve.observe(d)}else F("vsly",`failed to find element with selector: ${n} when trying to replace with widget`)},y=()=>{l=le(n),l?(g(),l.insertAdjacentElement("appendBefore"===e?"beforebegin":"afterend",d),fe()&&ve&&ve.observe(d)):F("vsly",`failed to find element with selector: ${n} when trying to append widget`)},g=()=>{if(d=document.getElementById(t),!d){d=document.createElement("section"),d.style.all="unset",d.style.width="100%",d.setAttribute("preact","1"),k&&d.setAttribute(R,c),d.setAttribute("lmw",r),d.setAttribute(D,s),d.id=t;const e=document.createElement("script");e.id=u,e.setAttribute("type","text/props"),e.innerHTML=JSON.stringify(o),_(()=>document.body.appendChild(e))}};return{id:t,isApplied:()=>a,kind:"widget",do:f,undo:p,redoIfNeeded:()=>{const e=ue(f,p,n,l);return e.element&&(l=e.element),e.isDetached}}}(t.htmlKind,n,e.selector,t.widgetId,t.env,n,t.version)}if("moveElem"===e.kind){const t=_(()=>e.block.value);return function(e,t,n,r){let o=!1,i={display:""},s=null,c=null;const a=()=>{o||v(()=>(s=document.querySelector(t),c=document.querySelector(n),!!s&&!!c),50,500).then(()=>{s=document.querySelector(t),c=document.querySelector(n),u()})},u=()=>{c&&s&&(i={display:c.style.display,parentNode:s.parentElement,nextSib:s.nextElementSibling,prevSib:s.previousElementSibling},"appendBefore"===r?c.insertAdjacentElement("beforebegin",s):"appendAfter"===r?c.insertAdjacentElement("afterend",s):"replace"===r&&(c.style.display="none!important",c.insertAdjacentElement("afterend",s)),s.setAttribute(ye,t),o=!0)};return{id:e,isApplied:()=>o,kind:"moveElem",do:a,undo:()=>{o&&c&&s&&(i&&i.prevSib?i.prevSib.insertAdjacentElement("afterend",s):i&&i.nextSib?i.nextSib.insertAdjacentElement("beforebegin",s):i&&i.parentNode&&i.parentNode.appendChild(s),"replace"===r&&(c.style.display=i.display),s.removeAttribute(ye),o=!1)},redoIfNeeded:()=>!(_(()=>s.hasAttribute(ye))&&document.body.contains(s)||(o=!1,a(),0))}}(e.id,e.selector,t.destSelector,_(()=>t.htmlKind))}if("automation"===e.kind)return function(e){let t=!1;return{id:`automation-${(new Date).getDate()}`,kind:"automation",isApplied:()=>t,do:()=>{if(!t){t=!0;try{e.sort((e,t)=>e.order-t.order).map(e=>{switch(e.kind){case"click":return()=>function(e){try{return Promise.resolve(ge(function(){return q("fake-click","about to click on:",e.selector),Promise.resolve(_e(e.selector)).then(function(e){return e&&e.click(),Promise.resolve()})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}}(e);case"type":return()=>function(e){try{return Promise.resolve(ge(function(){return q("fake-click","about to type on:",e.selector,"with text: ",e.data),Promise.resolve(_e(e.selector)).then(function(t){const n=_(()=>Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set);_(()=>n.call(t,e.data||""));const r=new Event("input",{bubbles:!0});return t.dispatchEvent(r),Promise.resolve()})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}}(e);case"scroll":return()=>function(e){try{return Promise.resolve(ge(function(){return q("fake-click","about to scroll to:",e.selector),Promise.resolve(_e(e.selector)).then(function(e){return e.scrollIntoView(!0),Promise.resolve()})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}}(e);case"wait":return()=>function(e){try{try{return q("fake-click",`about to wait for: ${e.data}ms`),Promise.resolve(new Promise(t=>{setTimeout(()=>t(),_(()=>e.data)||1e3)}))}catch(e){return Promise.reject(e)}}catch(e){return Promise.reject(e)}}(e);default:return()=>Promise.resolve()}}).reduce((e,t)=>e.then(e=>t()),Promise.resolve()).then()}catch(e){F("failed to run automation with exception:",e)}}},undo:()=>{},redoIfNeeded:()=>!1}}(_(()=>e.block.value).steps);if("visualEdit"===e.kind){const t=_(()=>e.block.value);return function(e,t){let n=!1,r={};const o=function(e,t,n){void 0===n&&(n=!0);const o=t.subChanges.map(n=>{switch(n.kind){case"text":return((e,t,n)=>{if(!e)return()=>{};const r=t.extra;if(Se(e,t,n)){const n=e.childNodes[r].textContent;return e.childNodes[r].textContent=t.value,()=>e.childNodes[r].textContent=n}{const n=e.textContent;return e.textContent=t.value,()=>e.textContent=n}})(e,n,t.version);case"style":return((e,t)=>{if(!e)return()=>{};const n=_(()=>e.style[t.key],null);return e.style.setProperty(t.key,t.value,"important"),()=>e.style.setProperty(t.key,n)})(e,n);case"image":return((e,t)=>{if(!e||!e.removeAttribute||!e.getAttribute)return()=>{};const n=e.getAttribute("srcset")||"";e.removeAttribute("srcset");const r=_(()=>e.src,void 0);e.src=t.value;const o=e.parentElement,i=o&&"PICTURE"===o.nodeName,s=[];
30return i&&o.querySelectorAll("source").forEach(e=>{s.push(e.getAttribute("srcset")||""),e.removeAttribute("srcset")}),()=>{e.setAttribute("srcset",n),e.src=r,i&&o.querySelectorAll("source").forEach((e,t)=>{e.setAttribute("srcset",s[t])})}})(e,n);case"video":return((e,t)=>{if(!e||!e.setAttribute)return()=>{};const n=e.innerHTML;e.innerHTML="";const r=e.getAttribute("src")||"";return e.setAttribute("src",t.value),()=>{e.innerHTML=n,e.setAttribute("src",r)}})(e,n);case"attr":return((e,t)=>{if(!e||!e.setAttribute||!e.getAttribute)return()=>{};const n=e.getAttribute(t.key);return e.setAttribute(t.key,t.value),()=>n?e.setAttribute(t.key,n):e.removeAttribute(t.key)})(e,n)}});n&&(r[t.selector]={ve:t,elem:e,reverts:o})};return{id:e,kind:"visualEdit",isApplied:()=>n,do:()=>{n||(n=!0,t.forEach(e=>{v(()=>!!document.querySelector(e.selector),250,300).then(()=>{const t=document.querySelector(e.selector);o(t,e)})}))},undo:()=>{n&&(n=!1,Object.values(r).forEach(e=>e.reverts.forEach(e=>e())),r={})},redoIfNeeded:()=>{if(!n)return!1;let e=!1;return Object.values(r).forEach(t=>{e=document.body.contains(t.elem)?function(e,t){return e.ve.subChanges.forEac
30h((n,r)=>{n.value!==((e,t,n)=>{switch(t.kind){case"text":return((e,t,n)=>{const r=t.extra;return Se(e,t,n)?e.childNodes[r].textContent:e.textContent})(e,t,n);case"attr":return((e,t)=>e.getAttribute(t.key))(e,t);case"style":return((e,t)=>_(()=>e.style[t.key],null))(e,t);case"image":case"video":return(e=>e.src)(e)}})(e.elem,n,e.ve.version)&&(_(()=>e.reverts[r]()),o(e.elem,{selector:e.ve.selector,subChanges:[n]},!1),t=!0)}),t}(t,e):function(e){e.reverts.forEach(e=>e());const t=document.querySelector(e.ve.selector);return t&&o(t,e.ve),!0}(t)}),e}}}(e.id,t.changes)}if("pageRedirect"===e.kind){const t=_(()=>e.block.value);if(t)return n=t,r=e.options,{id:e.id,kind:"pageRedirect",isApplied:()=>!1,do:()=>{ee(ne(r),n.destUrl,n.redirectAfter,!0===n.retainQueryParams,n.stickinessMode)},undo:()=>{},redoIfNeeded:()=>!1,setDebugId:e=>""}}else if("themeTest"===e.kind){const t=_(()=>e.block.value);if(t)return function(e,t,n){const r=()=>!1;return{id:e,kind:"themeTest",isApplied:r,do:()=>Ee(ne(n),t.targetThemeId),undo:r,redoIfNeeded:r,setDebugId:r}}(e.id,t,e.options)}}var n,r}let ze=!1;function Ke(){ze||(ze=!0,requestAnimationFrame(We))}function We(){$.forEach(e=>{try{e.isApplied()?e.redoIfNeeded():e.do()}catch(t){F("failed to apply mutation command with exception:",t,e)}}),ze=!1}function Qe(e){try{const n=$.get(e),r=n&&n.undo();$.delete(e);const o=L.findIndex(t=>t.id==e);return(t=_(()=>L[o].selector))&&_(()=>J[t])&&delete J[t],L.splice(o,1),Ke(),r}catch(e){return}var t}function Ye(e){return"div"===e.selector&&(e.selector="body div"),L.push(e),He(),{revert:()=>Qe(e.id),mutationId:e.id}}function Ze(){const e=_(()=>window.loomi_ctx.cart);if(e)return e;const t=localStorage.getItem("loomi-cart");if(t)try{return JSON.parse(t)}catch(e){}}var Xe;!function(e){e.CART_CHANGE="CART_CHANGE",e.LOYALTY_CHANGE="LOYALTY_CHANGE"}(Xe||(Xe={}));const et=u((e,t)=>{const n=function(e,t){const n=new Event(Q);return n.key=e,n.value=t,n}(e,t);document.dispatchEvent(n),console.debug("Targeting has changed:",n)},80),tt=()=>window.loomi_ctx.session.id;function nt(e){return _(()=>e.items.map(e=>_(()=>e.selling_plan_allocation.selling_plan.name.toLowerCase())).filter(e=>!!e),[])}function rt(){return JSON.parse(localStorage.getItem("loomi-cart-history")||"[]")}function ot(){const e=_(()=>window.loomi_ctx.sessionProducts);if(e)return e;const t=localStorage.getItem("loomi_session_products"),n=t?JSON.parse(t):[];return _(()=>n.filter(e=>""!=e.handle).reverse().slice(0,20))}function it(e){return JSON.parse(localStorage.getItem(e)||"[]")}function st(e,t,n,r){e=e||[],t=t||[];const o=_(()=>t.filter(t=>!e.find(n(t))))||[],i=[...e,...o].slice(0,25);return i.length>0&&localStorage.setItem(r,JSON.stringify(i)),i}function ct(){return JSON.parse(localStorage.getItem("loomi_purchased_products")||"[]")}const at="vsly_params_history",ut="vsly_visited_pages",lt=function(e){try{const t=e.matches?ht.MOBILE:ht.DESKTOP,n=function(){if(dt!=t){q("device-listener",`device changed to ${t} from ${dt}`),window.loomi_ctx.deviceOverride=t===ht.MOBILE?"m":"d",dt=t;const e=_(()=>window.visually.reload),n=function(){if(e)return Promise.resolve(e()).then(function(){});F("device-listener","can't find reload function")}();if(n&&n.then)return n.then(function(){})}}();return Promise.resolve(n&&n.then?n.then(function(){}):void 0)}catch(e){return Promise.reject(e)}};let dt;function mt(){a()?function(){try{return Promise.resolve(v(()=>c,1e3,10)).then(function(){return ft(),Promise.resolve()})}catch(e){return Promise.reject(e)}}().catch(console.error):ft()}function ft(){let e=_(()=>window.vslyDesktopBreakpoint)||960;e<=0&&(e=960);const t=window.matchMedia(`(max-width: ${e}px)`);t.removeEventListener("change",lt),t.addEventListener("change",lt)}var ht;!function(e){e.MOBILE="MOBILE",e.DESKTOP="DESKTOP"}(ht||(ht={}));const pt=()=>edgetag("getUserId");function vt(){const e="vsly_edgetag";return P(()=>(pt()&&localStorage.setItem(e,pt()),!0)),_(pt)||localStorage.getItem(e)}const wt="lmi_type",yt="lmi_from",gt="lmi_class",_t="lmi_utm_data",St={utm_source:"source",utm_medium:"medium",utm_campaign:"campaign",utm_term:"term",utm_content:"content"},Et=function(e,t){void 0===t&&(t=3);let n=e;for(let e=0;e<t;e++)try{const e=decodeURIComponent(n);if(e===n)break;n=e}catch{break}return n},Pt=function(e){void 0===e&&(e=window.location.search);const t={utm:{},lmi_params:{}};return _(()=>
30new URLSearchParams(e)).forEach((e,n)=>{if(e){const r=St[n],o=Et(e);r?t.utm[r]=o:function(e){return _(()=>[gt,yt,wt].includes(e))}(n)&&(t.lmi_params[n]=o)}}),t};function At(){const e=function(e){let t=[];const n=localStorage.getItem(_t);return null!=n&&(t=[...JSON.parse(n)].slice(0,20)),e&&(e.ts=f(),t=[e,...t]),t}(function(e){if(function(e){return!e||"{}"===JSON.stringify(e)}(e))return null;const t={};return e.campaign&&(t.campaign=e.campaign),e.medium&&(t.medium=e.medium),e.source&&(t.source=e.source),e.term&&(t.term=e.term),e.content&&(t.content=e.content),t}(_(()=>Pt().utm)));return localStorage.setItem(_t,JSON.stringify(e)),e}function It(){const e=_(()=>At(),[]);if(!Array.isArray(e)||0===e.length)return"";const t=e.filter(e=>e.campaign);return 0===t.length?"":_(()=>t.reduce((e,t)=>t.ts>e.ts?t:e,t[0]).campaign,"")||""}const bt=function(e){return Promise.resolve(xt()).then(function(t){return new Promise((n,r)=>{const o=t.transaction([kt],"readonly").objectStore(kt).get(e);o.onerror=e=>{r("IDB e:r"+e.target.error)},o.onsuccess=e=>{n(e.target.result)}})})},xt=function(){try{const e=function(){if(!Tt)return Promise.resolve(new Promise((e,t)=>{const n=indexedDB.open(Ct,1);n.onerror=e=>{t("IDB e:o"+e.target.error)},n.onsuccess=t=>{Tt=t.target.result,e(Tt)},n.onupgradeneeded=e=>{e.target.result.createObjectStore(kt,{keyPath:"id"}).createIndex("id","id",{unique:!0})}})).then(function(){})}();return Promise.resolve(e&&e.then?e.then(function(){return Tt}):Tt)}catch(e){return Promise.reject(e)}},Ct="VISUALLY_IO",kt=Ct;let Tt=null;function Nt(){const e={},t=window.loomi_ctx||{};t.productId&&(e.productId=t.productId);const n=_(()=>{const e=new URL(location.href).searchParams,t="variant";return e.has(t)&&function(e){const t=Number(e),n=isNaN(t)?Number(`${e}`.replace(/[^\d.]+/g,""))||void 0:t;if(void 0!==n&&0!==n)return`${n}`}(e.get(t))})||t.variantId;return n&&(e.variantId=n),e}function Ot(){return _(()=>Ze().items.map(e=>({variantId:e.variant_id||0,quantity:e.quantity||0,productId:e.product_id||0,price:e.price||0})))||[]}const jt=function(e){return void 0===e&&(e=Ze()),_(()=>(("spa"==window.vslyIntegrationType?_(()=>e.attributes.map(e=>e.key)):_(()=>Object.keys(e.attributes)))||[]).filter(e=>!e.startsWith("vsly")&&e.length<20).slice(0,50))||[]};function Lt(){const e=new URL(window.location.href);return e.protocol+"//"+e.hostname+e.pathname}const $t=function(e,t){try{let n;const r=this.cart;if(!r)return Promise.resolve(0);const o=function(){try{var o=r.currency===e?(n=1,r.total_price/100):function(){if(t)return Promise.resolve(v(()=>!!window.loomi_ctx.Currency,100,10)).then(function(){const t=(window.loomi_ctx.Currency.convert(r.total_price,r.currency,e)||0)/100;return n=1,t})}()}catch(e){return}return o&&o.then?o.then(void 0,function(){}):o}();return Promise.resolve(o&&o.then?o.then(function(e){return n?e:0}):n?o:0)}catch(e){return Promise.reject(e)}};function Rt(){const e=_(()=>this.cart.items);if(e&&e.length>0){const t=tt(),n=localStorage.getItem("vsly-last-atc-sid");if(!n)return!1;if(n!==t)return!0;const r=e.map(e=>`${e.variant_id}`);return!!_(()=>rt().find(e=>!!e.sid&&r.includes(`${e.variant_id}`)&&`${e.sid}`!=t))}return!1}function Dt(e){return jt(this.cart).includes(e)}function Ut(e,t){function n(e){return e.toLowerCase()}const r={"==":t=>n(t)==n(e),"!=":t=>n(t)!=n(e),contains:t=>n(t).includes(n(e)),matches:t=>new RegExp(e).test(t)};return!!this.CartSubs().find(e=>r[t](e))}function Mt(){return nt(this.cart)}function qt(e){const t=this.cart;return!!_(()=>t.items.find(t=>t.handle===e))}function Ft(e,t){return"contains"!==t?qt.call(this,e):this.cart?.items?.some(t=>t.handle?.includes(e))??!1}function Bt(e){const t=this.cart;return!!_(()=>t.items.find(t=>!!t.tags&&t.tags.includes(e)))}function Jt(e,t){return"contains"!==t?Bt.call(this,e):this.cart?.items?.some(t=>t.tags?.some(t=>t.includes(e)))??!1}function Vt(e){const t=this.cart;if(t.items.length<=0)return!1;const n=_(()=>t.items.filter(t=>!!t.tags&&t.tags.includes(e)));return _(()=>n.length===t.items.length,!1)}function Ht(e,t){const n=this.cart?.items;return!!n?.length&&n.every(n=>(n.tags||[]).some(n=>"contains"===t?n.includes(e):n===e))}function Gt(e){const t=this.cart;return!!_(()=>t.items.find(t=>!!t.collections&&t.collections.includes(e)))}function zt(){return!0===_(()=>window.loomi_ctx.loyalty.isMember,!1)}function Kt(){return _(()=>
30window.loomi_ctx.loyalty.pointsBalance,0)}function Wt(){return _(()=>window.loomi_ctx.loyalty.earnedPoints,0)}const Qt="__eventn_id";function Yt(){const{id:e,firstSeen:t}=function(e){const t=function(e){try{const t=S(e),{firstSeen:n,id:r}=en(t);if(t)return{id:r,firstSeen:n||nn()}}catch(e){}}(e),n=function(e){const t=window.localStorage.getItem(e),{id:n,firstSeen:r}=en(t);if(t)return{id:n,firstSeen:r||nn()}}(e);if(!t&&!n){const{newId:t,newEpoch:n}=function(){const e=Math.random().toString(36).substring(2,12),t=nn();return{newId:e,newEpoch:t,value:tn(e,t)}}();return Zt(t,n,e),{id:t,firstSeen:n}}if(!n&&t)return Zt(t.id,t.firstSeen,e),t;if(!t&&n)return Zt(n.id,n.firstSeen,e),n;const r=Math.min(t.firstSeen,n.firstSeen);let o=t.firstSeen<=n.firstSeen?t.id:n.id;return Xt(t,n)&&(o=t.id<=n.id?t.id:n.id),n.id==t.id&&n.firstSeen==t.firstSeen||Zt(o,r,e),{id:o,firstSeen:r}}(Qt);return{id:e,firstSession:rn(t),firstSeen:t}}function Zt(e,t,n){void 0===n&&(n=Qt);const r=tn(e,t);_(()=>localStorage.setItem(n,r)),((e,t,n,r)=>{_(()=>window.loomi_ctx.cc)&&!b()||(document.cookie=encodeURIComponent(e)+"="+t+"; path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT"+(n?"; domain="+n:"")+(r?"; secure":""))})(n,r,document.location.hostname.replace("www.","").replace("checkout.",""),"http:"!==document.location.protocol)}const Xt=(e,t)=>e.firstSeen===t.firstSeen&&e.id!==t.id;function en(e){return{firstSeen:_(()=>parseInt(e.split(".")[1]),null),id:_(()=>e.split(".")[0])}}function tn(e,t){return`${e}.${t}`}function nn(){return Math.trunc((new Date).getTime()/1e3)}const rn=e=>(new Date).getTime()/1e3-e<=7200,on="vsly_vid",sn="lmi_debug";function cn(e){return _(()=>new URL(window.location.href).searchParams.get(e)||void 0)}const an=["Roboto","Open Sans","Fredoka","Fredoka","Smooch Sans","Rubik","Lato","Poppins","Oswald","League Spartan","Noto Sans","Raleway","Merriweather","Playfair Display","Inter","JetBrains Mono","Jetbrains Mono"];function un(e){try{(function(e){const t=e.flatMap(e=>_(()=>e.code)).filter(e=>!!e).filter(e=>"widget"===e.kind).map(e=>ln(e.value.env)),n=new Map;return function(e,t){e.forEach(e=>{!function(e,t){const n=new Map;e.forEach(e=>{let[t,r]=e;const o=".font.";if(t.includes(o)){const e=t.split(o)[0]+o;n.has(e)||n.set(e,{families:new Set,weights:new Set});const i=n.get(e);if(t.endsWith(".fontFamily"))i.families.add(r);else if(t.endsWith(".fontWeight")){const e=parseInt(r,10)||500;i.weights.add(e)}}}),function(e,t){e.forEach(e=>{if(e.families.size>0){const n=e.weights.size>0?e.weights:new Set([500]);e.families.forEach(e=>{dn(t,e,n)})}})}(n,t)}(Object.entries(e),t),function(e,t){const n=function(e){const t=".text.isRichText",n=new Set;return e.forEach(e=>{let[r,o]=e;if(r.endsWith(t)&&!0===o){const e=`${r.split(t)[0]}.text.value`;n.add(e)}}),n}(e);0!==n.size&&e.filter(e=>{let[t]=e;return n.has(t)}).forEach(e=>{let[n,r]=e;return function(e,t){var n;if(e)try{!function(e,t){e.querySelectorAll("[style]").forEach(e=>{const n=e.style;if(n.fontFamily){const e=n.fontFamily,r=parseInt(n.fontWeight,10)||500;dn(t,e,new Set([r]))}})}((n=decodeURIComponent(e),(new DOMParser).parseFromString(n,"text/html")),t)}catch(e){console.error("Failed to parse rich text HTML",e)}}(r,t)})}(Object.entries(e),t)})}(t,n),function(e){return Array.from(e.entries()).map(e=>{let[t,n]=e;return{family:t,weights:Array.from(n).sort()}})}(n)})(e).forEach(e=>{let{family:t,weights:n}=e;return function(e,t){return Ye(N("appendFont","div",JSON.stringify({family:e,weights:t})))}(t,n)})}catch(e){F("failed to install custom fonts",e)}}function ln(e){const t={};for(const n in e)if("object"!=typeof e[n]||Array.isArray(e[n]))t[n]=e[n];else{const r=ln(e[n]);for(const e in r)t[`${n}.${e}`]=r[e]}return t}function dn(e,t,n){if(!t)return;const r=t.replaceAll("'","").replaceAll('"',"");if(!function(e){return an.includes(e)}(r))return;e.has(r)||e.set(r,new Set);const o=e.get(r);
30o.add(400),n.forEach(e=>{o.add(e)})}const mn=function(e,t,n,r){void 0===n&&(n=!0),void 0===r&&(r=void 0);try{const o=_(()=>window.loomi_api.addToCart),i=function(){if(o)return Promise.resolve(window.loomi_api.addToCart(e,t,n,r)).then(function(){})}();return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},fn=function(e){try{let n;function t(t){return n?t:e.map(e=>{const t=String(e.id),n=pn.get(gn(e.id))||r[t];return n?{...e,variants:Array.isArray(e.variants)?e.variants.map(e=>{const t=_n(e,n);return t?{...e,fixed_price_currency:t.price.currencyCode,price:parseFloat(t.price.amount),compare_at_price:t.compareAtPrice?parseFloat(t.compareAtPrice.amount):e.compare_at_price}:e}):e.variants}:e})}if(!e||0===e.length)return Promise.resolve(e);let r={};const{productIdsToFetch:o}=Sn(e),i=function(){if(o.length>0)return function(t,n){try{var o=Promise.resolve(hn(e)).then(function(e){r=e,Object.entries(r).forEach(e=>{let[t,n]=e;return pn.set(gn(t),n)})})}catch(e){return n(e)}return o&&o.then?o.then(void 0,n):o}(0,function(t){return console.error("vsly",t),n=1,e})}();return Promise.resolve(i&&i.then?i.then(t):t(i))}catch(s){return Promise.reject(s)}},hn=function(e){try{return Promise.resolve(fetch(`https://${wn()}/api/2025-10/graphql.json`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:vn(e)})})).then(function(e){if(!e.ok)throw new Error(`Shopify API error: ${e.status}`);return Promise.resolve(e.json()).then(function(e){if(e.errors)throw new Error(`GraphQL errors: ${JSON.stringify(e.errors)}`);const t={};for(const n in e.data){const r=e.data[n];if(!r)continue;const o=yn(r.id);t[o]={variants:{}}
30,r.variants.edges.forEach(e=>{const n=yn(e.node.id);t[o].variants[n]={price:e.node.price,compareAtPrice:e.node.compareAtPrice}})}return t})})}catch(e){return Promise.reject(e)}},pn=new class extends H{constructor(e,t){super(new z(e),t)}}("p",18e5);function vn(e){const{productIdsToFetch:t,maxVariantsPerProduct:n}=Sn(e),r=se();return`\n query GetProductPrices ${r?`@inContext(country: ${r})`:""} {\n ${t.map(e=>`\n product_${e}: product(id: "gid://shopify/Product/${e}") {\n id\n variants(first: ${n}) {\n edges {\n node {\n id\n price {\n amount\n currencyCode\n }\n compareAtPrice {\n amount\n currencyCode\n }\n }\n }\n }\n }\n `).join("\n")}\n }\n `}const wn=()=>window.loomi_ctx.storeAlias.toLowerCase().replaceAll("_","-")+".myshopify.com";function yn(e){const t=e.match(/\/(\d+)$/);return t?t[1]:e}const gn=e=>String(e)+se(),_n=(e,t)=>{let n=String(e.variant_id);const r=Object.keys(t.variants);return 1==r.length&&(n=r[0]),t.variants[n]},Sn=e=>{let t=1,n=!0;return{productIdsToFetch:e.map(e=>{if(!Array.isArray(e.variants))return{id:String(e.id),needsFetch:!1};const r=new Set(e.variants.map(e=>e.price)).size>1;r&&(n=!1),e.variants.length>t&&(t=e.variants.length);const o=((e,t,n)=>{if(!e)return!0;if(!n)return!1;const r=e.variants||{};return t.some(e=>void 0===r[e])})(pn.get(gn(e.id)),e.variants.map(e=>String(e.variant_id)),r);return{id:String(e.id),needsFetch:o}}).filter(e=>e.needsFetch).map(e=>e.id),maxVariantsPerProduct:n?1:t}},En=new K("recs_cache",300001),Pn=function(e,t){try{const n=Promise.resolve([]);return Promise.resolve(function(r,o){try{var i=function(){if(!e)return n;let r=_(()=>e.recommendationOptions);if(!r)return n;var o;!function(e){const{productId:t,variantId:n}=Nt();(t||n)&&(e.productId={productId:t,variantId:n})}(r),r.cartItems=(o=Ot(),_(()=>o.filter(e=>!!e.productId).map(e=>({productId:`${e.productId}`,variantId:`${e.variantId}`,quantity:e.quantity||1})))),r.currency=_(()=>Ze().currency||"USD","USD"),r.cart_total=_(()=>Ze().total_price,0),_(()=>+Date.now()-window.loomi_ctx.last_vid_atc.ts<5e3)&&(r.last_vid_atc=window.loomi_ctx.last_vid_atc),r.respSize=_(()=>window.visually.recsPerVariant[t.variantId]),["RECENTLY_VIEWED","VIEWED_WITH_RECENTLY_VIEWED"].find(e=>An(r,e))&&(r.recentlyViewed=ot().filter(e=>!!e.productId).map(e=>({productId:`${e.productId}`,variantId:`${e.variantId||""}`,...e.ts?{ts:e.ts}:{}})));const i=ct();return i.length>0&&(r.pastPurchases=i),(An(r,"CART_ITEMS")||function(e){return _(()=>!!e.layeredRuling.find(e=>"latest_added"==e.ruleCond.itemSelection))}(r))&&(r.cartHistory=kn()),r.userId=_(()=>window.loomi_ctx.userId,""),t&&(r.widgetContext=t),_(()=>!!window.loomi_ctx.storeAlias)&&(r.storeAlias=window.loomi_ctx.storeAlias),r.locale=_(()=>window.Shopify.locale)||_(()=>window.visually.locale),E()&&(r.clientId=E()),r.country=se(),Promise.resolve(function(e,t){const n=_(()=>window.loomi_api.updateRecsOpts),r=_(()=>n.get(function(e){return e.widgetId+e.experienceId+e.variantId+e.sectionId}(e))(t),t);return _(()=>n.get(window.loomi_ctx.storeAlias)(r),r)}(t,r)).then(function(e){return r=e,Promise.resolve(Cn(r))})}()}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){return F("loomi-widget,recProducts failed:",e),n}))}catch(e){return Promise.reject(e)}};function An(e,t){return e.type===t||_(()=>e.strategyPerSlot.find(e=>e.strategy===t))||_(()=>!!Object.values(e.conditions).find(e=>e.qbProps.envKey===t))||_(()=>!!e.layeredRuling.find(e=>e.strategy===t||!!_(()=>e.strategyPerSlot.slots.find(e=>e.strategy===t))))}function In(e){const t=function(){const e=window.innerWidth;return e<=360?200:e<=480?360:e<=640?480:e<=768?640:e<=960?768:1024}();e.products.forEach(e=>{const n=new URL(e.image.src);n.searchParams.set("width",`${Math.min(t,e.image.width||1280)}`),e.image.src=n.href})}function bn(){return`https://${A(window.loomi_ctx.env)}/api/recommendations/web/public/v2/recommend`}const xn=new Map,Cn=function(e){try{function t(){return _(()=>o.products)}const n=g(e),r=W(n);let o=En.get(r);const i=function(){if(!o){let e=!0;return me("kill-locale-currency")&&(e=!1),Promise.resolve(((e,t,n)=>{if(xn.has(e))return xn.get(e);const r=window.vslyNativeFetch||window.fetch,o=function(){try{return Promise.resolve(function(e,o){try{var i=function(){function e(){return Promise.resolve(o.json()).then(function(e){const t=function(){if(e.fetchPrices&&n)return Promise.resolve(fn(e.products)).then(function(t){e.products=t})}();return t&&t.then?t.then(function(){return e}):e})}let o;const i=t.length>1e4&&!me("disable-recs-post")?Promise.resolve(r(bn(),{method:"POST",headers:{"Content-Type":"text/plain"},body:t})).then(function(e){o=e}):Promise.resolve(r(`${bn()}?q=${t}`)).then(function(e){o=e});return i&&i.then?i.then(e):e()}()}catch(e){return o(!0,e)}return i&&i.then?i.then(o.bind(null,!1),o.bind(null,!0)):o(!1,i)}(0,function(t,n){if(xn.delete(e),t)throw n;return n}))}catch(e){return Promise.reject(e)}}();return xn.set(e,o),o})(r,n,e)).then(function(e){o=e,_(()=>
30[In,window.loomi_api.onRecsResp].forEach(e=>e&&e(o))),En.set(r,o)})}}();return Promise.resolve(i&&i.then?i.then(t):t())}catch(s){return Promise.reject(s)}},kn=()=>rt().map(e=>{const t={...e};return delete t.sid,t});function Tn(e){return`vsly_pi_${e}`}function Nn(e){return`vsly_hbt_${e}`}function On(e){return`vsly_hbc_${e}`}function jn(e){return Array(e).fill(0).map(()=>Math.floor(10*Math.random())).join("")}function Ln(){try{const e=_(()=>window.vslyAntiFlickerReveal,void 0);e&&e()}catch(e){}}const $n=function(e,t){try{if(y(e)||y(t))return Promise.resolve({products:[]});const n=function(e,t){const n=window.loomi_ctx.storeAlias||"",r=new URLSearchParams({byHandle:g({handles:e}),al:n,slimResp:"1"});return t&&t.length>0&&r.set("metafields",g({fields:t})),`${bn()}?${r.toString()}`}(e,t);return Promise.resolve(fetch(n)).then(function(e){if(!e.ok)throw new Error(`vsly 400 ${e.statusText}`);return e.json()})}catch(e){return Promise.reject(e)}},Rn=function(e){try{try{const t=g(e),n=window.loomi_ctx.storeAlias,r=W(`${n}_${t}_${se()}`),o=Un.get(r);if(o)return Promise.resolve(o);if(Mn.has(r))return Promise.resolve(Mn.get(r));const i=function(){try{return Promise.resolve(function(e,o){try{var i=function(e,o){try{var i=function(){const e=new URL(bn());e.searchParams.set("al",n),e.searchParams.set("productQuery",t);const o=window.vslyNativeFetch||window.fetch;return Promise.resolve(o(e.toString(),{method:"GET",headers:{Accept:"application/json"}})).then(function(e){return e.ok?Promise.resolve(e.json()).then(function(e){return Promise.resolve(function(e){try{if(!e||!e.results||"object"!=typeof e.results)return Promise.resolve({results:{}});const t=e.results,n=function(e){return Object.keys(e).map(t=>{const n=e[t];return n&&n.id?{key:t,product:n}:null}).filter(e=>!!e)}(t);if(0===n.length)return Promise.resolve({...e,results:t});let r=n.map(e=>e.product);return r=function(e){const t={products:e};return In(t),t.products}(r),Promise.resolve(Dn(r)).then(function(o){return r=o,r=function(e){const t=window.loomi_api;if(!t||!t.onRecsResp)return e;try{const n={products:e};return t.onRecsResp(n),n.products}catch(t){return F("onRecsResp hook failed",t),e}}(r),function(e,t,n){t.forEach((t,r)=>{const o=n[r];o&&o.id&&(e[t.key]=o)})}(t,n,r),{...e,results:t}})}catch(e){return Promise.reject(e)}}(e)).then(function(e){return Un.set(r,e),e})}):{results:{}}})}()}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){return F("queryProducts failed:",e),{results:{}}})}catch(e){return o(!0,e)}return i&&i.then?i.then(o.bind(null,!1),o.bind(null,!0)):o(!1,i)}(0,function(e,t){if(Mn.delete(r),e)throw t;return t}))}catch(e){return Promise.reject(e)}}();return Mn.set(r,i),Promise.resolve(i)}catch(e){return F("queryProducts setup failed:",e),Promise.resolve({results:{}})}}catch(e){return Promise.reject(e)}},Dn=function(e){try{return me("kill-locale-currency")||_(()=>!Array.isArray(e[0].variants))?Promise.resolve(e):Promise.resolve(fn(e))}catch(e){return Promise.reject(e)}},Un=new K("ai_recs_cache",300001),Mn=new Map,qn=function(e,t,n){try{const o=Yt(),i=function(e,t,n){const r=function(){const e=Ot(),t={path:window.location.pathname,host:window.location.hostname};_(()=>e.length)>0&&(t.cartItems=e);const n=_(()=>Ze().token);n&&(t.cartToken=n);const r=At();r&&(t.trafficSources=r),t.productsSeenInSession=ot(),t.isCustomer=!!E(),t.query=window.location.search||"",t.hash=window.location.hash||"";const o=jt();return o&&(t.cartAttributes=o),t}();r.storeAlias=e;const o=E();o&&(r.clientId=o),r.anonymousId=t.id,r.firstSeen=t.firstSeen,r.firstSession=t.firstSession,r.gaId=_(()=>document.cookie.split(";").map(e=>e.split("=")).find(e=>{let[t,n]=e;return"_ga"==t.trim()})[1],"");const i=window.loomi_ctx;r.customerTags=_(()=>i.ctags.slice(0,20)),r.landingPage=_(()=>i.session.landing_page),r.hasSubs=!!_(()=>nt(Ze()).length>0);const s=vt();s&&(r.edgetag=s);const c=function(){try{const e=_(()=>new URL(window.location.href));if(_(()=>e.searchParams.get("forceOverride"))){const t=_(()=>e.searchParams.get("targeting"));if(t)return JSON.parse(decodeURIComponent(escape(atob(t))))}}catch(e){F("preview overrides",e)}return{}}(),a=it(at),u=function(){const e=it(ut);function t(e){return new Date(e.ts).valueOf()}function n(){const e=new URL(location.href);return["vslyvid","vslywgid","vslysid","lmi_preview","targeting","vsly_vid"].forEach(t=>e.searchParams.delete(t)),e.search||""}return bt(ut).then(r=>{const o={ts:new Date,name:Lt(),search:_(n,"")},i=!!o.search,s=(_(()=>r.visits)||e||[]).filter(e=>!i||!(e.name===o.name&&!e.search)).filter(e=>
30!(e.name===o.name&&(o.search===e.search||i&&!e.search))).sort((e,n)=>t(n)-t(e)).slice(0,500);var c;s.unshift(o),(c={id:ut,visits:s},Promise.resolve(xt()).then(function(e){return new Promise((t,n)=>{const r=e.transaction([kt],"readwrite").objectStore(kt).put(c);r.onerror=e=>{n("IDB e:w"+e.target.error)},r.onsuccess=()=>{t("")}})})).catch()}).catch(),st([{ts:f(),name:Lt()}],e,e=>t=>e.name===t.name,ut)}(),l=ct(),d={deviceKind:_(()=>window.loomi_ctx.deviceOverride,void 0),...n||{}},m=!!_(()=>navigator.userAgent.includes("Macintosh")&&"ontouchend"in document),h=_(()=>window.innerWidth,0),p=_(()=>window.vslyDesktopBreakpoint)||960,v=_(()=>S("cart_currency"))||_(()=>Ze().currency)||"",w=_(()=>i.current_product);if(w){r.oos=_(()=>w.oos),r.price=_(()=>w.price),r.iq=_(()=>w.variants.reduce((e,t)=>t.iq+e,0)),r.productId=_(()=>{const e=Nt().productId;return Number.isFinite(Number(e))?e.toString():""},"");const e=1*i.variantId;Number.isFinite(e)&&(r.vid=e)}const y=_(tt);"spa"==window.vslyIntegrationType&&(r.spa=!0);const g=_(()=>i.ttl);return{cartCurrency:v,...r,queryHistory:a,isIPadPro:m,windowInnerWidth:h,desktopBreakpoint:p,visitedPages:u,ttl:Number.isFinite(g)?g:0,purchasedLineItems:l,sid:y,...d||{},...c||{}}}(e,o,n);return Promise.resolve(function(e,t){try{const n=g(t),o=function(e){const{previewKey:t,debugAllocator:n,previewVariantId:o}=function(){[r,on].map(e=>{const t=cn(e);t&&sessionStorage.setItem(e,t)});const e=sessionStorage.getItem(r),t=sessionStorage.getItem(on);return{previewKey:e,debugAllocator:cn(sn),previewVariantId:t}}();let i=new URL(e);return t&&i.searchParams.append(r,t),n&&i.searchParams.append(sn,"true"),o&&i.searchParams.append(on,o),i}(Vn(e).cfgUrl);o.searchParams.append("q",n);const i=W(o.href),s=window.vslyNativeFetch||window.fetch,c=Bn.has(i)?Bn.get(i):s(o.href,{priority:"high"}).finally(()=>Bn.delete(i));return Bn.set(i,c),Promise.resolve(c).then(function(e){if(e.ok)return Promise.resolve(e.json());throw new Error(`failed to load config: ${e.statusText}`)})}catch(e){return Promise.reject(e)}}(t,i)).then(function(e){return _(()=>{window.loomi_ctx.audiences=e.audiences,_(()=>e.audiences&&localStorage.setItem("vsly_audiences",JSON.stringify(e.audiences))),window.loomi_ctx.testedThemes=e.testedThemes||[]}),function(e){const t=e.currentVariant;window.loomi_ctx={...window.loomi_ctx||{}};const n=_(()=>t.pid);n&&(window.loomi_ctx.productId=`${n}`);const r=_(()=>t.vid);r&&(window.loomi_ctx.variantId=`${r}`);const o=_(()=>t.price);o&&(window.loomi_ctx.variantPrice=o);const i=_(()=>t.meta);i&&(window.loomi_ctx.productMeta=`${i}`)}(e),st(e.queryHistory,i.queryHistory,e=>t=>t.v===e.v&&t.k===e.k,at),function(e){var t;(t=e.experiments)&&t.findIndex(e=>{const t=_(()=>e.clientTargetingFormula.toString(),"")||"";return t.includes("CartItemHasTag")||t.includes("CartItemHasCollection")||t.includes("AllCartItemsHasTag")})>-1||!0===_(()=>e.flags["sdk-enable-cart-enrichment"],!1)&&(e.flags["sdk-enable-cart-enrichment"]=!1)}(e),{configuration:e,tracking:o}})}catch(e){return Promise.reject(e)}},Fn="vslyb",Bn=new Map;function Jn(e){if("number"==typeof e.chance&&e.chance<100){const t={experienceId:e.name,variantId:e.variant,storeAlias:_(()=>window.loomi_ctx.storeAlias),anonymousId:_(()=>window.loomi_ctx.userId)};e.version&&(t.version=e.version);const r=g(t),o=_(()=>window.loomi_ctx.env,n.PROD),i=new URL(Vn(o).cfgUrl.replace("/allocate","/match"));i.searchParams.append("q",r),fetch(i)}}function Vn(e){let t="/api/allocator/web/public/v2/allocate";return Gn(e)&&(t="/allocate"),{cfgUrl:`${Hn(e)}${t}`}}function Hn(e){return Gn(e)?"http://localhost:8080":`https://${A()}`}function Gn(e){return[n.TEST,n.LOCAL].includes(e)}function zn(e){window.visually={..._(()=>window.visually)||{},flags:e},localStorage.setItem("loomi-flags",JSON.stringify(e))}function Kn(e,t,n){const r=function(r){_(()=>!!r.persisted)&&(window.loomi_ctx.cart=void 0,n(e,t,500).catch(e=>{F("failed reloading sdk",e)}))};_(()=>!window.loomi_ctx.pageshow)&&(q("pageshow initialized"),s().then(()=>{window.addEventListener("pageshow",r),window.loomi_ctx.pageshow=!0}))}function Wn(e){return`${e.name}-${e.variant}`}function Qn(e){return`${e.name}-${e.variant}-${e.version||0}`}function Yn(e){$.forEach(t=>{e&&!e(t)||(t.undo(),t.do())})}const Zn=(e,t)=>!!_(()=>e.audiences.includes(t)),Xn=e=>{const t={},n=Zn(e,"d"),r=Zn(e,"m");return n||r?(_(()=>e.experiments.filter(e=>
30!!e.code).forEach(e=>e.code.forEach(r=>{const o=_(()=>r.value.env.general.recsCount),i=_(()=>n?o.desktop.value:o.value);i>(t[e.variant]||0)&&"number"==typeof i&&(t[e.variant]=i)}))),t):t},er=function(e){void 0===e&&(e={});try{const t=Z+X;return we(Z,X),Promise.resolve(v(()=>_(()=>window.visually.widgets[t]),100,50)).then(function(){const n="#vsly-overlay",r="#vslyp-vsly-overlay";if(!document.querySelector(r)){const e=document.createElement("div");e.id=n.replace("#",""),e.textContent=".",e.style.opacity="0",e.style.display="none",document.body.appendChild(e);const t=document.createElement("script");t.id=r.replace("#",""),t.type="text/props",t.textContent="{}",document.body.appendChild(t)}return window.visually.widgets[t](n),Promise.resolve(v(()=>!!window.loomi_api._openProductOverlay,100,50)).then(function(){window.loomi_api._openProductOverlay((e=>{const t=_(()=>e.widgetContext)||_(()=>e.mpCtx)||_(()=>e.overlay.mpCtx);return t?{...e,overlay:{...e.overlay||{},mpCtx:t}}:e})(e))})})}catch(e){return Promise.reject(e)}};function tr(e,t,n,r){const[o,i]=t.split(",");return new Promise(t=>{bt(ut).then(n=>{for(const s of function(e,t,n){const r=(new Date).valueOf();return(_(()=>e.visits,[])||[]).filter(e=>{const o=new Date(e.ts).valueOf(),i=36e5,s=parseInt(t);switch(n.replaceAll('"',"")){case"hours":return o>r-s*i;case"weeks":return o>r-s*i*24*7;case"days":return o>r-s*i*24;default:return!1}})}(n,o,i))if(r||cr(e)){if(rr(s,e))return void t(!0)}else if(nr(s,e))return void t(!0);t(!1)})})}function nr(e,t){return!![or(e),sr(or(e))].find(e=>e.includes(t))}function rr(e,t){const n=e.search||"",r=or(e)+n;return!![r,sr(r)].find(e=>e.includes(ir(t)))}function or(e){return ir(function(e){const t=_(()=>new URL(e));if(!t)return e;const n=t.pathname.split("/");return/^[a-z]{2}-[a-z]{2}$/.test(n[1])&&(t.pathname=n.slice(2).join("/")),ir(t.href)}(e.name))}function ir(e){const t=_(()=>new URL(e));return t&&t.pathname.endsWith("/")?"/"===t.pathname?t.href.slice(0,-1):(t.pathname=t.pathname.slice(0,-1),t.href):e}function sr(e){return e.includes("/products/")&&e.includes("/collections/")?e.replace(/\/collections\/[^/]+/,""):e}function cr(e){return _(()=>!!new URL(e).search)}const ar=function(e){try{return Er(),yr(e.clientTargetingFormula)&&(mr[hr(e)]=e),Promise.resolve(Sr(e)).then(function(t){return t?(vr(e),!0):(q(`exp: ${e.gaName} not run client targeting: ${e.clientTargetingFormula} => false`),!1)})}catch(e){return Promise.reject(e)}},ur=function(e){try{const t=Object.entries(mr).map(t=>{let[n,r]=t;return yr(r.clientTargetingFormula)&&(mr[hr(r)]=r),{exp:r,shouldBeApplied:lr(r.clientTargetingFormula,e,r.name),hasBeenApplied:()=>!!fr[hr(r)]}});return Promise.resolve(gr(t)).then(function(e){!function(e){e.filter(e=>e.hasBeenApplied()&&!e.shouldBeApplied).flatMap(e=>{const t=_(()=>fr[hr(e.exp)]);return t&&delete fr[hr(e.exp)],t}).forEach(e=>{_(e.revert)})}(e),function(e){e.filter(e=>e.shouldBeApplied&&!e.hasBeenApplied()).forEach(e=>{var t,n,r;vr(e.exp),t=e.exp,n=wr,void 0===r&&(r=C()),n.has(t.variant)||(xr(r,t),n.add(t.variant),Jn(t))})}(e)})}catch(e){return Promise.reject(e)}},lr=function(e,t,n){void 0===n&&(n="");try{if(void 0===t&&(t=pr()),yr(e)){t.Total=$t,t.CartHasSubs=Ut,t.CartSubs=Mt,t.CartHasItem=qt,t.CartHasItemMatching=Ft,t.CartItemHasTagMatching=Jt,t.CartItemHasTag=Bt,t.AllCartItemsHasTag=Vt,t.AllCartItemsHasTagMatching=Ht,t.CartItemHasCollection=Gt,t.IsLoyaltyCustomer=zt,t.LoyaltyPointsBalance=Kt,t.LoyaltyPointsEarned=Wt,t.PageVisit=tr,t.CustomerTag=Pr,t.IsGuest=Ar,t.AbandonedCart=Rt,t.CartAttrName=Dt,t.UseCaseId=n;const r=()=>new Function(`\n const c = arguments[0];\n return ${function(e){const t=t=>_(()=>e.includes(t));for(const n of["PageVisit","Total"])t(`c.${n}`)&&!t(`await c.${n}`)&&(e=`( ${e.replaceAll(`c.${n}`,`await c.${n}`)} )`);return!t("(async ()")&&t("await")?`(async () => (${e}))()`:e}(e)}`)(t);return Promise.resolve(new Promise(e=>e(r())).catch(e=>(F("client side formula err",e),!1)))}return Promise.resolve(!0)}catch(e){return Promise.reject(e)}};let dr=!1;const mr={},fr={},hr=e=>`${e.name}-${e.variant}`;function pr(){return{cart:Ze(),Total:$t,CartHasSubs:Ut,CartSubs:Mt,CartHasItem:qt,CartHasItemMatching:Ft,CartItemHasTagMatching:Jt,CartItemHasTag:Bt,AllCartItemsHasTag:Vt,AllCartItemsHasTagMatching:Ht,CartItemHasCollection:Gt,IsLoyaltyCustomer:zt,LoyaltyPointsBalance:Kt,LoyaltyPointsEarned:Wt,PageVisit:tr,CustomerTag:Pr,IsGuest:Ar,AbandonedCart:Rt,CartAttrName:Dt}}function vr(e){const t={experienceId:e.name,variantId:e.variant,gaExperienceName:e.gaName,gaVariantName:e.gaVariant,reportGa:e.ga,publishedAt:e.publishedAt,version:e.version};var n;n=_(()=>e.code.map(e=>{try{return function(e,t){if("compound"===e.kind){const n=e.value,r=function(e,t,n,r,o){const i=[];return n&&""!==n&&i.push(N(e,t,n)),r&&""!==r&&i.push(N("appendCss",t,r)),o&&""!==o&&i.push(N("appendJs",t,o)),i}(n.htmlKind,e.selector,n.html,n.css,n.js),o=N(e.kind,e.selector,r);o.options=t;const i=Ye(o);return i.htmlId=r[0].id,r[1]&&(i.cssId=r[1].id),r[2]&&(i.jsId=r[2].id),i}if("widget"===e.kind){const n=N(e.kind,e.selector,"");n.options=t,n.block=e;const r=function(e,t){const n=_(()=>e.block.value);return{...t,sectionId:_(()=>n.env.sectionId),widgetId:_(()=>n.widgetId),widgetVersion:_(()=>n.version)}}(n,t);!function(e,t){const n=_(()=>e.block.value.env);
30n&&Object.entries(t).forEach(e=>{let[t,r]=e;return n[t]=r})}(n,r);const o=Ye(n);return o.htmlId=n.id,o}if(["pageRedirect","themeTest"].includes(e.kind)){const n=N(e.kind,e.selector,"");return n.options=t,n.block=e,Ye(n)}if(["moveElem","automation","visualEdit"].includes(e.kind)){const n=N(e.kind,e.selector,"");n.options=t,n.block=e;const r=Ye(n);return r.htmlId=n.id,r}const n=N(e.kind,e.selector,e.value);return n.options=t,Ye(n)}(e,t)}catch(e){}}).filter(e=>!!e),[]),fr[hr(e)]=n,function(e){if(!0!==window.visually?.flags?.["experience-applied-callback"])return;const t=window.vslyOnExperienceApplied;if("function"!=typeof t)return;const n={experienceId:e.name,variantId:e.variant,experienceName:e.gaName,variantName:e.gaVariant,version:e.version??0};try{Promise.resolve(t(n)).catch(e=>F("vslyOnExperienceApplied callback failed",e))}catch(e){F("vslyOnExperienceApplied callback failed",e)}}(e)}const wr=new Set;function yr(e){return!!e&&""!==e}const gr=function(e){try{return Promise.resolve(Promise.all(e.map(function(e){try{return Promise.resolve(e.shouldBeApplied).then(function(t){return{...e,shouldBeApplied:t}})}catch(e){return Promise.reject(e)}})))}catch(e){return Promise.reject(e)}},_r=e=>{const t=_(()=>e.key),n=_(()=>e.value),r=pr();t===Xe.CART_CHANGE?(ur({...r,cart:n}),_(()=>window.loomi_ctx.maintainCartAttributes(n))):t===Xe.LOYALTY_CHANGE&&ur(r)};function Sr(e){return lr(e.clientTargetingFormula,void 0,e.name)}function Er(){dr||s(()=>document).then(()=>{document.addEventListener(Q,_r),dr=!0})}function Pr(e,t){if(void 0===t&&(t=""),"contains"===t)return _(()=>window.loomi_ctx.ctags?.some(t=>t.includes(e)))||!1;const n=["!","not in"].some(e=>t.includes(e)),r=_(()=>window.loomi_ctx.ctags.includes(e))||!1;return n?!r:r}function Ar(){return Promise.resolve(_(()=>!window.loomi_ctx.clientId))}function Ir(e){const t=hr(e),n=fr[t];n&&(n.forEach(e=>_(e.revert)),delete fr[t]),delete mr[t]}const br=function(e,t,n){try{let r;return Promise.resolve(n()).then(function(n){n?(xr(t,e),(yr(e.clientTargetingFormula)||function(e){return!!me("trigger-delayed-allocation")&&_(()=>["jsFunction","jsCondition"].includes(e.trigger.type))}(e))&&Jn(e)):r=1})}catch(e){return Promise.reject(e)}};function xr(e,t){return _(()=>{e.register(t.name,t.variant,t.gaVariant,t.gaName);const n=t.ga;return e.track(o.USE_CASE,{use_case:t.name,use_case_variant:t.variant,...t.version?{version:t.version}:{}},{isAudience:t.isAudience,isRedirect:t.isRedirect,immediate:t.immediate,gaName:t.gaName,gaVariant:t.gaVariant,...n?{reportGa:n}:{}})})}const Cr=new Set,kr=new Set,Tr=new Set,Nr=new Set;let Or;function jr(e){void 0===Or&&(Or=new MutationObserver(Lr(e)),Or.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1}))}function Lr(e){return()=>{$r(Cr,Tr,(t,n)=>{br(n,e,()=>(t.add(Rr(n.trigger.selector,n)),ar(n)))}),$r(kr,Nr,(t,n,r)=>{const o=n.trigger;t.add(Rr(o.selector,n)),r.addEventListener(o.name,()=>br(n,e,()=>ar(n)),{once:void 0!==o.once&&o.once})})}}function $r(e,t,n){e.forEach(e=>{_(()=>{const r=e.trigger.selector;document.body.querySelectorAll(r).forEach(o=>{t.has(Rr(r,e))||n(t,e,o)})})})}function Rr(e,t){return`${e}-${t.name}`}function Dr(e){const t=JSON.stringify({ts:(new Date).getTime(),...e});let n,r,o=0;if(0===t.length)return o;for(n=0;n<t.length;n++)r=t.charCodeAt(n),o=(o<<5)-o+r,o|=0;return o}function Ur(e){const t=Dr(e);return Br(t),v(()=>new Function(e.code)(window),e.timeoutMillis,e.retries,()=>void 0===Jr(t))}function Mr(e){return JSON.parse(localStorage.getItem(e)||"[]")}let qr=[];const Fr=function(e,t,n){_(()=>t.experiments.forEach(t=>{n&&n.matches(t)?n.onSubscribeCall(t):Gr(t,e)}))},Br=(e,t)=>{qr.push({handler:e,experienceKey:t})},Jr=e=>qr.find(t=>t.handler===e),Vr=function(e){qr.filter(t=>t.experienceKey===e).forEach(e=>{try{"number"!=typeof e.handler&&e.handler()}catch(e){}}),qr=qr.filter(t=>t.experienceKey!==e)};function Hr(e,t){Gr(e,t)}function Gr(t,n){switch(_(()=>t.trigger.type)){case e.PageLoad:!function(e,t){br(e,t,()=>ar(e))}(t,n);break;case e.Timeout:!function(e,t){const n=setTimeout(()=>{br(e,t,()=>ar(e))},e.trigger.timeoutMillis);Br(()=>{n&&clearTimeout(n)})}
30(t,n);break;case e.Inactivity:!function(e,t){const n=e.trigger.timeoutMillis;let r;function o(){clearTimeout(r),r=setTimeout(()=>{br(e,t,function(){try{return Promise.resolve(Sr(e)).then(function(t){return t&&ar(e),t})}catch(e){return Promise.reject(e)}})},n)}o();const c=["mousemove","keypress","scroll","touchstart","touchmove"];Br(()=>{clearTimeout(r),i(()=>document).then(()=>c.forEach(e=>document.removeEventListener(e,o)))}),s(()=>document,!0).then(()=>{c.forEach(e=>document.addEventListener(e,o,{passive:!0}))})}(t,n);break;case e.Selector:!function(e,t){jr(e),Cr.add(t),Lr(e)()}(n,t);break;case e.ExitIntent:!function(e,t){const n=r=>{_(()=>!r.toElement&&!r.relatedTarget)&&br(e,t,()=>{const t=ar(e);return i(()=>document).then(()=>{document.removeEventListener("mouseout",n)}),t})};s(()=>document,!0).then(()=>{document.addEventListener("mouseout",n,{passive:!0})}),Br(()=>{i(()=>document).then(()=>{document.removeEventListener("mouseout",n)})})}(t,n);break;case e.JSCondition:!function(e,t){Ur(e.trigger).then(()=>{br(e,t,()=>ar(e))}).catch(()=>{})}(t,n);break;case e.JSFunction:!function(e,t){!function(n){try{const r=new Function(`return async function() { ${n.code} }`)()(),o=Dr(n);Br(o),r.then(()=>void 0!==Jr(o)&&void br(e,t,()=>ar(e)))}catch(e){}}(e.trigger)}(t,n);break;case e.JSEvent:!function(e,t){const n=e.trigger,r="vsly-js-events";function o(n){n&&br(e,t,()=>ar(e))}const c=e=>{let t;try{t=new Function(n.jsEvent.matchCode)(e),localStorage.setItem(r,JSON.stringify([...Mr(r),{event:{detail:e.detail},ts:(new Date).valueOf()/1e3}].splice(0,25)))}catch(e){F("handleJsEvent",e),t=!1}o(t)};o(function(e,t){return _(()=>!!Mr(e).find(e=>{const n=e.ts;return(new Date).valueOf()/1e3-n<2628e3&&new Function(t)(e.event)}))}(r,n.jsEvent.matchCode)),s(()=>window).then(()=>{window.addEventListener(n.jsEvent.name,c)}),Br(()=>{i().then(()=>{window.removeEventListener(n.jsEvent.name,c)})})}(t,n);break;case e.Conjunction:!function(t,n){if(function(t){return[e.ExitIntent,e.Selector,e.Timeout].includes(t.trigger.condition.type)}(t)){const e=t.trigger;Ur(e.jsCond).then(()=>{Gr({...t,trigger:e.condition},n)}).catch(()=>{})}}(t,n);break;case e.ElementEvent:!function(e,t){jr(t),kr.add(e),Lr(t)()}(t,n)}}const zr=["vsly-backdrop-container","__loomi_crosshair_container"];function Kr(e){let t=_(()=>e.target),n=!1;for(;t;){if(zr.includes(_(()=>t.id))){n=!0;break}t=_(()=>t.parentElement)}n&&(q("vsly","about to stop propagation of event",e),_(()=>e.stopImmediatePropagation()),_(()=>e.stopPropagation()))}function Wr(e,t){const n=_(()=>window.Shopify.currency.active,"USD"),r=_(()=>window.Shopify.locale,"en-US"),o=new Intl.NumberFormat(r,{style:"currency",currency:n,minimumFractionDigits:!0===_(()=>window.visually.flags["op-locale-currency-always-show-decimals"],!1)?2:0,maximumFractionDigits:2});if(t){if(Zr()){const t=_(()=>window.visually.priceRound)||Math.round;return o.format(t(e,n))}return o.format(e)}const i=_(()=>window.Shopify.currency.rate,"1");let s=Number.parseFloat(i);s=Number.isNaN(s)?1:s;let c=e*s;return 1!=s&&me("exchange-fee")&&(c*=1.02),c=Qr(s,c,n),o.format(c)}const Qr=(e,t,n)=>1!==e&&me("exchange-round")||Zr()?(_(()=>window.visually.priceRound)||Math.round)(t,n):t;function Yr(){const e=_(()=>!0===window.visually.flags["kill-locale-currency"]),t=_(()=>window.Shopify.currency,{}),n=!!_(()=>t.active),r=_(()=>t.rate),o=!!r&&!Number.isNaN(Number.parseFloat(r));return!e&&n&&o}const Zr=()=>!me("op-locale-currency-no-round");let Xr=window.location.href;const eo=()=>{requestAnimationFrame(()=>{Xr!==window.location.href&&(Xr=window.location.href,window.dispatchEvent(new CustomEvent("vslyUrlChanged",{detail:{prev:Xr,curr:window.location.href}})))})};var to;!function(e){e.NONE="none",e.YOTPO="yotpo"}(to||(to={}));const no={isMember:!1,provider:to.NONE};function ro(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}const oo="vsly-loyalty-ctx",io=(()=>{const e=["swell:customer:updated","swell:redemption","swell:initialized","swell:setup","vsly:loyalty-changed"];let t;const n=()=>{const e=_(()=>window.swellConfig.customer);return e?{id:e.local_customer_id,providerId:e.id,email:e.email,earnedPoints:e.points_earned,isMember:!0===e.is_member,pointsBalance:e.points_balance,adjustedPointsBalance:_(()=>e.adjusted_points_balance,0),provider:to.YOTPO}:no},r=e=>{_(()=>"vsly:loyalty-changed"===e.type)&&_(()=>window.swellAPI.refreshCustomerDetails()),t(n())};return{provide:n,onChange:function(n){try{t=n;const o=ro(function(){return Promise.resolve(v(()=>
30!!window.jQuery,50,200)).then(function(){e.forEach(e=>{window.jQuery(document).on(e,r)})})},function(){e.forEach(e=>{document.addEventListener(e,r)})});return Promise.resolve(o&&o.then?o.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},connect:()=>v(()=>!!_(()=>window.swellConfig.customer.local_customer_id),400,20),disconnect:function(){try{const t=ro(function(){return Promise.resolve(v(()=>!!window.jQuery,50,200)).then(function(){e.forEach(e=>{window.jQuery(document).off(e,r)})})},function(){e.forEach(e=>{document.removeEventListener(e,r)})});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}}})();function so(e){et(Xe.LOYALTY_CHANGE,e),sessionStorage.setItem(oo,JSON.stringify({ts:(new Date).getTime(),ctx:e})),window.loomi_ctx={...window.loomi_ctx||{},loyalty:e}}const co="vsly_session";function ao(e){return Et((e||"").replace("+"," "))}function uo(){const e=window.loomi_ctx.storeAlias,t={id:W(e+window.loomi_ctx.userId+f()+It()+fo()),utm_campaign:It(),last_interaction:new Date,landing_page:_(()=>location.href,""),start_at:new Date};return lo(t),t}function lo(e){const t=JSON.stringify(e);localStorage.setItem(co,t),window.loomi_ctx.session=e}function mo(){const e=function(){window.loomi_ctx=window.loomi_ctx||{};let e=window.loomi_ctx.session||_(()=>{const e=JSON.parse(localStorage.getItem(co));return e.last_interaction=new Date(e.last_interaction),e.start_at=new Date(e.start_at),e})||uo();return function(e){const t=new Date,n=e.last_interaction;return(t.valueOf()-n.valueOf())/6e4>30||ao(It())!==ao(e.utm_campaign)||e.last_interaction.getDate()!==t.getDate()}(e)&&(e=uo()),window.loomi_ctx.session=e,e}();e.last_interaction=new Date,lo(e)}const fo=()=>Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);function ho(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}const po=function(e,t,r){void 0===r&&(r=1e3);try{return vo?(console.debug("vsly-sdk","cannot reload since another reload is in progress"),Promise.resolve()):(vo=!0,Promise.resolve(ho(function(){console.debug("vsly-sdk","about to reload sdk");const o=me("sdk-reconcile")?Promise.resolve(function(e,t,n){try{return Promise.resolve(n(t,e)).then(function(e){let{configuration:t}=e;const n=_(()=>window.loomi.conf.experiments)||[],r=new Map,o=t.experiments||[],i=new Map,s=new Set(Object.keys(fr)),c=C();n.forEach(e=>r.set(Wn(e),e)),o.forEach(e=>i.set(Wn(e),e)),(e=>{window.loomi={..._(()=>window.loomi)||{},conf:e},window.visually={..._(()=>window.visually)||{},flags:e.flags,recsPerVariant:Xn(e)},zn(e.flags)})(t),((e,t,n)=>{e.forEach((e,r)=>{t.has(r)||(n.has(r)&&Ir(e),Vr(r))})})(r,i,s),document.dispatchEvent(Object.assign(new Event("reset-widget"),{value:"reload"})),document.dispatchEvent(Object.assign(new Event("targeting-changed"),{value:"#reload",key:"CART_CHANGE"})),((e,t,n,r)=>{e.forEach((e,o)=>{const i=t.get(o);i?Qn(i)!==Qn(e)&&(r.has(o)&&Ir(i),Vr(o),un([e]),Hr(e,n)):(un([e]),Hr(e,n))})})(i,r,c,s)})}catch(e){return Promise.reject(e)}}(e,t,wo)).then(function(){}):Promise.resolve(function(){try{return dr&&i(()=>document).then(()=>{document.removeEventListener(Q,_r),dr=!1}),qr.forEach(e=>{try{"number"!=typeof e.handler&&e.handler()}catch(e){}}),qr=[],Array.from($.keys()).forEach(e=>{Qe(e)}),Ve&&Ve.disconnect(),Promise.resolve()}catch(e){return Promise.reject(e)}}()).then(function(){return Promise.resolve((o=r,void 0===o&&(o=40),new Promise(e=>setTimeout(e,o)))).then(function(){return Promise.resolve(function(e,t){try{return void 0===e&&(e=n.PROD),Promise.resolve(ho(function(){return function(r,o){try{var i=(function(){if(window.vsly_blocked)throw Ln(),new Error(Fn)}(),function(e,t){window.loomi_ctx=window.loomi_ctx||{},window.loomi_ctx.env=window.loomi_ctx.env||e,window.loomi_ctx.storeAlias=window.loomi_ctx.storeAlias||t}(e,t),Promise.resolve(function(e,t){try{return void 0===e&&(e=n.PROD),Promise.resolve(yo(t,e,void 0)).then(function(n){let{configuration:r,tracking:o}=n;return go(r,t,e,o)})}catch(e){return Promise.reject(e)}}(e,t)).then(function(n){let{jitsu:r,configuration:o}=n;if(!_(()=>o.flags["kill-switch"]))return Promise.resolve(Je()).then(function(){un(o.experiments),Fr(r,o),Kn(e,t,po),mt()})}))}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){_(()=>e.message)!==Fn&&F("failed initialising sdk",e)})},function(e,t){if(Ln(),e)throw t;return t}))}catch(e){return Promise.reject(e)}}(e,t)).then(function(){})});var o});if(o&&o.then)return o.then(function(){})},function(e,t){if(vo=!1,e)throw t;return t})))}catch(e){return Promise.reject(e)}};let vo=!1;const wo=function(e,t,n){try{return m(),Promise.resolve(qn(e,t,n))}catch(e){return Promise.reject(e)}},yo=function(e,t,n){try{return _(mo),m(),Promise.resolve(qn(e,t,n))}catch(e){return Promise.reject(e)}},go=function(e,t,n,r){try{return zn(e.flags),function(e,t,n,r,o,i){Er(),window.loomi_ctx={..._(()=>window.loomi_ctx)||{},env:t,storeAlias:e,apply:e=>{un([e]),ar(e)},shouldApply:lr};const s=_(()=>
30o.productId),c=window.loomi_ctx;s&&!c.productId&&(c.productId=s);const a=_(()=>o.variantId);a&&!c.variantId&&(c.variantId=a),window.loomi={..._(()=>window.loomi)||{},conf:n},window.visually={..._(()=>window.visually)||{},flags:n.flags,enabledIntegrations:n.integrations,recsPerVariant:Xn(n),sdk_api:{addToCart:mn,recommendProducts:Pn,getProductsMetafields:$n,fetchRecs:Cn},reAllocate:i,rerender:Yn,reload:function(){try{return Promise.resolve(r(t,e,1e3)).then(function(){})}catch(e){return Promise.reject(e)}}}}(t,n,e,po,Nt(),wo),function(e){try{if(e.noActiveThemeTests&&Ce()){if(Pe(0))return;be()}else(e=>!(e.experiments||[]).find(e=>e.isThemeTest)&&_(Ce)&&!![localStorage,sessionStorage].find(je))(e)&&be()}catch(e){}}(e),Promise.resolve(Eo()).then(function(){var o,c,a,l;(function(e,t,n){window.loomi_api||(window.loomi_api={}),window.loomi_api.when=w,window.loomi_api.awaitCondition=v,window.loomi_api.loadVisuallyLib=h,window.loomi_api.queryProducts=Rn,window.loomi_api.debounce=u,window.loomi_api.allocatorQuery=e=>function(e,t){try{function n(){return Promise.resolve(r)}const r={results:{}},o={...e};o.queries=function(e,t){return e.queries.filter(e=>{const n=_(()=>e.oneOf.productInfo);if(n){const r=Tn(n.handle),o=sessionStorage.getItem(r);if(!o)return!0;const i=JSON.parse(o);return!!function(e,t){return!((!e.includeCollections||t.collections)&&(!e.includeTags||t.tags)&&(!e.includeSales||t.sales)&&(!e.includeVariants||t.variants))}(n,i)||(i.cached=!0,t.results[e.name]=i,!1)}const r=_(()=>e.oneOf.handlesByTag);if(r){const n=Nn(r),o=sessionStorage.getItem(n);if(!o)return!0;const i=JSON.parse(o);return i.cached=!0,t.results[e.name]=i,!1}const o=_(()=>e.oneOf.handlesByCollection);if(o){const n=On(o),r=sessionStorage.getItem(n);if(!r)return!0;const i=JSON.parse(r);return i.cached=!0,t.results[e.name]=i,!1}return!0})}(e,r);const i=function(){if(o.queries.length>0){const{query:e,hashedQuery:n}=function(e,t){e.timestamp=`${jn(4)}${t}${jn(5)}`,e.alias=window.loomi_ctx.storeAlias||"",e.userId=window.loomi_ctx.userId||"";const n=g(e);return{query:n,hashedQuery:(n+window.loomi_ctx.userId+window.loomi_ctx.storeAlias+t).split("").reduce((e,t)=>(e=(e<<5)-e+t.charCodeAt(0))&e,0)}}(o,t),i=Vn(window.loomi_ctx.env).cfgUrl.replace("/allocate",`/query?q=${e}&h=${n}`);return Promise.resolve(fetch(i)).then(function(e){const t=function(){if(e.ok)return Promise.resolve(e.json()).then(function(e){e.results&&Object.entries(e.results).forEach(e=>{let[t,n]=e;!function(e,t,n){if(t)if("ProductInfo"===t.kind){const r=n.queries.find(t=>t.name===e);r&&(_(()=>r.oneOf.productInfo.includeTags,!1)&&!t.tags&&(t.tags=[]),_(()=>r.oneOf.productInfo.includeCollections,!1)&&!t.collections&&(t.collections=[]),_(()=>r.oneOf.productInfo.includeSales,!1)&&!t.sales&&(t.sales=""),_(()=>r.oneOf.productInfo.includeVariants,!1)&&!t.variants&&(t.variants=[]),sessionStorage.setItem(Tn(t.handle),JSON.stringify(t)))}else if("HandlesByCollection"===t.kind){const r=n.queries.find(t=>t.name===e);if(r){const e=_(()=>r.oneOf.handlesByCollection,"")||"";sessionStorage.setItem(On(e),JSON.stringify(t))}}else if("HandlesByTag"===t.kind){const r=n.queries.find(t=>t.name===e);if(r){const e=_(()=>r.oneOf.handlesByTag,"")||"";sessionStorage.setItem(Nn(e),JSON.stringify(t))}}}(t,n,o),r.results[t]=n})})}();if(t&&t.then)return t.then(function(){})})}}();return Promise.resolve(i&&i.then?i.then(n):n())}catch(s){return Promise.reject(s)}}(e,`${(new Date).getTime()+Math.round(1e6*Math.random())}`),window.loomi_api.openProductOverlay=er,_(()=>e.shopApi.forEach(e=>{let{js:t,windowKey:n}=e;try{window.loomi_api[n]=new Function(t)}catch(e){}})),window.loomi_api.formatLocaleMoney=function(){var e=[].slice.call(arguments);return n()?t(...e):(_(()=>window.loomi_api.formatMoney)||(()=>`${_(()=>e[0],"")}`))(...e)},window.loomi_api.redirectTest=ee})(e,Wr,Yr),a=e.first_seen,(c=e.uid)!==(l=r.id)&&c&&a>0?(window.loomi_ctx.userId=c,Zt(c,a)):window.loomi_ctx.userId=l,function(e,t){try{return _(()=>window.loomi_ctx.cc)&&v(b,1e3,120).then(()=>Zt(e,t||(new Date).getTime()/1e3)),Promise.resolve()}catch(e){return Promise.reject(e)}}(window.loomi_ctx.userId,a),(o=e.flags)["sdk-auto-clean"]&&!o["sdk-kill-auto-clean"]&&h("price_test_cleanup_v2",{async:!1,defer:!0}).then(),_(()=>!0===window.visually.flags["op-focus-trap-removal"])&&s(()=>document,!0).then(()=>{document.addEventListener("focusin",Kr,{capture:!0,passive:!0}),document.addEventListener("mousedown",Kr,{capture:!0,passive:!0}),document.addEventListener("touchstart",Kr,{capture:!0,passive:!0}),document.addEventListener("touchend",Kr,{capture:!0,passive:!0})}),function(e,t){if(me("kill-sdk-reload-url-detection")||!me("sdk-reload")&&!["/products/","/collections/"].find(e=>window.location.href.includes(e)))return;const n=function(){const r=(()=>{requestAnimationFrame(()=>{(me("sdk-reload-url-detection-href")?So!==window.location.href:new URL(So).pathname!==new URL(window.location.href).pathname)&&(So=window.location.href,n(),_o(e,t,10))})})||eo,o=["click","touchend","pdpresp"];return s(()=>document.body,!0).then(()=>
30{o.forEach(e=>document.body.addEventListener(e,r,!0))}),()=>{i(()=>document.body).then(()=>{o.forEach(e=>{document.body.removeEventListener(e,r,!0)})})}}()}(n,t),function(){try{return Promise.resolve(function(e,t){try{var n=function(){so(function(){const e=sessionStorage.getItem(oo);if(e){const t=_(()=>JSON.parse(e));if(t&&t.ts>(new Date).getTime()-3e5)return t.ctx}}()||no);const e=_(()=>!0===window.visually.flags["loyalty-targeting"]),t=function(){if(e)return Promise.resolve(function(e){try{return e.onChange(e=>{so(e)}),Promise.resolve(e.connect()).then(function(){const t=e.provide();return so(t),{ctx:t,disconnect:e.disconnect}})}catch(e){return Promise.reject(e)}}(io)).then(function(){const e=document.querySelectorAll('[href*="/account/logout"]');e&&Array.from(e).forEach(e=>{e.addEventListener("click",()=>(sessionStorage.removeItem(oo),!0))})})}();if(t&&t.then)return t.then(function(){})}()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}(0,function(e){console.debug("vsly-loyalty","unable to find loyalty provider",e)}))}catch(e){return Promise.reject(e)}}();const d=C();return{configuration:e,jitsu:d}})}catch(e){return Promise.reject(e)}},_o=u(po,10);let So=window.location.href;const Eo=function(){try{return Promise.resolve(function(){if(me("block-do-not-track"))return Promise.resolve(x()).then(function(e){if(!e)throw new Error(Fn)})}())}catch(e){return Promise.reject(e)}};function Po(e){return e.startsWith("https://")?e.substring(8):e}function Ao(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch{return""}}var Io;!function(e){e.SIGNUP="SIGNUP",e.ADD_TO_CART="ADD_TO_CART",e.CHANGE_QTY="CHANGE_QTY",e.REMOVE_FROM_CART="REMOVE_FROM_CART",e.PAGE_LOAD="PAGE_LOAD",e.CLICK="CLICK",e.LOGIN="LOGIN",e.LOGOUT="LOGOUT",e.TIME_SPENT="TIME_SPENT",e.USE_CASE="USE_CASE",e.LEAD_SUBMISSION_EMAIL="LEAD_SUBMISSION_EMAIL",e.LEAD_SUBMISSION_PHONE="LEAD_SUBMISSION_PHONE"}(Io||(Io={}));let bo=[];const xo=function(e,t){if(void 0===t&&(t=0),0===bo.length)return;const n=bo;bo=[];const r=ko(n),o=Co(n);e({bulk:o,shared:r},!0).catch(()=>{const r=n.concat(bo);r.length<100&&(bo=r,t<2&&setTimeout(()=>xo(e,t+1),500*Math.pow(2,t)))})};u(xo,100);const Co=e=>e.map(e=>{const t=JSON.parse(JSON.stringify(e));return delete t.user,delete t.event_id,delete t.user_agent,delete t.utc_time,delete t.local_tz_offset,delete t.doc_host,delete t.ids_ga,delete t.alias,delete t.userCanBeTracked,delete t.userDataCanBeSold,delete t.edgetag,delete t.api_key,delete t.src,t}),ko=e=>{const t=_(()=>String(e[0].user.anonymous_id),""),n=_(()=>String(e[0].user_agent),""),r=_(()=>String(e[0].event_id),""),o=_(()=>String(e[0].utc_time),""),i=_(()=>Number(e[0].local_tz_offset)||0),s=_(()=>String(e[0].doc_host),""),c=_(()=>String(e[0].ids_ga),""),a=_(()=>String(e[0].alias),""),u=_(()=>Boolean(e[0].userCanBeTracked),!0),l=_(()=>Boolean(e[0].userDataCanBeSold),!0),d=_(()=>String(e[0].edgetag),""),m=_(()=>String(e[0].api_key),""),f=_(()=>String(e[0].src),"");return Object.entries({anonymous_id:t,event_id:r,user_agent:n,utc_time:o,local_tz_offset:i,doc_host:s,ids_ga:c,alias:a,userCanBeTracked:u,userDataCanBeSold:l,edgetag:d,api_key:m,src:f}).reduce((e,t)=>{let[n,r]=t;if(r){if("undefined"===r)return e;e[n]=r}return e},{})},To=function(e){try{let r;function t(e){return r?e:Promise.resolve(!1)}const o=function(){if(_(()=>e.eventPayload.bulk.length>0,!1)){const t=_(()=>JSON.parse(JSON.stringify(e.eventPayload.bulk[0])),void 0);if(!t){const e=Promise.resolve(!1);return r=1,e}const o=_(()=>JSON.parse(JSON.stringify(t.ga)),void 0);return delete t.ga,Promise.resolve(function(e){try{return Promise.resolve(function(t,r){try{var o=function(){const t=window.loomi_ctx.jitsuKey,r=function(e){const t={trackingHost:"https://live.visually-io.com"};return e===n.TEST&&(t.trackingHost="http://localhost:8088"),e===n.STAGE&&(t.trackingHost="https://sdk.loomi-stg.xyz"),t}(window.loomi_ctx.env).trackingHost;return Promise.resolve(fetch(`${r}/api/s?token=${t}&bulk=1`,{headers:{"content-type":"text/plain"},body:JSON.stringify(e.eventPayload),method:"POST",mode:"cors",credentials:"omit",keepalive:!0})).then(function(e){return e.ok})}()}catch(e){return r(e)}return o&&o.then?o.then(void 0,r):o}(0,function(e){return console.error("vsly: Failed to send event",e),!1}))}catch(e){return Promise.reject(e)}}(e)).then(function(n){return Promise.resolve(function(e){try{try{const t=e.eventPayload,n=t.bulk[0],r=window.loomi_ctx.env,o=t.shared,i=g({experienceId:n.use_case,variantId:n.use_case_variant,storeAlias:o.alias,anonymousId:o.anonymous_id,version:n.version}),s=new URL(Vn(r).cfgUrl.replace("/allocate","/match"));s.searchParams.append("q",i),fetch(s.toString())}catch(e){console.error("vsly: Failed to persist allocation",e)}return Promise.resolve()}catch(e){return Promise.reject(e)}}(e)).then(function(){return o&&C().trackExt(t,o).then().catch(e=>{console.error("vsly: Failed track ext event",e,t,o)}),r=1,n})})}}();return Promise.resolve(o&&o.then?o.then(t):t(o))}catch(i){return Promise.reject(i)}},No="vsly_analytics_queue";function Oo(e,t,n){void 0===n&&(n=!1);try{const r=window.loomi_ctx,o=r.storeAlias,i=r.jitsuKey,s=Pt(),c={id:`${Date.now()}-${Math.random().toString(36).substring(2,9)}`,timestamp:Date.now(),eventPayload:{bulk:[{url:location.href,doc_path:location.pathname,doc_search:location.search,sid:r.session.id,sid_start:r.session.start_at,utm:s.utm,lmi_params:s.lmi_params,event_type:"USE_CASE",use_case:e._USE_CASE,use_case_variant:e._USE_CASE_VARIANT,version:e._USE_CASE_VERSION||1,ga:{isAudience:!1,gaName:e._USE_CASE_GA||e._USE_CASE,gaVariant:e._USE_CASE_GA_VARIANT||e._USE_CASE_VARIANT,reportGa:n}}],shared:{anonymous_id:t.id,user_agent:navigator.userAgent,utc_time:(new Date).toISOString(),local_tz_offset:(new Date).getTimezoneOffset(),doc_host:location.host,alias:o,api_key:i}},retries:0},a=jo();a.push(c),Lo(a)}catch(e){console.error("vsly: Failed to queue analytics event",e)}}function jo(){try{const e=localStorage.getItem(No);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch(e){return console.error("vsly: Failed to read analytics queue",e),[]}}function Lo(e){try{localStorage.setItem(No,JSON.stringify(e))}catch(e){console.error("vsly: Failed to save analytics queue",e)}}const $o=(e,t)=>{try{localStorage.setItem(e,JSON.stringify({variant:t.experiment.variant,version:t.experiment.version||0}))}catch(e){}},Ro=(e,t)=>{let n=null;try{const r=localStorage.getItem(e);if(r){let e;const o=JSON.parse(r);if(o&&"object"==typeof o&&"variant"in o){e=o;const r=t.find(t=>t.experiment.variant===e.variant);r&&(r.experiment.version||0)===(e.version||0)&&(n=r)}}}catch(e){}return n},Do=e=>`vsly_redirect_test_${e[0].experiment.name}`,Uo=(e,t)=>{if(e){const n=e.experiment;t.some(e=>{const t=e.experiment;return t.variant===n.variant&&t.version===n.version})||(e=!1)}if(!e){const n=100*Math.random();let r=0;for(const o of t)if(r+=o.targeting.chance,n<=r){e=o;break}}return e},Mo=function(e){void 0===e&&(e=!0);const t=window.loomi_ctx.consent;t.allowed=e,t.fin||(t.fin=qo())},qo=()=>(new Date).getTime(),Fo=()=>window.Shopify.customerPrivacy,Bo=["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","NO","IS","LI"],Jo=function(e){void 0===e&&(e=!0);const t=window.loomi_ctx.consent;t.allowed=e,t.fin||(t.fin=Vo())},Vo=()=>(new Date).getTime(),Ho=()=>window.Shopify.customerPrivacy,Go=()=>Promise.resolve(),zo=()=>(window.loomi_ctx=window.loomi_ctx||{},window.loomi_ctx.performanceMetrics=window.loomi_ctx.performanceMetrics||{},window.loomi_ctx.performanceMetrics);function Ko(){try{const e=zo().as;
30if(void 0===e)return;const t=performance.now();Object.assign(zo(),{ae:t,ad:t-e}),(e=>{try{if("function"!=typeof performance.getEntriesByType)return;const t=performance.getEntriesByType("resource").filter(t=>t.startTime>=e&&(e=>{try{return new URL(e.name).pathname.endsWith("/allocate")}catch{return!1}})(t)).pop();if(!t)return;Object.assign(zo(),{ars:t.startTime,afs:t.fetchStart,aqs:t.requestStart,aps:t.responseStart,ape:t.responseEnd,ard:t.duration,ardl:t.startTime-e,aprd:t.requestStart-t.startTime,arwd:t.responseStart-t.requestStart,ardd:t.responseEnd-t.responseStart})}catch{}})(e)}catch(e){}}function Wo(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}function Qo(){return _(mo),Yt(),function(e){void 0===e&&(e=window.loomi_ctx.embeddedTests);try{if(!e)return;if(0===e.length)return;const t=e.filter(e=>e.experiment.isThemeTest);t.length>0&&function(e){const t=Do(e);let n=Ro(t,e);if(n=Uo(n,e),!n)return;if(!n.experiment)return;$o(t,n);const r=n.experiment,o=_(()=>r.code.find(e=>"themeTest"===e.kind).value.targetThemeId)||0,i=ne({experienceId:r.name,variantId:r.variant,version:r.version,gaExperienceName:r.gaName,gaVariantName:r.gaVariant});Oo(i,Yt(),_(()=>!!r.ga)||!1),Ee(i,o)}(t);const n=e.filter(e=>!e.experiment.isThemeTest);n.length>0&&function(e){const t=e.filter(e=>function(e){if(!e)return!0;try{const t=e.match(/UrlTarget\(([^)]+)\)/);if(!t)return!1;const n=function(e){try{const t=e.match(/^"([^"]*)",\s*"([^"]*)",\s*(true|false)$/);return t?{value:t[1],op:t[2],includeQueryParam:"true"===t[3]}:null}catch{return null}}(t[1]);return!!n&&function(e,t,n){const r=window.location.search||"",o=window.location.href||"",i=(s=function(e){const t=e.startsWith("/")?e:"/"+e,n=t.split("/");if(n.length<2)return t;const r=n[1];let o=!1;return r.length>0&&r.length<=7&&(2===r.length||r.length>2&&"-"===r[2])&&(o=!0),o?"/"+n.slice(2).join("/"):t}(window.location.pathname),["STORY_IL","MAYVEN_GLOBAL","JDSPORT_IL"].includes(window.loomi_ctx.storeAlias)?s.toLowerCase():s);var s;const{hostPath:c,rawQuery:a}=function(e){const t=Po(e),n=t.indexOf("?");return-1!==n?{hostPath:t.substring(0,n),rawQuery:t.substring(n+1)}:{hostPath:t,rawQuery:""}}(e),u=c.toLowerCase();let l=Po(o.split("?")[0]).toLowerCase(),d="",m=u;if(d=(new URL(o).host+i).toLowerCase(),n){const e=r?Ao(r.substring(1)):"";if(e&&(l+="?"+e,d+="?"+e),a){const e=Ao(a);e&&(m+="?"+e)}}return function(e,t,n,r){switch(r){case"contains":return e.includes(n)||t.includes(n);case"matches":try{const r=new RegExp(n);return r.test(e)||r.test(t)}catch{return!1}case"==":return e===n||t===n;case"!=":return e===t?e!==n:t!==n;default:return!1}}(l,d,m,t)}(n.value,n.op,n.includeQueryParam)}catch(e){return console.error("vsly: Failed to evaluate targeting formula",e),!1}}(e.targeting.formula));if(0===t.length)return;const n=Do(t);let r=Ro(n,t);if(r=Uo(r,t),!r)return;if(!r.experiment)return;$o(n,r);const o=r.experiment,i=ne({experienceId:o.name,variantId:o.variant,version:o.version,gaExperienceName:o.gaName,gaVariantName:o.gaVariant});Oo(i,Yt(),_(()=>!!o.ga)||!1);const s=_(()=>o.code.find(e=>"pageRedirect"===e.kind).value);s&&ee(i,s.destUrl,s.redirectAfter||1,s.retainQueryParams,s.stickinessMode)}(n)}catch(e){console.error("vsly ETT",e)}}(),window.vsly_redirecting}const Yo=()=>window.loomi_ctx.blockingConcent;(function(){try{let t;function e(e){if(t)return e;(function(){const e=jo();e.length>0&&Promise.allSettled(e.map(To)).then(t=>{Lo(e.filter((e,n)=>{const r=t[n];return("fulfilled"!==r.status||!r.value)&&(e.retries++,(e=>!(Date.now()-e.timestamp>18e5||e.retries>3))(e))}))}).catch(e=>{console.error("vsly: Failed to process analytics queue",e)})})(),(()=>{const e=()=>{const e=se();return!!e&&!Bo.includes(e)};return new Promise((t,n)=>{const r=window.loomi_ctx.consent||={};r.init=Vo(),(se()?Go():v(se,50,200)).then(()=>{e()&&(Jo(),t())}),(_(()=>Ho().analyticsProcessingAllowed)?Go():v(()=>_(()=>Ho().analyticsProcessingAllowed),50,200)).then(()=>{const r=Ho().analyticsProcessingAllowed()||e();Jo(r),r?t():n()}),r.ccListener||(document.addEventListener("visitorConsentCollected",r=>{const o=r.detail.analyticsAllowed||e();Jo(o),o?t():n()}),r.ccListener=!0)})})().catch(),function(){try{zo().as=performance.now()}catch(e){}}();const s=yo(o,i);return s.then(Ko),s.then(e=>{let{configuration:t,tracking:r}=e;return(e=>{p("vsly-a",`${(e=>e==n.STAGE?"https://sdk.loomi-stg.xyz/":"https://assets.visually.io/")(e)}v/visually-a.js?cb=${window.loomi_ctx.sdk_version}`,{defer:!0}).catch()}
30)(i),function(e){let{configuration:t,tracking:n}=e;try{return Promise.resolve(function(e,t){try{const{storeAlias:n,env:r}=window.loomi_ctx;return Promise.resolve(Wo(function(){return Promise.resolve(go(e,n,r,t)).then(function(e){let{jitsu:t,configuration:o}=e;if(!_(()=>o.flags["kill-switch"]))return Promise.resolve(Je()).then(function(){un(o.experiments),Fr(t,o),Kn(r,n,po),mt()})})},function(e){_(()=>e.message)!==Fn&&F("fail initialising sdk",e)}))}catch(e){return Promise.reject(e)}}(t,n)).then(function(){window.dispatchEvent(new Event("visually_loaded"))})}catch(e){return Promise.reject(e)}}({configuration:t,tracking:r})}).catch(r).finally(Ln)}const r=e=>console.error(e);if(window.fetch&&(window.vslyNativeFetch=window.fetch),window.vsly_init=!0,window.vslyIntegrationType="static",(()=>{if(_(()=>window.visually_io_editor))return!0;const e=_(()=>window.loomi_ctx.ttl);return!("number"!=typeof e||!Number.isFinite(e)||e<=0)&&e<Math.floor(Date.now()/1e3)})())return console.log("sdk blocked"),Promise.resolve();window.loomi_ctx.sdk_version="0.12.169";const{storeAlias:o,env:i}=window.loomi_ctx;if(!Yo()&&Qo())return Promise.resolve();const s=function(){if(Yo()){function e(e){return t?e:window.loomi_ctx.consent.allowed?void(Qo()&&(t=1)):(Ln(),void(t=1))}const n=Wo(function(){return Promise.resolve((console.log("consent api init"),new Promise((e,t)=>{const n=window.loomi_ctx.consent||={};n.init=qo(),(_(()=>Fo().analyticsProcessingAllowed)?Promise.resolve():v(()=>_(()=>Fo().analyticsProcessingAllowed),50,200)).then(()=>{const n=window.Shopify.customerPrivacy.analyticsProcessingAllowed();console.log("consent api",n),Mo(n),n?e():t()}),n.ccListener||(document.addEventListener("visitorConsentCollected",()=>{const n=window.Shopify.customerPrivacy.analyticsProcessingAllowed();console.log("visitorConsentCollected",n),Mo(n),n?e():t()}),n.ccListener=!0)}))).then(function(){})},function(){Ln(),t=1});return n&&n.then?n.then(e):e(n)}}();return Promise.resolve(s&&s.then?s.then(e):e(s))}catch(c){return Promise.reject(c)}})().then(()=>console.log("vsly sdk with embed init"))}(); 31 32</script>
vendor: 1 bytes, line 32
32
33<script data-vsly="preact2" type="text/javascript" data-em-disable> 34 // Preact 35!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):n(e.preact={})}(this,function(e){var b,n,t,_,o,r,l,x={},C=[],u=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function w(e,n){for(var t in n)e[t]=n[t];return e}function g(e){var n=e.parentNode;n&&n.removeChild(e)}function i(e,n,t){var _,o=arguments,l={};for(_ in n)"key"!==_&&"ref"!==_&&(l[_]=n[_]);if(3<arguments.length)for(t=[t],_=3;_<arguments.length;_++)t.push(o[_]);if(null!=t&&(l.children=t),"function"==typeof e&&null!=e.defaultProps)for(_ in e.defaultProps)void 0===l[_]&&(l[_]=e.defaultProps[_]);return k(e,l,n&&n.key,n&&n.ref,null)}function k(e,n,t,_,o){var l={type:e,props:n,key:t,ref:_,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:o};return null==o&&(l.__v=l),b.vnode&&b.vnode(l),l}function S(e){return e.children}function P(e,n){this.props=e,this.context=n}function N(e,n){if(null==n)return e.__?N(e.__,e.__.__k.indexOf(e)+1):null;for(var t;n<e.__k.length;n++)if(null!=(t=e.__k[n])&&null!=t.__e)return t.__e;return"function"==typeof e.type?N(e):null}function c(e){var n,t;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,n=0;n<e.__k.length;n++)if(null!=(t=e.__k[n])&&null!=t.__e){e.__e=e.__c.base=t.__e;break}return c(e)}}function s(e){(!e.__d&&(e.__d=!0)&&t.push(e)&&!p.__r++||o!==b.debounceRendering)&&((o=b.debounceRendering)||_)(p)}function p(){for(var e;p.__r=t.length;)e=t.sort(function(e,n){return e.__v.__b-n.__v.__b}),t=[],e.some(function(e){var n,t,_,o,l,r,u;e.__d&&(r=(l=(n=e).__v).__e,(u=n.__P)&&(t=[],o=D(u,l,(_=w({},l)).__v=_,n.__n,void 0!==u.ownerSVGElement,null,t,null==r?N(l):r),d(t,l),o!=r&&c(l)))})}function E(e,n,t,_,o,l,r,u,i,c){var s,p,f,a,d,h,y,v=_&&_.__k||C,m=v.length;for(i==x&&(i=null!=r?r[0]:m?N(_,0):null),t.__k=[],s=0;s<n.length;s++)if(null!=(a=t.__k[s]=null==(a=n[s])||"boolean"==typeof a?null:"string"==typeof a||"number"==typeof a?k(null,a,null,null,a):Array.isArray(a)?k(S,{children:a},null,null,null):null!=a.__e||null!=a.__c?k(a.type,a.props,a.key,null,a.__v):a)){if(a.__=t,a.__b=t.__b+1,null===(f=v[s])||f&&a.key==f.key&&a.type===f.type)v[s]=void 0;else for(p=0;p<m;p++){if((f=v[p])&&a.key==f.key&&a.type===f.type){v[p]=void 0;break}f=null}d=D(e,a,f=f||x,o,l,r,u,i,c),(p=a.ref)&&f.ref!=p&&(y=y||[],f.ref&&y.push(f.ref,null,a),y.push(p,a.__c||d,a)),null!=d?(null==h&&(h=d),i=U(e,a,f,v,r,d,i),"option"==t.type?e.value="":"function"==typeof t.type&&(t.__d=i)):i&&f.__e==i&&i.parentNode!=e&&(i=N(f))}if(t.__e=h,null!=r&&"function"!=typeof t.type)for(s=r.length;s--;)null!=r[s]&&g(r[s]);for(s=m;s--;)null!=v[s]&&W(v[s],v[s]);if(y)for(s=0;s<y.length;s++)T(y[s],y[++s],y[++s])}function U(e,n,t,_,o,l,r){var u,i,c;if(void 0!==n.__d)u=n.__d,n.__d=void 0;else if(o==t||l!=r||null==l.parentNode)e:if(null==r||r.parentNode!==e)e.appendChild(l),u=null;else{for(i=r,c=0;(i=i.nextSibling)&&c<_.length;c+=2)if(i==l)break e;e.insertBefore(l,r),u=r}return void 0!==u?u:l.nextSibling}function f(e,n,t){"-"===n[0]?e.setProperty(n,t):e[n]="number"==typeof t&&!1===u.test(n)?t+"px":null==t?"":t}function A(e,n,t,_,o){var l,r,u,i,c;if(o?"className"===n&&(n="class"):"class"===n&&(n="className"),"style"===n)if(l=e.style,"string"==typeof t)l.cssText=t;else{if("string"==typeof _&&(l.cssText="",_=null),_)for(i in _)t&&i in t||f(l,i,"");if(t)for(c in t)_&&t[c]===_[c]||f(l,c,t[c])}else"o"===n[0]&&"n"===n[1]?(r=n!==(n=n.replace(/Capture$/,"")),n=((u=n.toLowerCase())in e?u:n).slice(2),t?(_||e.addEventListener(n,a,r),(e.l||(e.l={}))[n]=t):e.removeEventListener(n,a,r)):"list"!==n&&"tagName"!==n&&"form"!==n&&"type"!==n&&"size"!==n&&!o&&n in e?e[n]=null==t?"":t:"function"!=typeof t&&"dangerouslySetInnerHTML"!==n&&(n!==(n=n.replace(/^xlink:?/,""))?null==t||!1===t?e.removeAttributeNS("http://www.w3.org/1999/xlink",n.toLowerCase()):e.setAttributeNS("http://www.w3.org/1999/xlink",n.toLowerCase(),t):null==t||!1===t&&!/^ar/.test(n)?e.removeAttribute(n):e.setAttribute(n,t))}function a(e){this.l[e.type](b.event?b.event(e):e)}function D(e,n,t,_,o,l,r,u,i){var c,s,p,f,a,d,h,y,v,m,g,k=n.type;if(void 0!==n.constructor)return null;(c=b.__b)&&c(n);try{e:if("function"==typeof k){if(y=n.props,v=(c=k.contextType)&&_[c.__c],m=c?v?v.props.value:c.__:_,t.__c?h=(s=n.__c=t.__c).__=s.__E:("prototype"in k&&k.prototype.render?n.__c=s=new k(y,m):(n.__c=s=new P(y,m),s.constructor=k,s.render=L),v&&v.sub(s),s.props=y,s.state||(s.state={}),s.context=m,s.__n=_,p=s.__d=!0,s.__h=[]),null==s.__s&&(s.__s=s.state),null!=k.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=w({},s.__s)),w(s.__s,k.getDerivedStateFromProps(y,s.__s))),f=s.props,a=s.state,p)null==k.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==k.getDerivedStateFromProps&&y!==f&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(y,m),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(y,s.__s,m)||n.__v===t.__v){s.props=y,s.state=s.__s,n.__v!==t.__v&&(s.__d=!1),(s.__v=n).__e=t.__e,n.__k=t.__k,s.__h.length&&r.push(s),function e(n,t,_){for(var o,l=0;l<n.__k.length;l++)(o=n.__k[l])&&(o.__=n,o.__e&&("function"==typeof o.type&&1<o.__k.length&&e(o,t,_),t=U(_,o,o,n.__k,null,o.__e,t),"function"==typeof n.type&&(n.__d=t)))}(n,u,e);break e}null!=s.componentWillUpdate&&s.componentWillUpdate(y,s.__s,m),null!=s.componentDidUpdate&&s.__h.push(function(){s.componentDidUpdate(f,a,d)})}s.context=m,s.props=y,s.state=s.__s,(c=b.__r)&&c(n),s.__d=!1,s.__v=n,s.__P=e,c=s.render(s.props,s.state,s.context),s.state=s.__s,null!=s.getChildContext&&(_=w(w({},_),s.getChildContext())),p||null==s.getSnapshotBeforeUpdate||(d=s.getSnapshotBeforeUpdate(f,a)),g=null!=c&&c.type==S&&null==c.key?c.props.children:c,E(e,Array.isArray(g)?g:[g],n,t,_,o,l,r,u,i),s.base=n.__e,s.__h.length&&r.push(s),h&&(s.__E=s.__=null),s.__e=!1}else null==l&&n.__v===t.__v?(n.__k=t.__k,n.__e=t.__e):n.__e=function(e,n,t,_,o,l,r,u){var i,c,s,p,f,a=t.props,d=n.props;if(o="svg"===n.type||o,null!=l)for(i=0;i<l.length;i++)if(null!=(c=l[i])&&((null===n.type?3===c.nodeType:c.localName===n.type)||e==c)){e=c,l[i]=null;break}
35if(null==e){if(null===n.type)return document.createTextNode(d);e=o?document.createElementNS("http://www.w3.org/2000/svg",n.type):document.createElement(n.type,d.is&&{is:d.is}),l=null,u=!1}if(null===n.type)a!==d&&e.data!=d&&(e.data=d);else{if(null!=l&&(l=C.slice.call(e.childNodes)),s=(a=t.props||x).dangerouslySetInnerHTML,p=d.dangerouslySetInnerHTML,!u){if(null!=l)for(a={},f=0;f<e.attributes.length;f++)a[e.attributes[f].name]=e.attributes[f].value;(p||s)&&(p&&s&&p.__html==s.__html||(e.innerHTML=p&&p.__html||""))}(function(e,n,t,_,o){var l;for(l in t)"children"===l||"key"===l||l in n||A(e,l,null,t[l],_);for(l in n)o&&"function"!=typeof n[l]||"children"===l||"key"===l||"value"===l||"checked"===l||t[l]===n[l]||A(e,l,n[l],t[l],_)})(e,d,a,o,u),p?n.__k=[]:(i=n.props.children,E(e,Array.isArray(i)?i:[i],n,t,_,"foreignObject"!==n.type&&o,l,r,x,u)),u||("value"in d&&void 0!==(i=d.value)&&i!==e.value&&A(e,"value",i,a.value,!1),"checked"in d&&void 0!==(i=d.checked)&&i!==e.checked&&A(e,"checked",i,a.checked,!1))}return e}(t.__e,n,t,_,o,l,r,i);(c=b.diffed)&&c(n)}catch(e){n.__v=null,b.__e(e,n,t)}return n.__e}function d(e,n){b.__c&&b.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){b.__e(e,n.__v)}})}function T(e,n,t){try{"function"==typeof e?e(n):e.current=n}catch(e){b.__e(e,t)}}function W(e,n,t){var _,o,l;if(b.unmount&&b.unmount(e),(_=e.ref)&&(_.current&&_.current!==e.__e||T(_,null,n)),t||"function"==typeof e.type||(t=null!=(o=e.__e)),e.__e=e.__d=void 0,null!=(_=e.__c)){if(_.componentWillUnmount)try{_.componentWillUnmount()}catch(e){b.__e(e,n)}
35_.base=_.__P=null}if(_=e.__k)for(l=0;l<_.length;l++)_[l]&&W(_[l],n,t);null!=o&&g(o)}function L(e,n,t){return this.constructor(e,t)}function h(e,n,t){var _,o,l;b.__&&b.__(e,n),o=(_=t===r)?null:t&&t.__k||n.__k,e=i(S,null,[e]),l=[],D(n,(!_&&t||n).__k=e,o||x,x,void 0!==n.ownerSVGElement,t&&!_?[t]:!o&&n.childNodes.length?C.slice.call(n.childNodes):null,l,t||x,_),d(l,e)}b={__e:function(e,n){for(var t,_;n=n.__;)if((t=n.__c)&&!t.__)try{if(t.constructor&&null!=t.constructor.getDerivedStateFromError&&(_=!0,t.setState(t.constructor.getDerivedStateFromError(e))),null!=t.componentDidCatch&&(_=!0,t.componentDidCatch(e)),_)return s(t.__E=t)}catch(n){e=n}throw e}},n=function(e){return null!=e&&void 0===e.constructor},P.prototype.setState=function(e,n){var t=this.__s!==this.state?this.__s:this.__s=w({},this.state);"function"==typeof e&&(e=e(t,this.props)),e&&w(t,e),null!=e&&this.__v&&(n&&this.__h.push(n),s(this))},P.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),s(this))},P.prototype.render=S,t=[],_="function"==typeof Promise?Promise.prototype.then.bind(Prom
35ise.resolve()):setTimeout,p.__r=0,r=x,l=0,e.render=h,e.hydrate=function(e,n){h(e,n,r)},e.createElement=i,e.h=i,e.Fragment=S,e.createRef=function(){return{current:null}},e.isValidElement=n,e.Component=P,e.cloneElement=function(e,n){var t,_;for(_ in n=w(w({},e.props),n),2<arguments.length&&(n.children=C.slice.call(arguments,2)),t={},n)"key"!==_&&"ref"!==_&&(t[_]=n[_]);return k(e.type,t,n.key||e.key,n.ref||e.ref,null)},e.createContext=function(e){var n={},o={__c:"__cC"+l++,__:e,Consumer:function(e,n){return e.children(n)},Provider:function(e){var t,_=this;return this.getChildContext||(t=[],this.getChildContext=function(){return n[o.__c]=_,n},this.shouldComponentUpdate=function(n){_.props.value!==n.value&&t.some(function(e){e.context=n.value,s(e)})},this.sub=function(e){t.push(e);var n=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(e),1),n&&n.call(e)}}),e.children}};return(o.Consumer.contextType=o).Provider.__=o},e.toChildArray=function e(n){return null==n||"boolean"==typeof n?[]:Array.isArray(n)?C.concat.apply([],n.map(e)):[n]},e.__u=W,e.options=b}); 36// Preact Hooks 37!function(_,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("preact")):n(_.preactHooks={},_.preact)}(this,function(_,o){var e,u,t,i=0,r=[],c=o.options.__r,f=o.options.diffed,n=o.options.__c,s=o.options.unmount;function a(_,n){o.options.__h&&o.options.__h(u,_,i||n),i=0;var t=u.__H||(u.__H={__:[],__h:[]});return _>=t.__.length&&t.__.push({}),t.__[_]}function p(_){return i=1,h(b,_)}function h(_,n,t){var o=a(e++,2);return o.t=_,o.__c||(o.__c=u,o.__=[t?t(n):b(void 0,n),function(_){var n=o.t(o.__[0],_);o.__[0]!==n&&(o.__=[n,o.__[1]],o.__c.setState({}))}]),o.__}function m(_,n){var t=a(e++,4);!o.options.__s&&E(t.__H,n)&&(t.__=_,t.__H=n,u.__h.push(t))}function v(_,n){var t=a(e++,7);return E(t.__H,n)?(t.__H=n,t.__h=_,t.__=_()):t.__}function H(){r.some(function(n){if(n.__P)try{n.__H.__h.forEach(l),n.__H.__h.forEach(y),n.__H.__h=[]}catch(_){return n.__H.__h=[],o.options.__e(_,n.__v),!0}}),r=[]}o.options.__r=function(_){c&&c(_),e=0;var n=(u=_.__c).__H;n&&(n.__h.forEach(l),n.__h.forEach(y),n.__h=[])},o.options.diffed=function(_){f&&f(_);var n=_.__c;n&&n.__H&&n.__H.__h.length&&(1!==r.push(n)&&t===o.options.requestAnimationFrame||((t=o.options.requestAnimationFrame)||function(_){function n(){clearTimeout(o),d&&cancelAnimationFrame(t),setTimeout(_)}var t,o=setTimeout(n,100);d&&(t=requestAnimationFrame(n))})(H))},o.options.__c=function(_,t){t.some(function(n){try{n.__h.forEach(l),n.__h=n.__h.filter(function(_){return!_.__||y(_)})}catch(_){t.some(function(_){_.__h&&(_.__h=[])}),t=[],o.options.__e(_,n.__v)}}),n&&n(_,t)},o.options.unmount=function(_){s&&s(_);var n=_.__c;if(n&&n.__H)try{n.__H.__.forEach(l)}catch(_){o.options.__e(_,n.__v)}};var d="function"==typeof requestAnimationFrame;function l(_){"function"==typeof _.u&&_.u()}function y(_){_.u=_.__()}function E(t,_){return!t||_.some(function(_,n){return _!==t[n]})}function b(_,n){return"function"==typeof n?n(_):n}_.useState=p,_.useReducer=h,_.useEffect=function(_,n){var t=a(e++,3);!o.options.__s&&E(t.__H,n)&&(t.__=_,t.__H=n,u.__H.__h.push(t))},_.useLayoutEffect=m,_.useRef=function(_){return i=5,v(function(){return{current:_}},[])},_.useImperativeHandle=function(_,n,t){i=6,m(function(){"function"==typeof _?_(n()):_&&(_.current=n())},null==t?t:t.concat(_))},_.useMemo=v,_.useCallback=function(_,n){return i=8,v(function(){return _},n)},_.useContext=function(_){var n=u.context[_.__c],t=a(e++,9);return t.__c=_,n?(null==t.__&&(t.__=!0,n.sub(u)),n.props.value):_.__},_.useDebugValue=function(_,n){o.options.useDebugValue&&o.options.useDebugValue(n?n(_):_)},_.useErrorBoundary=function(_){var n=a(e++,10),t=p();return n.__=_,u.componentDidCatch||(u.componentDidCatch=function(_){n.__&&n.__(_),t[1](_)}),[t[0],function(){t[1](void 0)}]}}); 38// Preact Compat 39!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("preact/hooks"),require("preact")):t(e.compat={},e.preactHooks,e.preact)}(this,function(t,n,u){function r(e,t){for(var n in t)e[n]=t[n];return e}function i(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var o in t)if("__source"!==o&&e[o]!==t[o])return!0;return!1}var o,e,a,l=(o=u.Component,a=o,(e=c).prototype=Object.create(a.prototype),(e.prototype.constructor=e).__proto__=a,c.prototype.shouldComponentUpdate=function(e,t){return i(this.props,e)||i(this.state,t)},c);function c(e){var t;return(t=o.call(this,e)||this).isPureReactComponent=!0,t}function p(t,o){function n(e){var t=this.props.ref,n=t==e.ref;return!n&&t&&(t.call?t(null):t.current=null),o?!o(this.props,e)||!n:i(this.props,e)}function e(e){return this.shouldComponentUpdate=n,u.createElement(t,e)}return e.prototype.isReactComponent=!0,e.displayName="Memo("+(t.displayName||t.name)+")",e.t=!0,e}var f=u.options.__b;u.options.__b=function(e){e.type&&e.type.t&&e.ref&&(e.props.ref=e.ref,e.ref=null),f&&f(e)};var s="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function d(o){function e(e,t){var n=r({},e);return delete n.ref,o(n,(t=e.ref||t)&&("object"!=typeof t||"current"in t)?t:null)}return e.$$typeof=s,(e.render=e).prototype.isReactComponent=e.t=!0,e.displayName="ForwardRef("+(o.displayName||o.name)+")",e}function _(e,o){return e?u.toChildArray(e).reduce(function(e,t,n){return e.concat(o(t,n))},[]):null}var h={map:_,forEach:_,count:function(e){return e?u.toChildArray(e).length:0},only:function(e){if(1!==(e=u.toChildArray(e)).length)throw new Error("Children.only() expects only one child.");return e[0]},toArray:u.toChildArray},m=u.options.__e;function v(e){return e&&((e=r({},e)).__c=null,e.__k=e.__k&&e.__k.map(v)),e}function y(){this.__u=0,this.u=null,this.__b=null}function C(e){var t=e.__.__c;return t&&t.o&&t.o(e)}function b(t){var n,o,r;function e(e){if(n||(n=t()).then(function(e){o=e.default||e},function(e){r=e}),r)throw r;if(!o)throw n;return u.createElement(o,e)}return e.displayName="Lazy",e.t=!0,e}function k(){this.i=null,this.l=null}u.options.__e=function(e,t,n){if(e.then)for(var o,r=t;r=r.__;)if((o=r.__c)&&o.__c)return o.__c(e,t.__c);m(e,t,n)},(y.prototype=new u.Component).__c=function(e,t){var n=this;null==n.u&&(n.u=[]),n.u.push(t);function o(){i||(i=!0,r?r(u):u())}var r=C(n.__v),i=!1;t.__c=t.componentWillUnmount,t.componentWillUnmount=function(){o(),t.__c&&t.__c()};var u=function(){var e;if(!--n.__u)for(n.__v.__k[0]=n.state.o,n.setState({o:n.__b=null});e=n.u.pop();)e.forceUpdate()};n.__u++||n.setState({o:n.__b=n.__v.__k[0]}),e.then(o,o)},y.prototype.render=function(e,t){return this.__b&&(this.__v.__k&&
39(this.__v.__k[0]=v(this.__b)),this.__b=null),[u.createElement(u.Fragment,null,t.o?null:e.children),t.o&&e.fallback]};function g(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.l.size))for(n=e.i;n;){for(;3<n.length;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}}(k.prototype=new u.Component).o=function(n){var o=this,r=C(o.__v),i=o.l.get(n);return i[0]++,function(e){function t(){o.props.revealOrder?(i.push(e),g(o,n,i)):e()}r?r(t):t()}},k.prototype.render=function(e){this.i=null,this.l=new Map;var t=u.toChildArray(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},k.prototype.componentDidUpdate=k.prototype.componentDidMount=function(){var n=this;n.l.forEach(function(e,t){g(n,t,e)})};var E,N=((E=S.prototype).getChildContext=function(){return this.props.context},E.render=function(e){return e.children},S);function S(){}function x(e){var t=this,n=e.container,o=u.createElement(N,{context:t.context},e.vnode);return t.s&&t.s!==n&&(t.h.parentNode&&t.s.removeChild(t.h),u.__u(t.v),t.p=!1),e.vnode?t.p?(n.__k=t.__k,u.render(o,n),t.__k=n.__k):(t.h=document.createTextNode(""),u.hydrate("",n),n.appendChild(t.h),t.p=!0,t.s=n,u.render(o,n,t.h),t.__k=t.h.__k):t.p&&(t.h.parentNode&&t.s.removeChild(t.h),u.__u(t.v)),t.v=o,t.componentWillUnmount=function(){t.h.parentNode&&t.s.removeChild(t.h),u.__u(t.v)},null}function w(e,t){return u.createElement(x,{vnode:e,container:t})}var A=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;u.Component.prototype.isReactComponent={};var R="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;function U(e,t,n){if(null==t.__k)for(;t.firstChild;)t.removeChild(t.firstChild);return u.render(e,t),"function"==typeof n&&n(),e?e.__c:null}function P(e,t,n){return u.hydrate(e,t),"function"==typeof n&&n(),e?e.__c:null}var F=u.options.event;function O(e,t){e["UNSAFE_"+t]&&!e[t]&&Object.defineProperty(e,t,{configurable:!1,get:function(){return this["UNSAFE_"+t]}
39,set:function(e){this["UNSAFE_"+t]=e}})}u.options.event=function(e){F&&(e=F(e));var t=!(e.persist=function(){}),n=!1,o=e.stopPropagation;e.stopPropagation=function(){o.call(e),t=!0};var r=e.preventDefault;return e.preventDefault=function(){r.call(e),n=!0},e.isPropagationStopped=function(){return t},e.isDefaultPrevented=function(){return n},e.nativeEvent=e};var L={configurable:!0,get:function(){return this.class}},M=u.options.vnode;function D(e){return u.createElement.bind(null,e)}function V(e){return!!e&&e.$$typeof===R}function W(e){return V(e)?u.cloneElement.apply(null,arguments):e}function $(e){return!!e.__k&&(u.render(null,e),!0)}function j(e){return e&&(e.base||1===e.nodeType&&e)||null}u.options.vnode=function(i){i.$$typeof=R;var e,t,n,o=i.type,r=i.props;if(o){if(r.class!=r.className&&(L.enumerable="className"in r,null!=r.className&&(r.class=r.className),Object.defineProperty(r,"className",L)),"function"!=typeof o){for(n in r.defaultValue&&void 0!==r.value&&(r.value||0===r.value||(r.value=r.defaultValue),delete r.defaultValue),Array.isArray(r.value)&&r.multiple&&"select"===o&&(u.toChildArray(r.children).forEach(function(e){-1!=r.value.indexOf(e.props.value)&&(e.props.selected=!0)}),delete r.value),r)if(e=A.test(n))break;if(e)for(n in t=i.props={},r)t[A.test(n)?n.replace(/[A-Z0-9]/,"-$&").toLowerCase():n]=r[n]}!function(){var e=i.type,t=i.props;if(t&&"string"==typeof e){var n,o={};for(var r in t)/^on(Ani|Tra|Tou)/.test(r)&&(t[r.toLowerCase()]=t[r],delete t[r]),o[r.toLowerCase()]=r;o.ondoubleclick&&(t.ondblclick=t[o.ondoubleclick],delete t[o.ondoubleclick]),o.onbeforeinput&&(t.onbeforeinput=t[o.onbeforeinput],delete t[o.onbeforeinput]),o.onchange&&("textarea"===e||"input"===e.toLowerCase()&&!/^fil|che|ra/i.test(t.type))&&(t[n=o.oninput||"oninput"]||(t[n]=t[o.onchange],delete t[o.onchange]))}}(),"function"==typeof o&&!o.m&&o.prototype&&(O(o.prototype,"componentWillMount"),O(o.prototype,"componentWillReceiveProps"),O(o.prototype,"componentWillUpdate"),o.m=!0)}M&&M(i)};function z(e,t){return e(t)}var H=u.Fragment,T={useState:n.useState,useReducer:n.useReducer,useEffect:n.useEffect,useLayoutEffect:n.useLayoutEffect,useRef:n.useRef,useImperativeHandle:n.useImperativeHandle,useMemo:n.useMemo,useCallback:n.useCallback,useContext:n.useContext,useDebugValue:n.useDebugValue,version:"16.8.0",Children:h,render:U,hydrate:P,unmountComponentAtNode:$,createPortal:w,createElement:u.createElement,createContext:u.createContext,createFactory:D,cloneElement:W,createRef:u.createRef,Fragment:u.Fragment,isValidElement:V,findDOMNode:j,Component:u.Component,PureComponent:l,memo:p,forwardRef:d,unstable_batchedUpdates:z,StrictMode:H,Suspense:y,SuspenseList:k,lazy:b};Object.keys(n).forEach(function(e){t[e]=n[e]}),t.createElement=u.createElement,t.createContext=u.createContext,t.createRef=u.createRef,t.Fragment=u.Fragment,t.Component=u.Component,t.version="16.8.0",t.Children=h,t.render=U,t.hydrate=P,t.unmountComponentAtNode=$,t.createPortal=w,t.createFactory=D,t.cloneElement=W,t.isValidElement=V,t.findDOMNode=j,t.PureComponent=l,t.memo=p,t.forwardRef=d,t.unstable_batchedUpdates=z,t.StrictMode=H,t.Suspense=y,t.SuspenseList=k,t.lazy=b,t.default=T}); 40// Goober 41!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):t((e||self).goober={})}(this,function(e){let t={data:""},r=e=>"object"==typeof window?((e?e.querySelector("#_goober"):window._goober)||Object.assign((e||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:e||t,l=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,n=/\/\*[^]*?\*\/| +/g,o=/\n+/g,a=(e,t)=>{let r="",l="",n="";for(let o in e){let s=e[o];"@"==o[0]?"i"==o[1]?r=o+" "+s+";":l+="f"==o[1]?a(s,o):o+"{"+a(s,"k"==o[1]?"":t)+"}":"object"==typeof s?l+=a(s,t?t.replace(/([^,])+/g,e=>o.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+" "+t:t)):o):null!=s&&(o=/^--/.test(o)?o:o.replace(/[A-Z]/g,"-$&").toLowerCase(),n+=a.p?a.p(o,s):o+":"+s+";")}return r+(t&&n?t+"{"+n+"}":n)+l},s={},i=e=>{if("object"==typeof e){let t="";for(let r in e)t+=r+i(e[r]);return t}return e},c=(e,t,r,c,f)=>{let p=i(e),u=s[p]||(s[p]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return"go"+r})(p));if(!s[u]){let t=p!==e?e:(e=>{let t,r,a=[{}];for(;t=l.exec(e.replace(n,""));)t[4]?a.shift():t[3]?(r=t[3].replace(o," ").trim(),a.unshift(a[0][r]=a[0][r]||{})):a[0][t[1]]=t[2].replace(o," ").trim();return a[0]})(e);
41s[u]=a(f?{["@keyframes "+u]:t}:t,r?"":"."+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(s[u],t,c),u},f=(e,t,r)=>e.reduce((e,l,n)=>{let o=t[n];if(o&&o.call){let e=o(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;o=t?"."+t:e&&"object"==typeof e?e.props?"":a(e,""):!1===e?"":e}return e+l+(null==o?"":o)},"");function p(e){let t=this||{},l=e.call?e(t.p):e;return c(l.unshift?l.raw?f(l,[].slice.call(arguments,1),t.p):l.reduce((e,r)=>Object.assign(e,r&&r.call?r(t.p):r),{}):l,r(t.target),t.g,t.o,t.k)}let u,d,g,b=p.bind({g:1}),h=p.bind({k:1});e.css=p,e.extractCss=e=>{let t=r(e),l=t.data;return t.data="",l},e.glob=b,e.keyframes=h,e.setup=function(e,t,r,l){a.p=t,u=e,d=r,g=l},e.styled=function(e,t){let r=this||{};return function(){let l=arguments;function n(o,a){let s=Object.assign({},o),i=s.className||n.className;r.p=Object.assign({theme:d&&d()},s),r.o=/ *go\d+/.test(i),s.className=p.apply(r,l)+(i?" "+i:""),t&&(s.ref=a);let c=e;return e[0]&&(c=s.as||e,delete s.as),g&&c[0]&&g(s),u(c,s)}return t?t(n):n}}}); 42 43</script>
43 44<!--LOOMI SDK--> 45 46 47 48 49 <meta charset="utf-8"> 50 <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=1.0"> 51 <meta name="theme-color" content="#131313"> 52 53 <title>Male Enhancement Erection Ring | SexTech | Award-Winning Wearable Tech</title><meta name="description" content="Our doctor designed penoscrotal rings heighten sensitivity. Gain vital health insights via data between TechRing and the app, empowering you and your healthcare provider."><link rel="canonical" href="https://myfirmtech.com/"><link rel="shortcut icon" href="//myfirmtech.com/cdn/shop/files/Firmtech_Horizontal_White_text_x2_f0cd885c-bed7-41c8-8ff6-722477d5a516.png?v=1651679988&width=96"> 54 <link rel="apple-touch-icon" href="//myfirmtech.com/cdn/shop/files/Firmtech_Horizontal_White_text_x2_f0cd885c-bed7-41c8-8ff6-722477d5a516.png?v=1651679988&width=180"><link rel="preconnect" href="https://cdn.shopify.com"> 55 <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin> 56 <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com"><link rel="preload" href="//myfirmtech.com/cdn/fonts/barlow/barlow_n7.691d1d11f150e857dcbc1c10ef03d825bc378d81.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="//myfirmtech.com/cdn/fonts/barlow/barlow_n5.a193a1990790eba0cc5cca569d23799830e90f07.woff2" as="font" type="font/woff2" crossorigin><meta property="og:type" content="website"> 57 <meta property="og:title" content="Male Enhancement Erection Ring | SexTech | Award-Winning Wearable Tech"><meta property="og:image" content="http://myfirmtech.com/cdn/shop/files/FT-Share.png?v=1721965876&width=2048"> 58 <meta property="og:image:secure_url" content="https://myfirmtech.com/cdn/shop/files/FT-Share.png?v=1721965876&width=2048"> 59 <meta property="og:image:width" content="1200"> 60 <meta property="og:image:height" content="628"><meta property="og:description" content="Our doctor designed penoscrotal rings heighten sensitivity. Gain vital health insights via data between TechRing and the app, empowering you and your healthcare provider."><meta property="og:url" content="https://myfirmtech.com/"> 61<meta property="og:site_name" content="FirmTech Inc"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Male Enhancement Erection Ring | SexTech | Award-Winning Wearable Tech"> 62 <meta name="twitter:description" content="Our doctor designed penoscrotal rings heighten sensitivity. Gain vital health insights via data between TechRing and the app, empowering you and your healthcare provider."><meta name="twitter:image" content="https://myfirmtech.com/cdn/shop/files/FT-Share.png?crop=center&height=1200&v=1721965876&width=1200"> 63 <meta name="twitter:image:alt" content="">
63<script type="application/ld+json"> 64 { 65 "@context": "https://schema.org", 66 "@type": "BreadcrumbList", 67 "itemListElement": [{ 68 "@type": "ListItem", 69 "position": 1, 70 "name": "Home", 71 "item": "https://myfirmtech.com" 72 }] 73 } 74</script>
74<script type="application/ld+json"> 75 [ 76 { 77 "@context": "https://schema.org", 78 "@type": "WebSite", 79 "name": "FirmTech Inc", 80 "url": "https:\/\/myfirmtech.com", 81 "potentialAction": { 82 "@type": "SearchAction", 83 "target": "https:\/\/myfirmtech.com\/search?q={search_term_string}", 84 "query-input": "required name=search_term_string" 85 } 86 }, 87 { 88 "@context": "https://schema.org", 89 "@type": "Organization", 90 "name": "FirmTech Inc","logo": "https:\/\/myfirmtech.com\/cdn\/shop\/files\/Firmtech_Horizontal_White_text_x2_f0cd885c-bed7-41c8-8ff6-722477d5a516.png?v=1651679988\u0026width=528","url": "https:\/\/myfirmtech.com" 91 } 92 ] 93 </script>
93<style>/* Typography (heading) */ 94 @font-face { 95 font-family: Barlow; 96 font-weight: 700; 97 font-style: normal; 98 font-display: fallback; 99 src: url("//myfirmtech.com/cdn/fonts/barlow/barlow_n7.691d1d11f150e857dcbc1c10ef03d825bc378d81.woff2") format("woff2"), 100 url("//myfirmtech.com/cdn/fonts/barlow/barlow_n7.4fdbb1cb7da0e2c2f88492243ffa2b4f91924840.woff") format("woff"); 101} 102 103@font-face { 104 font-family: Barlow; 105 font-weight: 700; 106 font-style: italic; 107 font-display: fallback; 108 src: url("//myfirmtech.com/cdn/fonts/barlow/barlow_i7.50e19d6cc2ba5146fa437a5a7443c76d5d730103.woff2") format("woff2"), 109 url("//myfirmtech.com/cdn/fonts/barlow/barlow_i7.47e9f98f1b094d912e6fd631cc3fe93d9f40964f.woff") format("woff"); 110} 111 112/* Typography (body) */ 113 @font-face { 114 font-family: Barlow; 115 font-weight: 500; 116 font-style: normal; 117 font-display: fallback; 118 src: url("//myfirmtech.com/cdn/fonts/barlow/barlow_n5.a193a1990790eba0cc5cca569d23799830e90f07.woff2") format("woff2"), 119 url("//myfirmtech.com/cdn/fonts/barlow/barlow_n5.ae31c82169b1dc0715609b8cc6a610b917808358.woff") format("woff"); 120} 121 122@font-face { 123 font-family: Barlow; 124 font-weight: 500; 125 font-style: italic; 126 font-display: fallback; 127 src: url("//myfirmtech.com/cdn/fonts/barlow/barlow_i5.714d58286997b65cd479af615cfa9bb0a117a573.woff2") format("woff2"), 128 url("//myfirmtech.com/cdn/fonts/barlow/barlow_i5.0120f77e6447d3b5df4bbec8ad8c2d029d87fb21.woff") format("woff"); 129} 130 131@font-face { 132 font-family: Barlow; 133 font-weight: 700; 134 font-style: normal; 135 font-display: fallback; 136 src: url("//myfirmtech.com/cdn/fonts/barlow/barlow_n7.691d1d11f150e857dcbc1c10ef03d825bc378d81.woff2") format("woff2"), 137 url("//myfirmtech.com/cdn/fonts/barlow/barlow_n7.4fdbb1cb7da0e2c2f88492243ffa2b4f91924840.woff") format("woff"); 138} 139 140@font-face { 141 font-family: Barlow; 142 font-weight: 700; 143 font-style: italic; 144 font-display: fallback; 145 src: url("//myfirmtech.com/cdn/fonts/barlow/barlow_i7.50e19d6cc2ba5146fa437a5a7443c76d5d730103.woff2") format("woff2"), 146 url("//myfirmtech.com/cdn/fonts/barlow/barlow_i7.47e9f98f1b094d912e6fd631cc3fe93d9f40964f.woff") format("woff"); 147} 148 149:root { 150 /** 151 * --------------------------------------------------------------------- 152 * SPACING VARIABLES 153 * 154 * We are using a spacing inspired from frameworks like Tailwind CSS. 155 * --------------------------------------------------------------------- 156 */ 157 --spacing-0-5: 0.125rem; /* 2px */ 158 --spacing-1: 0.25rem; /* 4px */ 159 --spacing-1-5: 0.375rem; /* 6px */ 160 --spacing-2: 0.5rem; /* 8px */ 161 --spacing-2-5: 0.625rem; /* 10px */ 162 --spacing-3: 0.75rem; /* 12px */ 163 --spacing-3-5: 0.875rem; /* 14px */ 164 --spacing-4: 1rem; /* 16px */ 165 --spacing-4-5: 1.125rem; /* 18px */ 166 --spacing-5: 1.25rem; /* 20px */ 167 --spacing-5-5: 1.375rem; /* 22px */ 168 --spacing-6: 1.5rem; /* 24px */ 169 --spacing-6-5: 1.625rem; /* 26px */ 170 --spacing-7: 1.75rem; /* 28px */ 171 --spacing-7-5: 1.875rem; /* 30px */ 172 --spacing-8: 2rem; /* 32px */ 173 --spacing-8-5: 2.125rem; /* 34px */ 174 --spacing-9: 2.25rem; /* 36px */ 175 --spacing-9-5: 2.375rem; /* 38px */ 176 --spacing-10: 2.5rem; /* 40px */ 177 --spacing-11: 2.75rem; /* 44px */ 178 --spacing-12: 3rem; /* 48px */ 179 --spacing-14: 3.5rem; /* 56px */ 180 --spacing-16: 4rem; /* 64px */ 181 --spacing-18: 4.5rem; /* 72px */ 182 --spacing-20: 5rem; /* 80px */ 183 --spacing-24: 6rem; /* 96px */ 184 --spacing-28: 7rem; /* 112px */ 185 --spacing-32: 8rem; /* 128px */ 186 --spacing-36: 9rem; /* 144px */ 187 --spacing-40: 10rem; /* 160px */ 188 --spacing-44: 11rem; /* 176px */ 189 --spacing-48: 12rem; /* 192px */ 190 --spacing-52: 13rem; /* 208px */ 191 --spacing-56: 14rem; /* 224px */ 192 --spacing-60: 15rem; /* 240px */ 193 --spacing-64: 16rem; /* 256px */ 194 --spacing-72: 18rem; /* 288px */ 195 --spacing-80: 20rem; /* 320px */ 196 --spacing-96: 24rem; /* 384px */ 197 198 /* Container */ 199 --container-max-width: 1300px; 200 --container-narrow-max-width: 1050px; 201 --container-gutter: var(--spacing-5); 202 --section-outer-spacing-block: var(--spacing-8); 203 --section-inner-max-spacing-block: var(--spacing-8); 204 --section-inner-spacing-inline: var(--container-gutter); 205 --section-stack-spacing-block: var(--spacing-8); 206 207 /* Grid gutter */ 208 --grid-gutter: var(--spacing-5); 209 210 /* Product list settings */ 211 --product-list-row-gap: var(--spacing-8); 212 --product-list-column-gap: var(--grid-gutter); 213 214 /* Form settings */ 215 --input-gap: var(--spacing-2); 216 --input-height: 2.625rem; 217 --input-padding-inline: var(--spacing-4); 218 219 /* Other sizes */ 220 --sticky-area-height: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px) + var(--sticky-header-enabled, 0) * var(--header-height, 0px)); 221 222 /* RTL support */ 223 --transform-logical-flip: 1; 224 --transform-origin-start: left;
225 --transform-origin-end: right; 226 227 /** 228 * --------------------------------------------------------------------- 229 * TYPOGRAPHY 230 * --------------------------------------------------------------------- 231 */ 232 233 /* Font properties */ 234 --heading-font-family: Barlow, sans-serif; 235 --heading-font-weight: 700; 236 --heading-font-style: normal; 237 --heading-text-transform: normal; 238 --heading-letter-spacing: 0.005em; 239 --text-font-family: Barlow, sans-serif; 240 --text-font-weight: 500; 241 --text-font-style: normal; 242 --text-letter-spacing: 0.0em; 243 244 /* Font sizes */ 245 --text-h0: 3rem; 246 --text-h1: 2.5rem; 247 --text-h2: 2rem; 248 --text-h3: 1.5rem; 249 --text-h4: 1.375rem; 250 --text-h5: 1.125rem; 251 --text-h6: 1rem; 252 --text-xs: 0.8125rem; 253 --text-sm: 0.875rem; 254 --text-base: 1.0rem; 255 --text-lg: 1.25rem; 256 257 /** 258 * --------------------------------------------------------------------- 259 * COLORS 260 * --------------------------------------------------------------------- 261 */ 262 263 /* Color settings */--accent: 235 36 60; 264 --text-primary: 26 26 26; 265 --background-primary: 246 246 246; 266 --dialog-background: 255 255 255; 267 --border-color: var(--text-color, var(--text-primary)) / 0.12; 268 269 /* Button colors */ 270 --button-background-primary: 235 36 60; 271 --button-text-primary: 255 255 255; 272 --button-background-secondary: 30 19 43; 273 --button-text-secondary: 255 255 255; 274 275 /* Status colors */ 276 --success-background: 224 244 232; 277 --success-text: 0 163 65; 278 --warning-background: 255 246 233; 279 --warning-text: 255 183 74; 280 --error-background: 254 231 231; 281 --error-text: 248 58 58; 282 283 /* Product colors */ 284 --on-sale-text: 248 58 58; 285 --on-sale-badge-background: 248 58 58; 286 --on-sale-badge-text: 255 255 255; 287 --sold-out-badge-background: 0 0 0; 288 --sold-out-badge-text: 255 255 255; 289 --primary-badge-background: 186 24 27; 290 --primary-badge-text: 255 255 255; 291 --star-color: 235 36 60; 292 --product-card-background: 255 255 255; 293 --product-card-text: 26 26 26; 294 295 /* Header colors */ 296 --header-background: 19 19 19; 297 --header-text: 255 255 255; 298 299 /* Footer colors */ 300 --footer-background: 145 21 23; 301 --footer-text: 255 255 255; 302 303 /* Rounded variables (used for border radius) */ 304 --rounded-xs: 0.25rem; 305 --rounded-sm: 0.375rem; 306 --rounded: 0.75rem; 307 --rounded-lg: 1.5rem; 308 --rounded-full: 9999px; 309 310 --rounded-button: 1.875rem; 311 --rounded-input: 0.5rem; 312 313 /* Box shadow */ 314 --shadow-sm: 0 2px 8px rgb(var(--text-primary) / 0.1); 315 --shadow: 0 5px 15px rgb(var(--text-primary) / 0.1); 316 --shadow-md: 0 5px 30px rgb(var(--text-primary) / 0.1); 317 --shadow-block: 0px 16px 50px rgb(var(--text-primary) / 0.1); 318 319 /** 320 * --------------------------------------------------------------------- 321 * OTHER 322 * --------------------------------------------------------------------- 323 */ 324 325 --cursor-close-svg-url: url(//myfirmtech.com/cdn/shop/t/24/assets/cursor-close.svg?v=147174565022153725511721079037); 326 --cursor-zoom-in-svg-url: url(//myfirmtech.com/cdn/shop/t/24/assets/cursor-zoom-in.svg?v=154953035094101115921721079037); 327 --cursor-zoom-out-svg-url: url(//myfirmtech.com/cdn/shop/t/24/assets/cursor-zoom-out.svg?v=16155520337305705181721079037); 328 --checkmark-svg-url: url(//myfirmtech.com/cdn/shop/t/24/assets/checkmark.svg?v=77552481021870063511721079037); 329 } 330 331 [dir="rtl"]:root { 332 /* RTL support */ 333 --transform-logical-flip: -1; 334 --transform-origin-start: right; 335 --transform-origin-end: left; 336 } 337 338 @media screen and (min-width: 700px) { 339 :root { 340 /* Typography (font size) */ 341 --text-h0: 4rem; 342 --text-h1: 3rem; 343 --text-h2: 2.5rem; 344 --text-h3: 2rem; 345 --text-h4: 1.625rem; 346 --text-h5: 1.25rem; 347 --text-h6: 1.125rem; 348 349 --text-xs: 0.75rem; 350 --text-sm: 0.875rem; 351 --text-base: 1.0rem; 352 --text-lg: 1.25rem; 353 354 /* Spacing */ 355 --container-gutter: 2rem; 356 --section-outer-spacing-block: var(--spacing-12); 357 --section-inner-max-spacing-block: var(--spacing-10); 358 --section-inner-spacing-inline: var(--spacing-10); 359 --section-stack-spacing-block: var(--spacing-10); 360 361 /* Grid gutter */ 362 --grid-gutter: var(--spacing-6); 363 364 /* Product list settings */ 365 --product-list-row-gap: var(--spacing-12); 366 367 /* Form settings */ 368 --input-gap: 1rem; 369 --input-height: 3.125rem; 370 --input-padding-inline: var(--spacing-5); 371 } 372 } 373 374 @media screen and (min-width: 1000px) { 375 :root { 376 /* Spacing settings */ 377 --container-gutter: var(--spacing-12); 378 --section-outer-spacing-block: var(--spacing-14); 379 --section-inner-max-spacing-block: var(--spacing-12); 380 --section-inner-spacing-inline: var(--spacing-12); 381 --section-stack-spacing-block: var(--spacing-10); 382 } 383 } 384 385 @media screen and (min-width: 1150px) { 386 :root { 387 /* Spacing settings */ 388 --container-gutter: var(--spacing-12); 389 --section-outer-spacing-block: var(--spacing-14); 390 --section-inner-max-spacing-block: var(--spacing-12); 391 --section-inner-spacing-inline: var(--spacing-12); 392 --section-stack-spacing-block: var(--spacing-12); 393 } 394 } 395 396 @media screen and (min-width: 1400px) { 397 :root { 398 /* Typography (font size) */ 399 --text-h0: 5rem; 400 --text-h1: 3.75rem; 401 --text-h2: 3rem; 402 --text-h3: 2.25rem; 403 --text-h4: 2rem; 404 --text-h5: 1.5rem; 405 --text-h6: 1.25rem; 406 407 --section-outer-spacing-block: var(--spacing-16); 408 --section-inner-max-spacing-block: var(--spacing-14); 409 --section-inner-spacing-inline: var(--spacing-14); 410 } 411 } 412 413 @media screen and (min-width: 1600px) { 414 :root { 415 --section-outer-spacing-block: var(--spacing-16); 416 --section-inner-max-spacing-block: var(--spacing-16); 417 --section-inner-spacing-inline: var(--spacing-16); 418 } 419 } 420 421 /** 422 * --------------------------------------------------------------------- 423 * LIQUID DEPENDANT CSS 424 * 425 * Our main CSS is Liquid free, but some very specific features depend on 426 * theme settings, so we have them here 427 * --------------------------------------------------------------------- 428 */@media screen and (pointer: fine) {
429 .button:not([disabled]):hover, .btn:not([disabled]):hover, .shopify-payment-button__button--unbranded:not([disabled]):hover { 430 --button-background-opacity: 0.85; 431 } 432 433 .button--subdued:not([disabled]):hover { 434 --button-background: var(--text-color) / .05 !important; 435 } 436 }</style>
436<script> 437 // This allows to expose several variables to the global scope, to be used in scripts 438 window.themeVariables = { 439 settings: { 440 showPageTransition: false, 441 headingApparition: "split_fade", 442 pageType: "index", 443 moneyFormat: "${{amount}}", 444 moneyWithCurrencyFormat: "${{amount}} USD", 445 currencyCodeEnabled: true, 446 cartType: "drawer", 447 showDiscount: true, 448 discountMode: "saving" 449 }, 450 451 strings: { 452 accessibilityClose: "Close", 453 accessibilityNext: "Next", 454 accessibilityPrevious: "Previous", 455 addToCartButton: "Add to cart", 456 soldOutButton: "Sold out", 457 preOrderButton: "Pre-order", 458 unavailableButton: "Unavailable", 459 closeGallery: "Close gallery", 460 zoomGallery: "Zoom", 461 errorGallery: "Image cannot be loaded", 462 soldOutBadge: "Sold out", 463 discountBadge: "Save @@", 464 sku: "SKU:", 465 searchNoResults: "No results could be found.", 466 addOrderNote: "Add order note", 467 editOrderNote: "Edit order note", 468 shippingEstimatorNoResults: "Sorry, we do not ship to your address.", 469 shippingEstimatorOneResult: "There is one shipping rate for your address:", 470 shippingEstimatorMultipleResults: "There are several shipping rates for your address:", 471 shippingEstimatorError: "One or more error occurred while retrieving shipping rates:" 472 }, 473 474 breakpoints: { 475 'sm': 'screen and (min-width: 700px)', 476 'md': 'screen and (min-width: 1000px)', 477 'lg': 'screen and (min-width: 1150px)', 478 'xl': 'screen and (min-width: 1400px)', 479 480 'sm-max': 'screen and (max-width: 699px)', 481 'md-max': 'screen and (max-width: 999px)', 482 'lg-max': 'screen and (max-width: 1149px)', 483 'xl-max': 'screen and (max-width: 1399px)' 484 } 485 };// For detecting native share 486 document.documentElement.classList.add(`native-share--${navigator.share ? 'enabled' : 'disabled'}`);</script>
486<script type="module" src="//myfirmtech.com/cdn/shop/t/24/assets/vendor.min.js?v=52426788336887041471721079037"></script>
486 487
487<script type="module" src="//myfirmtech.com/cdn/shop/t/24/assets/theme.js?v=47638980506638799551749778884"></script>
487 488
488<script type="module" src="//myfirmtech.com/cdn/shop/t/24/assets/sections.js?v=13187236767460700511749824325"></script>
488 489 490 491 492
492<script> 493 (function(w,d,t,r,u) 494 { 495 var f,n,i; 496 w[u]=w[u]||[],f=function() 497 { 498 var o={ti:"187149419", enableAutoSpaTracking: true}; 499 o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad") 500 }, 501 n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function() 502 { 503 var s=this.readyState; 504 s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null) 505 }, 506 i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i) 507 }) 508 (window,document,"script","//bat.bing.com/bat.js","uetq"); 509</script>
509 510
510<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
510<meta name="google-site-verification" content="WfoAOq_vi8AnViVe3ylPY_QgCxTj-bnY_YkHe4Gh4jE"> 511<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/57731776662/digital_wallets/dialog"> 512<meta id="in-context-paypal-metadata" data-shop-id="57731776662" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 513<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
513<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=862519446"></script>
513 514<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
515<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=862519446&shop_id=57731776662" crossorigin="anonymous"></script>
vendor: 1 bytes, line 515
515
516<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":57731776662,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/57731776662","merchantName":"FirmTech Inc","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"FirmTech Inc","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 516
516
517<script id="shopify-features" type="application/json">{"accessToken":"e164e7e7273cc62fe81003c0a02485fc","betas":["rich-media-storefront-analytics"],"domain":"myfirmtech.com","predictiveSearch":true,"shopId":57731776662,"locale":"en"}</script>
vendor: 1 bytes, line 517
517
518<script>var Shopify = Shopify || {}; 519Shopify.shop = "myfirmtech.myshopify.com"; 520Shopify.locale = "en"; 521Shopify.currency = {"active":"USD","rate":"1.0"}; 522Shopify.country = "US"; 523Shopify.theme = {"name":"Live - Impact - FirmTech 07-20-26","id":137274720406,"schema_name":"Impact","schema_version":"5.4.1","theme_store_id":1190,"role":"main"}; 524Shopify.theme.handle = "null"; 525Shopify.theme.style = {"id":null,"handle":null}; 526Shopify.cdnHost = "myfirmtech.com/cdn"; 527Shopify.routes = Shopify.routes || {}; 528Shopify.routes.root = "/"; 529Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 530Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 531Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 532Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 532
532
533<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 533
533
534<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 534
534
535<script> 536 window.ShopifyPay = window.ShopifyPay || {}; 537 window.ShopifyPay.apiHost = "shop.app\/pay"; 538 window.ShopifyPay.redirectState = null; 539</script>
vendor: 1 bytes, line 539
539
540<script> 541 window.Shopify = window.Shopify || {}; 542 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 543 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 544 window.Shopify.SignInWithShop.eligible = true; 545</script>
vendor: 1 bytes, line 545
545
546<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
vendor: 1 bytes, line 546
546
547<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 547
547
548<script type="module"> 549 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 550 551 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 552 553</script>
vendor: 1 bytes, line 553
553
554<script> 555 window.Shopify = window.Shopify || {}; 556 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 557 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"]}; 558</script>
vendor: 1 bytes, line 558
558
559<script>(function() { 560 var isLoaded = false; 561 function asyncLoad() { 562 if (isLoaded) return; 563 isLoaded = true; 564 var urls = ["https:\/\/front.optimonk.com\/public\/167781\/shopify\/preload.js?shop=myfirmtech.myshopify.com","https:\/\/cstt-app.herokuapp.com\/get_script\/d2227e1e68d411eea75e46bccb993163.js?v=44036\u0026shop=myfirmtech.myshopify.com","https:\/\/cdn-bundler.nice-team.net\/app\/js\/bundler.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.richpanel.com\/js\/richpanel_shopify_script.js?appClientId=firmtech7851\u0026tenantId=firmtech785\u0026shop=myfirmtech.myshopify.com\u0026shop=myfirmtech.myshopify.com","https:\/\/cdn.provesrc.com\/provesrc.js?apiKey=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50SWQiOiI2NWVmYTYwYzQ4MDNjMjQ1NDlhM2VjODciLCJpYXQiOjE3MTAyMDQ0Mjh9.cm2tOXp3xa22tN-jGgPLHkId3vyTFw_RpMG0JM4dKYk\u0026shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/shopify-extension.getredo.com\/main.js?
564widget_id=6mi7n2i5bpc3e34\u0026shop=myfirmtech.myshopify.com","https:\/\/cdn.zigpoll.com\/zigpoll-shopify-embed.js?accountId=67aa56ea6328469350772c3a\u0026shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=myfirmtech.myshopify.com"]; 565 for (var i = 0; i < urls.length; i++) { 566 var s = document.createElement('script'); 567 s.type = 'text/javascript'; 568 s.async = true; 569 s.src = urls[i]; 570 var x = document.getElementsByTagName('script')[0]; 571 x.parentNode.insertBefore(s, x); 572 } 573 }; 574 if(window.attachEvent) { 575 window.attachEvent('onload', asyncLoad); 576 } else { 577 window.addEventListener('load', asyncLoad, false); 578 } 579})();</script>
vendor: 1 bytes, line 579
579
580<script id="__st">var __st={"a":57731776662,"offset":-25200,"reqid":"f6ef0b0c-e994-43aa-82ad-97bc6fdf99d9-1791067573","pageurl":"myfirmtech.com\/","u":"5b89812bd616","p":"home"};</script>
vendor: 1 bytes, line 580
580
581<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 581
581
582<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 582
582
583<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//myfirmtech.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 583
583
584<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 = "//myfirmtech.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>
584<script crossorigin="anonymous" defer="defer" src="//myfirmtech.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 584
584
585<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 585
585
586<script> 587 window.Shopify = window.Shopify || {}; 588 window.Shopify.MCP = window.Shopify.MCP || {}; 589 window.Shopify.MCP.enabled = true; 590 window.Shopify.MCP.shop = "myfirmtech.myshopify.com"; 591 window.Shopify.MCP.mcpEndpoint = "https:\/\/myfirmtech.com\/api\/mcp"; 592 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"]}}]; 593</script>
vendor: 1 bytes, line 593
593
594<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("\/\/myfirmtech.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 595</script>
vendor: 1 bytes, line 595
595
596<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://myfirmtech.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 597</script>
vendor: 1 bytes, line 597
597
598<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 599 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); 600</script>
vendor: 1 bytes, line 600
600
601<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})}})); 602</script>
602 603<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://myfirmtech.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 604<style id="shopify-accelerated-checkout-cart"> 605 #shopify-buyer-consent { 606 margin-top: 1em; 607 display: inline-block; 608 width: 100%; 609} 610 611#shopify-buyer-consent.hidden { 612 display: none; 613} 614 615#shopify-subscription-policy-button { 616 background: none; 617 border: none; 618 padding: 0; 619 text-decoration: underline; 620 font-size: inherit; 621 cursor: pointer; 622} 623 624#shopify-subscription-policy-button::before { 625 box-shadow: none; 626} 627 628 </style> 629
630<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
630 631<link href="//myfirmtech.com/cdn/shop/t/24/assets/theme.css?v=24799772014905249381776373685" rel="stylesheet" type="text/css" media="all" />
631<script id="vtag-ai-js" async src="https://r2.leadsy.ai/tag.js" data-pid="BhjecDF73A6rGE6M" data-version="062024"></script>
631 632 633 634<!-- Hotjar Tracking Code for https://myfirmtech.com/ -->
635<script>
vendor: 125 bytes, lines 635-638
635 636 (function(h,o,t,j,a,r){ 637 h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; 638 h._hjSettings={hjid:
6383690670
vendor: 258 bytes, lines 638-643
638,hjsv:6}; 639 a=o.getElementsByTagName('head')[0]; 640 r=o.createElement('script');r.async=1; 641 r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; 642 a.appendChild(r); 643 })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
644</script>
644 645 646<!-- ahrefs Tracking Code for https://myfirmtech.com/ --> 647
648<script src="https://analytics.ahrefs.com/analytics.js" data-key="TTEs4rt41KwF07Yr0SReDw" defer="true"></script>
648 649
650<script> 651 window.uetq=window.uetq||[]; 652 window.uetq.push('set', { 'pid': { 653 'em': checkout.email, 654 'ph': checkout.billing_address.phone 655 }}); 656</script>
656 657 658<!-- sitebehavior Tracking Code for https://myfirmtech.com/ -->
659<script type="text/javascript"> 660 ( 661 function() { 662 try { 663 if(window.location && window.location.search && window.location.search.indexOf('capture-sitebehaviour-heatmap') !== -1) { 664 sessionStorage.setItem('capture-sitebehaviour-heatmap', '_'); 665 } 666 667 var sbSiteSecret = 'fef03c24-f5fa-4c72-b227-599c2b8e2a4f'; 668 window.sitebehaviourTrackingSecret = sbSiteSecret; 669 var scriptElement = document.createElement('script'); 670 scriptElement.defer = true; 671 scriptElement.id = 'site-behaviour-script-v2'; 672 scriptElement.src = 'https://sitebehaviour-cdn.fra1.cdn.digitaloceanspaces.com/index.min.js?sitebehaviour-secret=' + sbSiteSecret; 673 document.head.appendChild(scriptElement); 674 } 675 catch (e) {console.error(e)} 676 } 677 )() 678</script>
vendor: 1 bytes, line 678
678
679<script async type="text/javascript" src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=Y3Ych4"></script>
679 680 <!-- BEGIN app block: shopify://apps/pandectes-gdpr/blocks/banner/58c0baa2-6cc1-480c-9ea6-38d6d559556a --> 681 682 683 684
684<script> 685 if (!window.pandectesRulesSettings) { 686 window.pandectesRulesSettings = {"version":"5","timestamp":1777992186971,"store":{"id":57731776662,"plan":"plus","primaryLocale":"en","headless":false,"useGeolocation":false,"checkoutRootDomain":"","storefrontRootDomain":"","storefrontAccessToken":""},"banner":{"enabled":true},"regions":{"strict":"*","visible":"*"},"storage":{"type":"http","domain":"","duration":365,"lastReset":1770338597},"gpc":{"enabled":true},"klaviyo":{"enabled":false},"customEvent":{"enabled":false},"rakuten":{"enabled":false,"cmp":false,"ccpa":false},"facebook":{"enabled":false,"id":""},"amazon":{"enabled":false},"microsoft":{"uet":{"enabled":false,"tags":""},"clarity":{"enabled":false,"id":""}},"google":{"enabled":false,"gtmId":"","ga4Id":"","adsId":"","gtmOnly":false,"adStorageCategory":4,"analyticsStorageCategory":2,"functionalityStorageCategory":1,"personalizationStorageCategory":1,"securityStorageCategory":0,"redactData":false,"urlPassthrough":false,"dataLayerName":"dataLayer","waitForUpdate":500,"sendPageView":true,"debugMode":false,"basicMode":false},"blocker":{"enabled":false,"scripts":{"0":[],"1":[],"2":[],"4":[],"8":[]},"css":{"0":[],"1":[],"2":[],"4":[],"8":[]},"iframes":{"0":[],"1":[],"2":[],"4":[],"8":[]},"pixels":{"0":[],"1":[],"2":[],"4":[],"8":[]}}}; 687 const rulesScript = document.createElement('script'); 688 689 rulesScript.src = "https://cdn.shopify.com/extensions/01a0fbe8-0a9b-7761-b23e-083cbd79779f/gdpr-cookie-consent-412/assets/pandectes-rules-latest.js"; 690 691 const firstChild = document.head.firstChild; 692 document.head.insertBefore(rulesScript, firstChild); 693 } 694 </script>
694 695 696 697
697<script defer src='https://cdn.shopify.com/extensions/01a0fbe8-0a9b-7761-b23e-083cbd79779f/gdpr-cookie-consent-412/assets/pandectes-core-latest.js'></script>
697 698 699
699<script> 700 (() => { 701 const isLivePreview = locateLivePreviewParam(); 702 let previewUrl = 'https://app.pandect.es/js/pandectes-live-site-preview.js'; 703 704 705 function locateLivePreviewParam(paramName = 'pandectesLivePreview') { 706 const fromUrl = new URLSearchParams(window.location.search).get(paramName); 707 if (fromUrl) { 708 try { 709 sessionStorage.setItem(paramName, fromUrl); 710 } catch { 711 // storage disabled 712 } 713 return fromUrl; 714 } 715 return sessionStorage.getItem(paramName); 716 } 717 718 /** Injects the preview helper script when live preview is active (URL or sessionStorage). */ 719 function appendLivePreviewScriptIfNeeded(previewModeScriptUrl) { 720 if (!isLivePreview) return; 721 if (document.head.querySelector('script[data-pandectes-live-preview]')) return; 722 const script = document.createElement('script'); 723 script.src = previewModeScriptUrl; 724 script.async = true; 725 script.setAttribute('data-pandectes-live-preview', ''); 726 document.head.appendChild(script); 727 } 728 729 window.pandectesBannerSettings = {"version":"5","timestamp":1781539576,"store":{"id":57731776662,"plan":"plus","primaryLocale":"en","headless":false,"useGeolocation":false,"checkoutRootDomain":"","storefrontRootDomain":"","storefrontAccessToken":""},"impressions":{"enabled":true,"timezone":"America/Denver"},"visibility":{"delay":0,"enabled":true,"startHidden":[],"botsFriendly":false,"disableDesignMode":false,"adminMode":false},"regions":{"strict":"*","visible":"*"},"consent":{"redirectOnDeny":false,"reloadOnConsent":false,"broadcastChannel":false,"redirectOnDenyUrl":"https://www.pandectes.io","shopify":true},"theme":{"logos":{"custom":false,"customWidget":false,"banner":"//myfirmtech.myshopify.com/cdn/shop/files/pandectes-banner-logo.png?v=1781539576","widget":"//myfirmtech.myshopify.com/cdn/shop/files/pandectes-reopen-logo.png?v=1781539576"},"mode":"light","border":0,"variables":":host { --float: 16px; --font-size: 14px; --duration: 250ms; --padding: 20px; --radius-dialog:8px; --radius-button:8px; --border-button: 2px; --font-family: inherit; --font-weight-button: 400; --color-base-100: oklch(100% 0 0);--color-base-200: oklch(97% 0 0);--color-base-300: oklch(94% 0 0);--color-base-content: oklch(7.6% 0 0);--color-primary: oklch(7.6% 0 0);--color-primary-content: oklch(100% 0 0);--color-secondary: oklch(7.6% 0 0);--color-secondary-content: oklch(100% 0 0);--color-accent: oklch(7.6% 0 0);--color-accent-content: oklch(100% 0 0);--color-neutral: oklch(7.6% 0 0);--color-neutral-content: oklch(100% 0 0);; }","shadows":true,"isModal":false,"scrollLock":true,"useAnimations":true,"buttons":{"size":"md","border":2,"radius":8,"variants":{"primary":"filled","secondary":"outlined"}},"zIndex":2147483647,"showPoweredBy":true},"close":{"triggers":[],"action":"dismiss","pixels":200,"timeout":0},"language":{"multilingual":false,"detection":"locale","fallback":"en","supported":["en"],"allowChange":false},"widget":{"enabled":true,"position":"bottom left","action":"reopen","customTrigger":false},"dialogs":{"notice":{"style":{"type":"bar","layout":"horizontal","position":"bottom","animation":"animation-zoom","size":0},"buttons":{"primary":["allow","deny"],"secondary":[]},"features":{"hideHeader":false,"alignCenter":false,"flipButtons":false,"expandableIntro":false,"inlineLinks":false}},"preferences":false,"status":false},"links":{"links":[{"id":"policy","url":"/policies/privacy-policy"}],"target":"_self","respectLocale":false},"storage":{"type":"http","domain":"","duration":365,"lastReset":1770338597},"texts":{"en":{"buttons":{"showLess":"Show less","showMore":"Show more"},"links":{"policy":"Privacy Policy ","google":"Google's Privacy Terms","imprint":"Imprint"},"categories":[{"title":"Strictly necessary cookies","description":"These cookies are essential in order to enable you to move around the website and use its features, such as accessing secure areas of the website. The website cannot function properly without these cookies."}
729,{"title":"Functional cookies","description":"These cookies enable the site to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly."},{"title":"Performance cookies","description":"These cookies enable us to monitor and improve the performance of our website. For example, they allow us to count visits, identify traffic sources and see which parts of the site are most popular."},{"title":"Targeting cookies","description":"These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising."}],"notice":{"title":"We respect your privacy","message":"We use cookies to enhance your experience, analyze traffic, and personalize content. Some cookies are essential, while others help us understand how you interact with our site. You can manage your preferences at any time. ","dismiss":"Ok","allow":"Accept","deny":"Decline","preferences":"Preferences"},"preferences":{"title":"Manage consent preferences","message":"We use cookies to optimize website functionality, analyze the performance, and provide personalized experience to you. Some cookies are essential to make the website operate and function correctly. Those cookies cannot be disabled. In this window you can manage your preference of cookies.","cookieDetails":"Cookies details","alwaysActive":"Always allowed","deny":"Deny all","allow":"Accept all","custom":"Save preferences","dismiss":"Close"},"status":{"title":"Cookie settings","message":"Your current state","allow":"Accept all","deny":"Deny all","dismiss":"Close","reopen":"Change your consent","consentDate":"C
729onsent date","consentId":"Your consent ID","hideDetails":"Hide details","showDetails":"Show details","noConsent":"No consent"},"declaration":{"name":"Name","type":"Type","vendor":"Provider","purpose":"Purpose","retention":"Retention","expirations":{"declSeconds":"seconds","declMinutes":"minutes","declHours":"hours","declDays":"days","declWeeks":"week(s)","declMonths":"months","declYears":"years","declSession":"Session"}},"cookies":{"ar_debug":"Checks whether a technical debugger-cookie is present.","bito":"Used for advertising purposes.","bitoIsSecure":"Enables third-party advertisers to target visitors with relevant ads.","cart":"Contains information related to the user's cart.","cart_currency":"Used after a checkout is completed to initialize a new empty cart with the same currency as the one just used.","cookietest":"Used to check if the browser allows cookies.","discount_code":"Stores a discount code (received from an online store visit with a URL parameter) in order to the next checkout.","FPAU":"Assigns a specific ID to the visitor for user visit analysis and statistics.","FPID":"Registers statistical data on users' behavior for internal analytics.","FPLC":"Cross-domain linker cookie used for tracking. It is readable by JavaScript.","guest_id":"Identifies and tracks website visitors, collecting ad preference data.","guest_id_ads":"Used for advertising purposes when the user is logged out.","guest_id_marketing":"Used for advertising purposes when users are logged out.","identity-state":"Stores state before redirecting customers to identity authentication.\t","keep_alive":"Used when international domain redirection is enabled to determine if a request is the first one of a session.","localization":"Used to localize the cart to the correct country.","login_with_
729shop_finalize":"Used to facilitate login with Shop.","master_device_id":"Permanent device identifier.","muc_ads":"Used to show relevant offers based on user visits via X.","MUID":"Cookie is placed by Microsoft to track visits across websites.","NID":"Used to collect website statistics and track conversion rates.","optimonkclient":"Used for implementing pop-up ads and storing visitor behavior on campaigns.","optimonkclientid":"Stores a unique identifier for visitor analytics.","optimonksession":"Stores session start time for pop-up ads.","order":"Used to allow access to the data of the order details page of the buyer.","personalization_id":"Identifies users for personalizing services and ads.","psuid":"Used for generating unique IDs to count impressions and manage notification rules.","shopify_override_user_locale":"Used as a mechanism to set User locale in admin.","shopify_pay":"Used to log in a buyer into Shop Pay when they come back to checkout on the same store.","shopify_pay_redirect":"Used to accelerate the checkout process when the buyer has a Shop Pay account.","shop_analytics":"Contains the required buyer information for analytics in Shop.","shop_pay_accelerated":"Indicates if a buyer is eligible for Shop Pay accelerated checkout.","skip_shop_pay":"It prevents a customer's checkout from automatically being set to default, ensuring all payment options are shown.","storefront_digest":"Stores a digest of the storefront password, allowing merchants to preview their storefront while it's password protected.","user":"Used in connection with Shop login.","user_cross_site":"Used in connection with Shop login.","_ab":"Used to control when the admin bar is shown on the storefront.","_abv":"Persist the collapsed state of the admin bar.","_dcid":"Collects user behavior data across websites to optimize advertisement relevance.","_fbp":"Cookie is placed by Facebook to track visits across websites.","_ga":"Cookie is set by Google Analytics with unknown functionality","_identity_session":"Contains the identity session identifier of the user.","_landing_page":"Capture the landing page of visitor when they come from other sites.","_master_udr":"Permanent device identifier.","_merchant_analytics":"Contains analytics data for the merchant session.","_merchant_essential":"Contains essential information for the correct functionality of merchant surfaces such as the admin area.","_orig_referrer":"Allows merchant to identify where people are visiting them from.","_shopify_analytics":"Contains analytics data for buyer surfaces such as the storefront or checkout.","_shopify_country":"Used for Plus shops where pricing currency/country is set from GeoIP by helping avoid GeoIP lookups after the first request.","_shopify_essential":"Contains essential information for the correct functionality of a store such as session and checkout information and anti-tampering data.","_shopify_essential_\t":"Contains an opaque token that is used to identify a device for all essential purposes.","_shopify_marketing":"Contains marketing data for buyer surfaces such as the storefront or checkout.","_shopify_s":"Used to identify a given browser session/shop combination. Duration is 30 minute rolling expiry of last use.","_shopify_test":"A test cookie used by Shopify to verify the store's setup.","_shopify_y":"Shopify analytics.","_shop_app_essential":"Contains essential information for the correct functionality of Shop.app.","_tracking_consent":"Used to store a user's preferences if a merchant has set up privacy rules in the visitor's region.","_uetsid":"This cookie is used by Bing to determine what ads should be shown that may be relevant to the end user perusing the site.","_uetvid":"Used to track visitors on multiple websites, in order to present relevant advertisement based on the visitor's preferences.","__kla_id":"Tracks when someone clicks through a Klaviyo email to your website."}}},"categories":[{"bitwise":0},{"bitwise":1},{"bitwise":2},{"bitwise":4}],"cookies":[{"name":"localization","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"cart_currency","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"2 week(s)","unit":"declWeeks","expires":2},{"name":"_shopify_s","domain":".myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"30 minute(s)","unit":"declMinutes","expires":30},{"name":"_shopify_y","domain":".myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_ga","domain":".myfirmtech.com","type":"http","vendor":"Google","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"__kla_id","domain":"myfirmtech.com","type":"http","vendor":"Klaviyo","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"MUID","domain":".bing.com","type":"http","vendor":"Microsoft","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_uetsid","domain":".myfirmtech.com","type":"http","vendor":"Bing","category":3,"retention":"1 day(s)","unit":"declDays","expires":1},{"name":"_uetvid","domain":".myfirmtech.com","type":"http","vendor":"Bing","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_fbp","domain":".myfirmtech.com","type":"http","vendor":"Facebook","category":3,"retention":"3 month(s)","unit":"declMonths","expires":3},{"name":"cart","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 month(s)","unit":"declMonths","expires":1},{"name":"_shopify_essential","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_shopify_s","domain":"com","type":"http","vendor":"Shopify","category":2,"retention":"Session","unit":"declYears","expires":1},{"name":"_ab","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"master_device_id","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"storefront_digest","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"keep_alive","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"Session","unit":"declSeconds","expires":1},{"name":"_tracking_consent","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_shopify_country","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"30 minute(s)","unit":"declMinutes","expires":30},{"name":"shopify_pay_redirect","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_orig_referrer","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"2 week(s)","unit":"declWeeks","expires":2},{"name":"_landing_page","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"2 week(s)","unit":"declWeeks","expires":2},{"name":"shopify_pay","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"discount_code","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"Session","unit":"declDays","expires":1},{"name":"order","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"3 week(s)","unit":"declWeeks","expires":3},{"name":"shop_analytics","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"shop_pay_accelerated","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_abv","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_identity_session","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"2 year(s)","unit":"declYears","expires":2}
729,{"name":"login_with_shop_finalize","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"5 minute(s)","unit":"declMinutes","expires":5},{"name":"_master_udr","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"Session","unit":"declSeconds","expires":1},{"name":"user_cross_site","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"user","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"ar_debug","domain":".region1.google-analytics.com","type":"http","vendor":"Teads","category":3,"retention":"3 month(s)","unit":"declMonths","expires":3},{"name":"psuid","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_shopify_analytics","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_shop_app_essential","domain":".shop.app","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"shopify_client_id","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"ps65efa60c4803c24549a3ec87","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"5 day(s)","unit":"declDays","expires":5},{"name":"guest_id_ads","domain":".twitter.com","type":"http","vendor":"Twitter","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"personalization_id","domain":".twitter.com","type":"http","vendor":"X","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"guest_id_marketing","domain":".twitter.com","type":"http","vendor":"Twitter","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"__eventn_id","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"guest_id","domain":".twitter.com","type":"http","vendor":"X","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_hjSessionUser_*","domain":".myfirmtech.com","type":"http","vendor":"Hotjar","category":1,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"muc_ads","domain":".t.co","type":"http","vendor":"X","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_hjSession_*","domain":".myfirmtech.com","type":"http","vendor":"Hotjar","category":1,"retention":"30 minute(s)","unit":"declMinutes","expires":30},{"name":"FPID","domain":".myfirmtech.com","type":"http","vendor":"Google","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_ga_*","domain":".myfirmtech.com","type":"http","vendor":"Google","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"fpId","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"2 day(s)","unit":"declDays","expires":2},{"name":"FPLC","domain":".myfirmtech.com","type":"http","vendor":"Google","category":2,"retention":"20 hour(s)","unit":"declHours","expires":20},{"name":"FPGSID","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"30 minute(s)","unit":"declMinutes","expires":30},{"name":"FPAU","domain":".myfirmtech.com","type":"http","vendor":"Google","category":2,"retention":"3 month(s)","unit":"declMonths","expires":3},{"name":"_dcid","domain":".myfirmtech.com","type":"http","vendor":"Google","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"optiMonkClientId","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"bitoIsSecure","domain":".bidr.io","type":"http","vendor":"Beeswax","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"returngo_customer_id","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 day(s)","unit":"declDays","expires":1},{"name":"rp_customer_id","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"36 second(s)","unit":"declSeconds","expires":36},{"name":"optiMonkClient","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_gtmeec","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"3 month(s)","unit":"declMonths","expires":3},{"name":"bito","domain":".bidr.io","type":"http","vendor":"Beeswax","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"rp_email","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"36 second(s)","unit":"declSeconds","expires":36},{"name":"_rsession","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"30 minute(s)","unit":"declMinutes","expires":30},{"name":"ps65efa60c4803c24549a3ec87","domain":".provesrc.com","type":"http","vendor":"Unknown","category":4,"retention":"1 day(s)","unit":"declDays","expires":1},{"name":"rp_lastName","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"36 second(s)","unit":"declSeconds","expires":36},{"name":"rp_firstName","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"36 second(s)","unit":"declSeconds","expires":36},{"name":"tuid","domain":".a.usbrowserspeed.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"rptkn","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"rpdid","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"rpsid","domain":".myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"6 hour(s)","unit":"declHours","expires":6},{"name":"psuid","domain":".provesrc.com","type":"http","vendor":"Unknown","category":2,"retention":"4 hour(s)","unit":"declHours","expires":4},{"name":"_ruid","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"data-*","domain":"myfirmtech.com","type":"http","vendor":"Media.net","category":3,"retention":"1 week(s)","unit":"declWeeks","expires":1},{"name":"optiMonkSession","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"Session","unit":"declYears","expires":1},{"name":"_shopify_test","domain":"com","type":"http","vendor":"Shopify","category":0,"retention":"Session","unit":"declYears","expires":1},{"name":"_shopify_test","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"Session","unit":"declYears","expires":1},{"name":"auth_state_*","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"25 minute(s)","unit":"declMinutes","expires":25},{"name":"cookietest","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":0,"retention":"Session","unit":"declYears","expires":1},{"name":"_gd*","domain":"myfirmtech.com","type":"http","vendor":"Google","category":2,"retention":"Session","unit":"declYears","expires":1},{"name":"identity-state","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 day(s)","unit":"declDays","expires":1},{"name":"_merchant_essential","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_shopify_essential_\t","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_merchant_analytics","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":2,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_shopify_marketing","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":3,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"shopify_override_user_locale","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":1,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"_up_pixel_cart_fi","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"33 second(s)","unit":"declSeconds","expires":33},{"name":"optiMonkViewedProducts","domain":"myfirmtech.com","type":"http","vendor":"Unknown","category":4,"retention":"1 year(s)","unit":"declYears","expires":1},{"name":"NID","domain":".google.com","type":"http","vendor":"Google","category":3,"retention":"6 month(s)","unit":"declMonths","expires":6},{"name":"skip_shop_pay","domain":"myfirmtech.com","type":"http","vendor":"Shopify","category":0,"retention":"1 year(s)","unit":"declYears","expires":1}]}; 730 if (isLivePreview) { 731 if (!window.pandectesBannerSettings.store) { 732 window.pandectesBannerSettings.store = {}; 733 } 734 window.pandectesBannerSettings.store.plan = 'enterprise'; 735 } 736 737 function whenBodyReady(callback) { 738 window.addEventListener('DOMContentLoaded', callback); 739 } 740 741 742 whenBodyReady(function(){ 743 const element = document.createElement('pandectes-cmp'); 744 element.appData = window.pandectesBannerSettings; 745 document.body.appendChild(element); 746 appendLivePreviewScriptIfNeeded(previewUrl); 747 }); 748 749 })() 750 </script>
750 751 752 753 754 755 <!-- A11y --> 756 757 758 759 760 761 762 763 764 765 766<!-- END app block --><!-- BEGIN app block: shopify://apps/ecomposer-builder/blocks/app-embed/a0fc26e1-7741-4773-8b27-39389b4fb4a0 --><!-- DNS Prefetch & Preconnect --> 767<link rel="preconnect" href="https://cdn.ecomposer.app" crossorigin> 768<link rel="dns-prefetch" href="https://cdn.ecomposer.app"> 769 770<link rel="prefetch" href="https://cdn.ecomposer.app/vendors/css/[email protected]" as="style"> 771<link rel="prefetch" href="https://cdn.ecomposer.app/vendors/js/[email protected]" as="script"> 772<link rel="prefetch" href="https://cdn.ecomposer.app/vendors/js/ecom_modal.js" as="script"> 773 774<!-- Global CSS --><!--ECOM-EMBED--> 775 <style id="ecom-global-css" class="ecom-global-css">/**ECOM-INSERT-CSS**/.ecom-section > div.core__row--columns{max-width: 1200px;}.ecom-column>div.core__column--wrapper{padding: 20px;}div.core__blocks--body>div.ecom-block.elmspace:not(:first-child){margin-top: 20px;}:root{--ecom-global-colors-primary:#f5d5d5;--ecom-global-colors-secondary:#db4242;--ecom-global-colors-text:#000000;--ecom-global-colors-accent:#ffffff;--ecom-global-colors-J2dZPzhr:#fc4c4c;--ecom-global-colors-YXqtVCv8:#3f2e52;--ecom-global-typography-h1-font-weight:600;--ecom-global-typography-h1-font-size:72px;--ecom-global-typography-h1-line-height:90px;--ecom-global-typography-h1-letter-spacing:-0.02em;--ecom-global-typography-h2-font-weight:600;--ecom-global-typography-h2-font-size:60px;--ecom-global-typography-h2-line-height:72px;--ecom-global-typography-h2-letter-spacing:-0.02em;--ecom-global-typography-h3-font-weight:600;--ecom-global-typography-h3-font-size:48px;--ecom-global-typography-h3-line-height:60px;--ecom-global-typography-h3-letter-spacing:-0.02em;--ecom-global-typography-h4-font-weight:600;--ecom-global-typography-h4-font-size:32px;--ecom-global-typography-h4-line-height:44px;--ecom-global-typography-h4-letter-spacing:-0.02em;--ecom-global-typography-h5-font-weight:600;--ecom-global-typography-h5-font-size:30px;--ecom-global-typography-h5-line-height:38px;--ecom-global-typography-h6-font-weight:600;--ecom-global-typography-h6-font-size:24px;--ecom-global-typography-h6-line-height:32px;--ecom-global-typography-h7-font-weight:400;--ecom-global-typography-h7-font-size:18px;--ecom-global-typography-h7-line-height:28px;--ecom-global-typography-primary-title:Primary;--ecom-global-typography-primary-font-size:45px;--ecom-global-typography-secondary-title:Secondary;--ecom-global-typography-text-title:Text;--ecom-global-typography-text-font-size:34px;--ecom-global-typography-text-font-family:Montserrat;--ecom-global-typography-accent-title:Accent;--ecom-global-typography-1K4t3A-font-family:DM Sans;--ecom-global-typography-1K4t3A-font-size:24px;--ecom-global-typography-1K4t3A-font-weight:500;--ecom-global-typography-1K4t3A-line-height:56px;--ecom-global-typography-A6Mour-title:New Item;--ecom-global-typography-A6Mour-font-family:Space Grotesk;--ecom-global-typography-lR2ofq00-font-weight:600;--ecom-global-typography-lR2ofq00-font-size:40px;--ecom-global-typography-lR2ofq00-font-family:Jost;--ecom-global-typography-lR2ofq00-line-height:66px;--ecom-global-typography-uI04brPm-font-family:Inter;--ecom-global-typography-uI04brPm-font-size:15px;--ecom-global-typography-uI04brPm-line-height:1.5em;--ecom-global-typography-uI04brPm-letter-spacing:0.4px;--ecom-global-typography-B5rLufxR-font-family:Inter;--ecom-global-typography-B5rLufxR-font-size:20px;--ecom-global-typography-B5rLufxR-line-height:1.5em;--ecom-global-typography-B5rLufxR-letter-spacing:0.4px;--ecom-global-typography-B5rLufxR-font-weight:500;--ecom-global-typography-Zf3nddNQ-font-family:Jost;--ecom-global-typography-Zf3nddNQ-font-size:38px;--ecom-global-typography-Zf3nddNQ-font-weight:700;--ecom-global-typography-Zf3nddNQ-line-height:42px;--ecom-global-typography-m5lJMKLv-font-family:Jost;--ecom-global-typography-m5lJMKLv-font-size:16px;--ecom-global-typography-AbgUXj49-font-family:Jost;--ecom-global-typography-AbgUXj49-font-size:18px;--ecom-global-typography-AbgUXj49-font-weight:500;--ecom-global-typography-AbgUXj49-line-height:26px;--ecom-global-typography-vw8dyZaa-font-weight:600;--ecom-global-typography-vw8dyZaa-font-size:20px;--ecom-global-typography-vw8dyZaa-font-family:Jost;
775--ecom-global-typography-url73nOe-font-weight:400;--ecom-global-typography-url73nOe-font-size:15px;--ecom-global-typography-url73nOe-font-family:Jost;--ecom-global-typography-url73nOe-line-height:24px;--ecom-global-typography-1jIKTb3C-font-family:Be Vietnam Pro;--ecom-global-typography-1jIKTb3C-font-size:14px;--ecom-global-typography-1jIKTb3C-line-height:40px;--ecom-global-typography-xF9iao9u-font-weight:600;--ecom-global-typography-xF9iao9u-font-size:38px;--ecom-global-typography-xF9iao9u-font-family:Jost;--ecom-global-typography-xF9iao9u-line-height:50px;--ecom-global-typography-D4BrkEgE-font-family:Jost;--ecom-global-typography-D4BrkEgE-font-size:16px;--ecom-global-typography-D4BrkEgE-line-height:26px;}</style> 776 <!--/ECOM-EMBED--><!-- Custom CSS & JS --><style id="ecom-custom-css"></style>
776<script id="ecom-custom-js" async></script>
776<!-- Open Graph Meta Tags for Pages --><!-- AI Search Optimization (LLM Outreach) --><!-- Critical Inline Styles --> 777<style class="ecom-theme-helper">.ecom-animation{opacity:0}.ecom-animation.animate,.ecom-animation.ecom-animated{opacity:1}.ecom-cart-popup{display:grid;position:fixed;inset:0;z-index:9999999;align-content:center;padding:5px;justify-content:center;align-items:center;justify-items:center}.ecom-cart-popup::before{content:' ';position:absolute;background:#e5e5e5b3;inset:0}.ecom-ajax-loading{cursor:not-allowed;pointer-events:none;opacity:.6}#ecom-toast{visibility:hidden;max-width:50px;height:60px;margin:auto;background-color:#333;color:#fff;text-align:center;border-radius:2px;position:fixed;z-index:1;left:0;right:0;bottom:30px;font-size:17px;display:grid;grid-template-columns:50px auto;align-items:center;justify-content:start;align-content:center;justify-items:start}#ecom-toast.ecom-toast-show{visibility:visible;animation:ecomFadein .5s,ecomExpand .5s .5s,ecomStay 3s 1s,ecomShrink .5s 4s,ecomFadeout .5s 4.5s}#ecom-toast #ecom-toast-icon{width:50px;height:100%;box-sizing:border-box;background-color:#111;color:#fff;padding:5px}#ecom-toast .ecom-toast-icon-svg{width:100%;height:100%;position:relative;vertical-align:middle;margin:auto;text-align:center}#ecom-toast #ecom-toast-desc{color:#fff;padding:16px;overflow:hidden;white-space:nowrap}@media(max-width:768px){#ecom-toast #ecom-toast-desc{white-space:normal;min-width:250px}#ecom-toast{height:auto;min-height:60px}}.ecom__column-full-height{height:100%}[data-ec-sr]>.core__row--columns>.ecom-column:not(.ecom-sr-visible):not(.ecom-sr-done),[data-ec-sr].ec-flex-wp>.ecom-inner>.ecom-block:not(.ecom-sr-visible):not(.ecom-sr-done),[data-ec-sr].ec-flex-wp>.ecom-inner>.ec-flex-wp.core__block:not(.ecom-sr-visible):not(.ecom-sr-done),[data-ec-sr].ec-flex-wp>.ecom-block:not(.ecom-sr-visible):not(.ecom-sr-done),[data-ec-sr].ec-flex-wp>.ec-flex-wp.core__block:not(.ecom-sr-visible):not(.ecom-sr-done),[data-ec-sr]>.ecom-grid-layout>.ecom-grid-item:not(.ecom-sr-visible):not(.ecom-sr-done),[data-ec-sr-items] [data-ec-sr-item]:not(.ecom-sr-visible):not(.ecom-sr-done){opacity:0}.ecom-sr-done{opacity:1}@keyframes ecom-sr-fade-up{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes ecom-sr-fade-in{from{opacity:0}to{opacity:1}}@keyframes ecom-sr-slide-left{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}@keyframes ecom-sr-zoom-in{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.ecom-sr-visible{animation-fill-mode:both!important;animation-duration:.6s!important;animation-timing-function:cubic-bezier(.25,.46,.45,.94)!important}.ecom-sr-visible[data-sr-anim="fade-up"]{animation-name:ecom-sr-fade-up!important}.ecom-sr-visible[data-sr-anim="fade-in"]{animation-name:ecom-sr-fade-in!important}.ecom-sr-visible[data-sr-anim="slide-left"]{animation-name:ecom-sr-slide-left!important}.ecom-sr-visible[data-sr-anim="zoom-in"]{animation-name:ecom-sr-zoom-in!important}@keyframes ecomFadein{from{bottom:0;opacity:0}
777to{bottom:30px;opacity:1}}@keyframes ecomExpand{from{min-width:50px}to{min-width:var(--ecom-max-width)}}@keyframes ecomStay{from{min-width:var(--ecom-max-width)}to{min-width:var(--ecom-max-width)}}@keyframes ecomShrink{from{min-width:var(--ecom-max-width)}to{min-width:50px}}@keyframes ecomFadeout{from{bottom:30px;opacity:1}to{bottom:60px;opacity:0}}</style> 778 779 780<!-- EComposer Config Script -->
781<script id="ecom-theme-helpers" async> 782window.EComposer=window.EComposer||{};(function(){if(!this.configs)this.configs={};this.configs={"custom_code":{"enable_jquery":true,"custom_css":"","custom_js":""},"instagram":"IGQWRQcDhiV24zQkRtY3lIb2NJRDVEa3cwbHpwd2pLM2hmNDFfYmFwT0R5TVlsRHJGbkM1Nk5nTXI3LW5WMDNSLTYyaTF6djFQNHVhc0g2TldGOVI0cTl3SDZArMkotcUdqdkNNakV4T1lWZAwZDZD"};this.configs.ajax_cart={enable:false};this.customer=false;this.initQuickview=function(){}; 783this.proxy_path='/apps/ecomposer-visual-page-builder';this.popupScriptUrl='';this.routes={domain:'https://myfirmtech.com',root_url:'/',collections_url:'/collections',all_products_collection_url:'/collections/all',cart_url:'/cart',cart_add_url:'/cart/add',cart_change_url:'/cart/change',cart_clear_url:'/cart/clear',cart_update_url:'/cart/update',product_recommendations_url:'/recommendations/products'}; 784this.queryParams={}; 785if(window.location.search.length){new URLSearchParams(window.location.search).forEach((value,key)=>{this.queryParams[key]=value})} 786this.money_format="${{amount}}"; 787this.money_with_currency_format="${{amount}} USD"; 788this.currencyCodeEnabled=true;this.abTestingData = [];this.formatMoney=function(t,e){const r=this.currencyCodeEnabled?this.money_with_currency_format:this.money_format;function a(t,e){return void 0===t?e:t}function o(t,e,r,o){if(e=a(e,2),r=a(r,","),o=a(o,"."),isNaN(t)||null==t)return 0;var n=(t=(t/100).toFixed(e)).split(".");return n[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+r)+(n[1]?o+n[1]:"")}"string"==typeof t&&(t=t.replace(".",""));var n="",i=/\{\{\s*(\w+)\s*\}\}/,s=e||r;switch(s.match(i)[1]){case"amount":n=o(t,2);break;case"amount_no_decimals":n=o(t,0);break;case"amount_with_comma_separator":n=o(t,2,".",",");break;case"amount_with_space_separator":n=o(t,2," ",",");break;case"amount_with_period_and_space_separator":n=o(t,2," ",".");break;case"amount_no_decimals_with_comma_separator":n=o(t,0,".",",");break;case"amount_no_decimals_with_space_separator":n=o(t,0," ");break;case"amount_with_apostrophe_separator":n=o(t,2,"'",".")}return s.replace(i,n)}; 789this.resizeImage=function(t,e){try{if(!e||"original"==e||"full"==e||"master"==e)return t;if(-1!==t.indexOf("cdn.shopify.com")||-1!==t.indexOf("/cdn/shop/")){var r=t.match(/\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif|webp)((\#[0-9a-z\-]+)?(\?v=.*)?)?$/gim);if(null==r)return null;var a=t.split(r[0]),o=r[0];return a[0]+"_"+e+o}}catch(r){return t}return t}; 790this.getProduct=function(t){if(!t)return!1;let e=("/"===this.routes.root_url?"":this.routes.root_url)+"/products/"+t+".js?shop="+Shopify.shop;return window.ECOM_LIVE&&(e="/shop/builder/ajax/ecom-proxy/products/"+t+"?shop="+Shopify.shop),window.fetch(e,{headers:{"Content-Type":"application/json"}}).then(t=>t.ok?t.json():false)}; 791const u=new URLSearchParams(window.location.search);if(u.has("ecom-redirect")){const r=u.get("ecom-redirect");if(r){let d;try{d=decodeURIComponent(r)}catch{return}d=d.trim().replace(/[\r\n\t]/g,"");if(d.length>2e3)return;const p=["javascript:","data:","vbscript:","file:","ftp:","mailto:","tel:","sms:","chrome:","chrome-extension:","moz-extension:","ms-browser-extension:"],l=d.toLowerCase();for(const o of p)if(l.includes(o))return;const x=[/
791<script/i,/<\/script/i,/javascript:/i,/vbscript:/i,/onload=/i,/onerror=/i,/onclick=/i,/onmouseover=/i,/onfocus=/i,/onblur=/i,/onsubmit=/i,/onchange=/i,/alert\s*\(/i,/confirm\s*\(/i,/prompt\s*\(/i,/document\./i,/window\./i,/eval\s*\(/i];for(const t of x)if(t.test(d))return;if(d.startsWith("/")&&!d.startsWith("//")){if(!/^[a-zA-Z0-9\-._~:/?#[\]@!$&'()*+,;=%]+$/.test(d))return;if(d.includes("../")||d.includes("./"))return;window.location.href=d;return}if(!d.includes("://")&&!d.startsWith("//")){if(!/^[a-zA-Z0-9\-._~:/?#[\]@!$&'()*+,;=%]+$/.test(d))return;if(d.includes("../")||d.includes("./"))return;window.location.href="/"+d;return}let n;try{n=new URL(d)}catch{return}if(!["http:","https:"].includes(n.protocol))return;if(n.port&&(parseInt(n.port)<1||parseInt(n.port)>65535))return;const a=[window.location.hostname];if(a.includes(n.hostname)&&(n.href===d||n.toString()===d))window.location.href=d}} 792}).bind(window.EComposer)(); 793if(window.Shopify&&window.Shopify.designMode&&window.top&&window.top.opener){window.addEventListener("load",function(){window.top.opener.postMessage({action:"ecomposer:loaded"},"*")})} 794</script>
794<!-- Toast Template -->
795<script type="text/template" id="ecom-template-html"><!-- BEGIN app snippet: ecom-toast --><div id="ecom-toast"><div id="ecom-toast-icon"><svg xmlns="http://www.w3.org/2000/svg" class="ecom-toast-icon-svg ecom-toast-icon-info" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/></svg> 796<svg class="ecom-toast-icon-svg ecom-toast-icon-success" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 48c110.5 0 200 89.5 200 200 0 110.5-89.5 200-200 200-110.5 0-200-89.5-200-200 0-110.5 89.5-200 200-200m140.2 130.3l-22.5-22.7c-4.7-4.7-12.3-4.7-17-.1L215.3 303.7l-59.8-60.3c-4.7-4.7-12.3-4.7-17-.1l-22.7 22.5c-4.7 4.7-4.7 12.3-.1 17l90.8 91.5c4.7 4.7 12.3 4.7 17 .1l172.6-171.2c4.7-4.7 4.7-12.3 .1-17z"/></svg> 797</div><div id="ecom-toast-desc"></div></div><!-- END app snippet --></script>
797<!-- END app block --><!-- BEGIN app block: shopify://apps/uppromote-affiliate/blocks/core-script/64c32457-930d-4cb9-9641-e24c0d9cf1f4 --><!-- BEGIN app snippet: core-metafields-setting --><!--suppress ES6ConvertVarToLetConst -->
798<script type="application/json" id="core-uppromote-settings">{"app_env":{"env":"production"},"message_bar_setting":{"referral_enable":0,"referral_content":"You're shopping with {affiliate_name}!","referral_font":"Poppins","referral_font_size":14,"referral_text_color":"#ffffff","referral_background_color":"#338FB1","not_referral_enable":0,"not_referral_content":"Enjoy your time.","not_referral_font":"Poppins","not_referral_font_size":14,"not_referral_text_color":"#ffffff","not_referral_background_color":"#338FB1"}}</script>
vendor: 1 bytes, line 798
798
799<script type="application/json" id="core-uppromote-cart">{"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}</script>
799 800
801<script id="core-uppromote-quick-store-tracking-vars"> 802 function getDocumentContext(){const{href:a,hash:b,host:c,hostname:d,origin:e,pathname:f,port:g,protocol:h,search:i}=window.location,j=document.referrer,k=document.characterSet,l=document.title;return{location:{href:a,hash:b,host:c,hostname:d,origin:e,pathname:f,port:g,protocol:h,search:i},referrer:j||document.location.href,characterSet:k,title:l}}function getNavigatorContext(){const{language:a,cookieEnabled:b,languages:c,userAgent:d}=navigator;return{language:a,cookieEnabled:b,languages:c,userAgent:d}}function getWindowContext(){const{innerHeight:a,innerWidth:b,outerHeight:c,outerWidth:d,origin:e,screen:{height:j,width:k},screenX:f,screenY:g,scrollX:h,scrollY:i}=window;return{innerHeight:a,innerWidth:b,outerHeight:c,outerWidth:d,origin:e,screen:{screenHeight:j,screenWidth:k},screenX:f,screenY:g,scrollX:h,scrollY:i,location:getDocumentContext().location}}function getContext(){return{document:getDocumentContext(),navigator:getNavigatorContext(),window:getWindowContext()}} 803 if (window.location.href.includes('?sca_ref=')) { 804 localStorage.setItem('__up_lastViewedPageContext', JSON.stringify({ 805 context: getContext(), 806 timestamp: new Date().toISOString(), 807 })) 808 } 809</script>
809 810 811
812<script id="core-uppromote-setting-booster"> 813 var UpPromoteCoreSettings = JSON.parse(document.getElementById('core-uppromote-settings').textContent) 814 UpPromoteCoreSettings.currentCart = JSON.parse(document.getElementById('core-uppromote-cart')?.textContent || '{}') 815 const idToClean = ['core-uppromote-settings', 'core-uppromote-cart', 'core-uppromote-setting-booster', 'core-uppromote-quick-store-tracking-vars'] 816 idToClean.forEach(id => { 817 document.getElementById(id)?.remove() 818 }) 819</script>
819 820<!-- END app snippet --> 821 822 823<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 824 825 826 827 828 829 830 831 832 833 834 835 836
836<script async src="https://static.klaviyo.com/onsite/js/Y3Ych4/klaviyo.js?company_id=Y3Ych4"></script>
836 837
837<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>
837 838 839 840 841 842 843 844
844<script> 845 window.klaviyoReviewsProductDesignMode = false 846 </script>
846 847 848 849 850 851 852 853 854 855 856<!-- END app block --><!-- BEGIN app block: shopify://apps/okendo/blocks/theme-settings/bb689e69-ea70-4661-8fb7-ad24a2e23c29 --><!-- BEGIN app snippet: header-metafields --> 857 858 859 860 861 862 863 864 865 866 867 868 869 870 <style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/okendo-reviews-styles.18391d59.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/okendo-star-rating.4cb378a8.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/okendo-reviews-keywords.0942444f.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/okendo-reviews-summary.a0c9d7d6.css"></style><style type="text/css">.okeReviews[data-oke-container],div.okeReviews{font-size:14px;font-size:var(--oke-text-regular);font-weight:400;font-family:var(--oke-text-fontFamily);line-height:1.6}.okeReviews[data-oke-container] *,.okeReviews[data-oke-container] :after,.okeReviews[data-oke-container] :before,div.okeReviews *,div.okeReviews :after,div.okeReviews :before{box-sizing:border-box}.okeReviews[data-oke-container] h1,.okeReviews[data-oke-container] h2,.okeReviews[data-oke-container] h3,.okeReviews[data-oke-container] h4,.okeReviews[data-oke-container] h5,.okeReviews[data-oke-container] h6,div.okeReviews h1,div.okeReviews h2,div.okeReviews h3,div.okeReviews h4,div.okeReviews h5,div.okeReviews h6{font-size:1em;font-weight:400;line-height:1.4;margin:0}.okeReviews[data-oke-container] ul,div.okeReviews ul{padding:0;margin:0}.okeReviews[data-oke-container] li,div.okeReviews li{list-style-type:none;padding:0}.okeReviews[data-oke-container] p,div.okeReviews p{line-height:1.8;margin:0 0 4px}.okeReviews[data-oke-container] p:last-child,div.okeReviews p:last-child{margin-bottom:0}.okeReviews[data-oke-container] a,div.okeReviews a{text-decoration:none;color:inherit}.okeReviews[data-oke-container] button,div.okeReviews button{border-radius:0;border:0;box-shadow:none;margin:0;width:auto;min-width:auto;padding:0;background-color:transparent;min-height:auto}.okeReviews[data-oke-container] button,.okeReviews[data-oke-container] input,.okeReviews[data-oke-container] select,.okeReviews[data-oke-container] textarea,div.okeReviews button,div.okeReviews input,div.okeReviews select,div.okeReviews textarea{font-family:inherit;font-size:1em}.okeReviews[data-oke-container] label,.okeReviews[data-oke-container] select,div.okeReviews label,div.okeReviews select{display:inline}.okeReviews[data-oke-container] select,div.okeReviews select{width:auto}.okeReviews[data-oke-container] article,.okeReviews[data-oke-container] aside,div.okeReviews article,div.okeReviews aside{margin:0}.okeReviews[data-oke-container] table,div.okeReviews table{background:transparent;border:0;border-collapse:collapse;border-spacing:0;font-family:inherit;font-size:1em;table-layout:auto}.okeReviews[data-oke-container] table td,.okeReviews[data-oke-container] table th,.okeReviews[data-oke-container] table tr,div.okeReviews table td,div.okeReviews table th,div.okeReviews table tr{border:0;font-family:inherit;font-size:1em}.okeReviews[data-oke-container] table td,.okeReviews[data-oke-container] table th,div.okeReviews table td,div.okeReviews table th{background:transparent;font-weight:400;letter-spacing:normal;padding:0;text-align:left;text-transform:none;vertical-align:middle}.okeReviews[data-oke-container] table tr:hover td,.okeReviews[data-oke-container] table tr:hover th,div.okeReviews table tr:hover td,div.okeReviews table tr:hover th{background:transparent}.okeReviews[data-oke-container] fieldset,div.okeReviews fieldset{border:0;padding:0;margin:0;min-width:0}.okeReviews[data-oke-container] img,.okeReviews[data-oke-container] svg,div.okeReviews img,div.okeReviews svg{max-width:none}.okeReviews[data-oke-container] div:empty,div.okeReviews div:empty{display:block}.okeReviews[data-oke-container] .oke-icon:before,div.okeReviews .oke-icon:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:inherit}.okeReviews[data-oke-container] .oke-icon--select-arrow:before,div.okeReviews .oke-icon--select-arrow:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--loading:before,div.okeReviews .oke-icon--loading:before{content:"î¤"}
870.okeReviews[data-oke-container] .oke-icon--pencil:before,div.okeReviews .oke-icon--pencil:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--filter:before,div.okeReviews .oke-icon--filter:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--play:before,div.okeReviews .oke-icon--play:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--tick-circle:before,div.okeReviews .oke-icon--tick-circle:before{content:"î¤
"}.okeReviews[data-oke-container] .oke-icon--chevron-left:before,div.okeReviews .oke-icon--chevron-left:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--chevron-right:before,div.okeReviews .oke-icon--chevron-right:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--thumbs-down:before,div.okeReviews .oke-icon--thumbs-down:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--thumbs-up:before,div.okeReviews .oke-icon--thumbs-up:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--close:before,div.okeReviews .oke-icon--close:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--chevron-up:before,div.okeReviews .oke-icon--chevron-up:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--chevron-down:before,div.okeReviews .oke-icon--chevron-down:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--star:before,div.okeReviews .oke-icon--star:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--magnifying-glass:before,div.okeReviews .oke-icon--magnifying-glass:before{content:"î¤"}@font-face{font-family:oke-widget-icons;src:url(https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/fonts/oke-widget-icons.ttf) format("truetype"),url(https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/fonts/oke-widget-icons.woff) format("woff"),url(https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/img/oke-widget-icons.bc0d6b0a.svg) format("svg");font-weight:400;font-style:normal;font-display:swap}.okeReviews[data-oke-container] .oke-button,div.okeReviews .oke-button{display:inline-block;border-style:solid;border-color:var(--oke-button-borderColor);border-width:var(--oke-button-borderWidth);background-color:var(--oke-button-backgroundColor);line-height:1;padding:12px 24px;margin:0;border-radius:var(--oke-button-borderRadius);color:var(--oke-button-textColor);text-align:center;position:relative;font-weight:var(--oke-button-fontWeight);font-size:var(--oke-button-fontSize);font-family:var(--oke-button-fontFamily);outline:0}.okeReviews[data-oke-container] .oke-button-text,.okeReviews[data-oke-container] .oke-button .oke-icon,div.okeReviews .oke-button-text,div.okeReviews .oke-button .oke-icon{line-height:1}.okeReviews[data-oke-container] .oke-button.oke-is-loading,div.okeReviews .oke-button.oke-is-loading{position:relative}.okeReviews[data-oke-container] .oke-button.oke-is-loading:before,div.okeReviews .oke-button.oke-is-loading:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"î¤";color:undefined;font-size:12px;display:inline-block;animation:oke-spin 1s linear infinite;position:absolute;width:12px;height:12px;top:0;left:0;bottom:0;right:0;margin:auto}.okeReviews[data-oke-container] .oke-button.oke-is-loading>*,div.okeReviews .oke-button.oke-is-loading>*{opacity:0}.okeReviews[data-oke-container] .oke-button.oke-is-active,div.okeReviews .oke-button.oke-is-active{background-color:var(--oke-button-backgroundColorActive);color:var(--oke-button-textColorActive);border-color:var(--oke-button-borderColorActive)}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading),div.okeReviews .oke-button:not(.oke-is-loading){cursor:pointer}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):hover{background-color:var(--oke-button-backgroundColorHover);color:var(--oke-button-textColorHover);border-color:var(--oke-button-borderColorHover);box-shadow:0 0 0 2px var(--oke-button-backgroundColorHover)}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):active,.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover:active,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):active,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):hover:active{background-color:var(--oke-button-backgroundColorActive);color:var(--oke-button-textColorActive);border-color:var(--oke-button-borderColorActive)}.okeReviews[data-oke-container] .oke-title,div.okeReviews .oke-title{font-weight:var(--oke-title-fontWeight);font-size:var(--oke-title-fontSize);font-family:var(--oke-title-fontFamily)}.okeReviews[data-oke-container] .oke-bodyText,div.okeReviews .oke-bodyText{font-weight:var(--oke-bodyText-fontWeight);font-size:var(--oke-bodyText-fontSize);font-family:var(--oke-bodyText-fontFamily)}.okeReviews[data-oke-container] .oke-linkButton,div.okeReviews .oke-linkButton{curs
870or:pointer;font-weight:700;pointer-events:auto;text-decoration:underline}.okeReviews[data-oke-container] .oke-linkButton:hover,div.okeReviews .oke-linkButton:hover{text-decoration:none}.okeReviews[data-oke-container] .oke-readMore,div.okeReviews .oke-readMore{cursor:pointer;color:inherit;text-decoration:underline}.okeReviews[data-oke-container] .oke-select,div.okeReviews .oke-select{cursor:pointer;background-repeat:no-repeat;background-position-x:100%;background-position-y:50%;border:none;padding:0 24px 0 12px;-moz-appearance:none;appearance:none;color:inherit;-webkit-appearance:none;background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='currentColor' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");outline-offset:4px}.okeReviews[data-oke-container] .oke-select:disabled,div.okeReviews .oke-select:disabled{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='%239a9db1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E")}.okeReviews[data-oke-container] .oke-loader,div.okeReviews .oke-loader{position:relative}.okeReviews[data-oke-container] .oke-loader:before,div.okeReviews .oke-loader:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"î¤";color:var(--oke-text-secondaryColor);font-size:12px;display:inline-block;animation:oke-spin 1s linear infinite;position:absolute;width:12px;height:12px;top:0;left:0;bottom:0;right:0;margin:auto}.okeReviews[data-oke-container] .oke-a11yText,div.okeReviews .oke-a11yText{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.okeReviews[data-oke-container] .oke-hidden,div.okeReviews .oke-hidden{display:none}.okeReviews[data-oke-container] .oke-modal,div.okeReviews .oke-modal{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2147483647;max-height:100%;background-color:rgba(0,0,0,.5);padding:40px 0 32px}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal,div.okeReviews .oke-modal{display:flex;align-items:center;padding:48px 0}}.okeReviews[data-oke-container] .oke-modal ::-moz-selection,div.okeReviews .oke-modal ::-moz-selection{background-color:rgba(39,45,69,.2)}.okeReviews[data-oke-container] .oke-modal ::selection,div.okeReviews .oke-modal ::selection{background-color:rgba(39,45,69,.2)}.okeReviews[data-oke-container] .oke-modal,.okeReviews[data-oke-container] .oke-modal p,div.okeReviews .oke-modal,div.okeReviews .oke-modal p{color:#272d45}.okeReviews[data-oke-container] .oke-modal-content,div.okeReviews .oke-modal-content{background-color:#fff;margin:auto;position:relative;will-change:transform,opacity;width:calc(100% - 64px)}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal-content,div.okeReviews .oke-modal-content{max-width:1000px}}.okeReviews[data-oke-container] .oke-modal-close,div.okeReviews .oke-modal-close{cursor:pointer;position:absolute;width:32px;height:32px;top:-32px;padding:4px;right:-4px;line-height:1}.okeReviews[data-oke-container] .oke-modal-close:before,div.okeReviews .oke-modal-close:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"î¤";color:#fff;font-size:24px;display:inline-block;width:24px;height:24px}.okeReviews[data-oke-container] .oke-modal-overlay,div.okeReviews .oke-modal-overlay{background-color:rgba(43,46,56,.9)}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal--large .oke-modal-content,div.okeReviews .oke-modal--large .oke-modal-content{max-width:1200px}}.okeReviews[data-oke-container] .oke-modal .oke-helpful,.okeReviews[data-oke-container] .oke-modal .oke-helpful-vote-button,.okeReviews[data-oke-container] .oke-modal .oke-reviewContent-date,div.okeReviews .oke-modal .oke-helpful,div.okeReviews .oke-modal .oke-helpful-vote-button,div.okeReviews .oke-modal .oke-reviewContent-date{color:#676986}.oke-modal .okeReviews[data-oke-container].oke-w,.oke-modal div.okeReviews.oke-w{color:#272d45}.okeReviews[data-oke-container] .oke-tag,div.okeReviews .oke-tag{align-items:center;color:#272d45;display:flex;font-size:var(--oke-text-small);font-weight:600;text-align:left;position:relative;z-index:2;background-color:#f4f4f6;padding:4px 6px;border:none;border-radius:4px;gap:6px;line-height:1}.okeReviews[data-oke-container] .oke-tag svg,div.okeReviews .oke-tag svg{fill:currentColor;height:1rem}.okeReviews[data-oke-container] .hooper,div.okeReviews .hooper{height:auto}.okeReviews--left{text-align:left}.okeReviews--right{text-align:right}.okeReviews--center{text-align:center}.okeReviews :not([tabindex="-1"]):focus-visible{outline:5px auto highlight;outline:5px auto -webkit-focus-ring-color}.is-oke-modalOpen{overflow:hidden!important}img.oke-is-error{background-color:var(--oke-shadingColor);background-size:cover;background-position:50% 50%;box-shadow:inset 0 0 0 1px var(--oke-border-color)}@keyframes oke-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes oke-fade-in{0%{opacity:0}
870to{opacity:1}}.layout-panel-flex>div:has([data-oke-container]){width:100%} 871.oke-stars{line-height:1;position:relative;display:inline-block}.oke-stars-background svg{overflow:visible}.oke-stars-foreground{overflow:hidden;position:absolute;top:0;left:0}.oke-sr{display:inline-block;padding-top:var(--oke-starRating-spaceAbove);padding-bottom:var(--oke-starRating-spaceBelow)}.oke-sr .oke-is-clickable{cursor:pointer}.oke-sr--hidden{display:none}.oke-sr-count,.oke-sr-rating,.oke-sr-stars{display:inline-block;vertical-align:middle}.oke-sr-stars{line-height:1;margin-right:8px}.oke-sr-rating{display:none}.oke-sr-count--brackets:before{content:"("}.oke-sr-count--brackets:after{content:")"} 872.oke-rk{display:block}.okeReviews[data-oke-container] .oke-reviewsKeywords-heading,div.okeReviews .oke-reviewsKeywords-heading{font-weight:700;margin-bottom:8px}.okeReviews[data-oke-container] .oke-reviewsKeywords-heading-skeleton,div.okeReviews .oke-reviewsKeywords-heading-skeleton{height:calc(var(--oke-button-fontSize) + 4px);width:150px}.okeReviews[data-oke-container] .oke-reviewsKeywords-list,div.okeReviews .oke-reviewsKeywords-list{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category,div.okeReviews .oke-reviewsKeywords-list-category{background-color:var(--oke-filter-backgroundColor);color:var(--oke-filter-textColor);border:1px solid var(--oke-filter-borderColor);border-radius:var(--oke-filter-borderRadius);padding:6px 16px;transition:background-color .1s ease-out,border-color .1s ease-out;white-space:nowrap}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category.oke-is-clickable,div.okeReviews .oke-reviewsKeywords-list-category.oke-is-clickable{cursor:pointer}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category.oke-is-active,div.okeReviews .oke-reviewsKeywords-list-category.oke-is-active{background-color:var(--oke-filter-backgroundColorActive);color:var(--oke-filter-textColorActive);border-color:var(--oke-filter-borderColorActive)}.okeReviews[data-oke-container] .oke-reviewsKeywords .oke-translateButton,div.okeReviews .oke-reviewsKeywords .oke-translateButton{margin-top:12px} 873.oke-rs{display:block}.oke-rs .oke-reviewsSummary.oke-is-preRender .oke-reviewsSummary-summary{-webkit-mask:linear-gradient(180deg,#000 0,#000 40%,transparent 95%,transparent 0) 100% 50%/100% 100% repeat-x;mask:linear-gradient(180deg,#000 0,#000 40%,transparent 95%,transparent 0) 100% 50%/100% 100% repeat-x;max-height:150px}.okeReviews[data-oke-container] .oke-reviewsSummary .oke-tooltip,div.okeReviews .oke-reviewsSummary .oke-tooltip{display:inline-block;font-weight:400}.okeReviews[data-oke-container] .oke-reviewsSummary .oke-tooltip-trigger,div.okeReviews .oke-reviewsSummary .oke-tooltip-trigger{height:15px;width:15px;overflow:hidden;transform:translateY(-10%)}.okeReviews[data-oke-container] .oke-reviewsSummary-heading,div.okeReviews .oke-reviewsSummary-heading{align-items:center;-moz-column-gap:4px;column-gap:4px;display:inline-flex;font-weight:700;margin-bottom:8px}.okeReviews[data-oke-container] .oke-reviewsSummary-heading-skeleton,div.okeReviews .oke-reviewsSummary-heading-skeleton{height:calc(var(--oke-button-fontSize) + 4px);width:150px}.okeReviews[data-oke-container] .oke-reviewsSummary-icon,div.okeReviews .oke-reviewsSummary-icon{fill:currentColor;font-size:14px}.okeReviews[data-oke-container] .oke-reviewsSummary-icon svg,div.okeReviews .oke-reviewsSummary-icon svg{vertical-align:baseline}.okeReviews[data-oke-container] .oke-reviewsSummary-summary.oke-is-truncated,div.okeReviews .oke-reviewsSummary-summary.oke-is-truncated{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}</style> 874 875
875<script type="application/json" id="oke-reviews-settings">{"subscriberId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587","analyticsSettings":{"isWidgetOnScreenTrackingEnabled":true,"provider":"gtm"},"locale":"en","localeAndVariant":{"code":"en"},"matchCustomerLocale":false,"widgetSettings":{"global":{"dateSettings":{"format":{"type":"relative"}},"hideOkendoBranding":true,"stars":{"backgroundColor":"#A8A8A8","foregroundColor":"#FC0808","interspace":2,"shape":{"type":"default"},"showBorder":false},"showIncentiveIndicator":false,"searchEnginePaginationEnabled":true,"font":{"fontType":"inherit-from-page"}},"homepageCarousel":{"slidesPerPage":{"large":3,"medium":2},"totalSlides":12,"scrollBehaviour":"slide","style":{"showDates":true,"border":{"color":"#E5E5EB","width":{"value":1,"unit":"px"}},"headingFont":{"hasCustomFontSettings":false},"bodyFont":{"hasCustomFontSettings":false},"arrows":{"color":"#676986","size":{"value":24,"unit":"px"},"enabled":true},"avatar":{"backgroundColor":"#E5E5EB","placeholderTextColor":"#2C3E50","size":{"value":48,"unit":"px"},"enabled":true},"media":{"size":{"value":80,"unit":"px"},"imageGap":{"value":4,"unit":"px"},"enabled":true},"stars":{"height":{"value":18,"unit":"px"}},"productImageSize":{"value":48,"unit":"px"},"layout":{"name":"default","reviewDetailsPosition":"below","showProductName":false,"showAttributeBars":false,"showProductVariantName":false,"showProductDetails":"only-when-grouped"},"highlightColor":"#0E7A82","spaceAbove":{"value":20,"unit":"px"},"text":{"primaryColor":"#2C3E50","fontSizeRegular":{"value":14,"unit":"px"},"fontSizeSmall":{"value":12,"unit":"px"},"secondaryColor":"#676986"},"spaceBelow":{"value":20,"unit":"px"}},"defaultSort":"rating desc","autoPlay":false,"truncation":{"bodyMaxLines":4,"enabled":true,"truncateAll":false}},"mediaCarousel":{"minimumImages":1,"linkText":"Read More","autoPlay":false,"slideSize":"medium","arrowPosition":"outside"},"mediaGrid":{"gridStyleDesktop":{"layout":"default-desktop"},"gridStyleMobile":{"layout":"default-mobile"},"showMoreArrow":{"arrowColor":"#676986","enabled":true,"backgroundColor":"#f4f4f6"},"linkText":"Read More","infiniteScroll":false,"gapSize":{"value":10,"unit":"px"}},"questions":{"initialPageSize":6,"loadMorePageSize":6},"reviewsBadge":{"layout":"large","colorScheme":"dark"},"reviewsTab":{"enabled":false},"reviewsWidget":{"tabs":{"reviews":true,"questions":false},"header":{"columnDistribution":"space-around","verticalAlignment":"top","blocks":[{"columnWidth":"one-third","modules":[{"name":"rating-average","layout":"one-line"},{"name":"rating-breakdown","backgroundColor":"#f5f5f5","shadingColor":"#b0b0b0","stretchMode":"contain"}],"textAlignment":"center"},{"columnWidth":"one-third","modules":[{"name":"recommended"}],"textAlignment":"left"},{"columnWidth":"one-third","modules":[{"name":"attributes","layout":"stacked","stretchMode":"stretch"}],"textAlignment":"center"},{"columnWidth":"full","modules":[{"name":"reviews-summary","heading":"Reviews Summary","maxTextLines":5},{"name":"reviews-keywords","heading":"Customers Talked About","maxKeywords":5}],"textAlignment":"center"}]},"style":{"showDates":true,"border":{"color":"#B6B6B6","width":{"value":1,"unit":"px"}},"bodyFont":{"hasCustomFontSettings":false},"headingFont":{"hasCustomFontSettings":false},"filters":{"backgroundColorActive":"#878787","backgroundColor":"#FFFFFF","borderColor":"#DBDDE4","borderRadius":{"value":100,"unit":"px"},"borderColorActive":"#878787","textColorActive":"#FFFFFF","textColor":"#0B0B0B","searchHighlightColor":"#a8a8a8"},"avatar":{"backgroundColor":"#E5E5EB","placeholderTextColor":"#0B0B0B","size":{"value":48,"unit":"px"},"enabled":true},"stars":{"height":{"value":18,"unit":"px"}},"shadingColor":"#F7F7F8","productImageSize":{"value":48,"unit":"px"},"button":{"backgroundColorActive":"#262626","borderColorHover":"#DBDDE4","backgroundColor":"#262626","borderColor":"#DBDDE4","backgroundColorHover":"#212121","textColorHover":"#FFFFFF","borderRadius":{"value":4,"unit":"px"},"borderWidth":{"value":1,"unit":"px"},"borderColorActive":"#262626","textColorActive":"#FFFFFF","textColor":"#FFFFFF","font":{"hasCustomFontSettings":false}},"highlightColor":"#262626","spaceAbove":{"value":18,"unit":"px"},"text":{"primaryColor":"#0B0B0B","fontSizeRegular":{"value":14,"unit":"px"},"fontSizeLarge":{"value":20,"unit":"px"},"fontSizeSmall":{"value":12,"unit":"px"},"secondaryColor":"#878787"},"spaceBelow":{"value":18,"unit":"px"},"attributeBar":{"style":"rounded","backgroundColor":"#dedede","shadingColor":"#b0b0b0","markerColor":"#262626"}},"showWhenEmpty":true,"reviews":{"list":{"layout":{"name":"masonry","cardLayout":{"reviewDetailsPosition":"above","showProductName":false,"showFullHeightImages":false,"name":"featured","
875showAttributeBars":false,"showProductVariantName":false,"showProductDetails":"only-when-grouped"},"showProductVariantName":false,"columnAmount":4},"loyalty":{"maxInitialAchievements":3},"initialPageSize":4,"replyTruncation":{"bodyMaxLines":4,"enabled":true},"media":{"layout":"featured","size":{"value":200,"unit":"px"}},"truncation":{"bodyMaxLines":4,"truncateAll":false,"enabled":true},"loadMorePageSize":5},"controls":{"filterMode":"closed","freeTextSearchEnabled":false,"writeReviewButtonEnabled":true,"defaultSort":"rating desc"}}},"starRatings":{"showWhenEmpty":false,"clickBehavior":"scroll-to-widget","style":{"text":{"content":"review-count","style":"number-and-text","brackets":false},"spaceAbove":{"value":0,"unit":"px"},"singleStar":false,"spaceBelow":{"value":0,"unit":"px"},"height":{"value":18,"unit":"px"}}}},"features":{"attributeFiltersEnabled":true,"recorderPlusEnabled":true,"recorderQandaPlusEnabled":true,"reviewsKeywordsEnabled":true,"reviewsSummariesEnabled":true}}</script>
875 876 <style id="oke-css-vars">:root{--oke-widget-spaceAbove:18px;--oke-widget-spaceBelow:18px;--oke-starRating-spaceAbove:0;--oke-starRating-spaceBelow:0;--oke-button-backgroundColor:#262626;--oke-button-backgroundColorHover:#212121;--oke-button-backgroundColorActive:#262626;--oke-button-textColor:#fff;--oke-button-textColorHover:#fff;--oke-button-textColorActive:#fff;--oke-button-borderColor:#dbdde4;--oke-button-borderColorHover:#dbdde4;--oke-button-borderColorActive:#262626;--oke-button-borderRadius:4px;--oke-button-borderWidth:1px;--oke-button-fontWeight:700;--oke-button-fontSize:var(--oke-text-regular,14px);--oke-button-fontFamily:inherit;--oke-border-color:#b6b6b6;--oke-border-width:1px;--oke-text-primaryColor:#0b0b0b;--oke-text-secondaryColor:#878787;--oke-text-small:12px;--oke-text-regular:14px;--oke-text-large:20px;--oke-text-fontFamily:inherit;--oke-avatar-size:48px;--oke-avatar-backgroundColor:#e5e5eb;--oke-avatar-placeholderTextColor:#0b0b0b;--oke-highlightColor:#262626;--oke-shadingColor:#f7f7f8;--oke-productImageSize:48px;--oke-attributeBar-shadingColor:#b0b0b0;--oke-attributeBar-borderColor:undefined;--oke-attributeBar-backgroundColor:#dedede;--oke-attributeBar-markerColor:#262626;--oke-filter-backgroundColor:#fff;--oke-filter-backgroundColorActive:#878787;--oke-filter-borderColor:#dbdde4;--oke-filter-borderColorActive:#878787;--oke-filter-textColor:#0b0b0b;--oke-filter-textColorActive:#fff;--oke-filter-borderRadius:100px;--oke-filter-searchHighlightColor:#a8a8a8;--oke-mediaGrid-chevronColor:#676986;--oke-stars-foregroundColor:#fc0808;--oke-stars-backgroundColor:#a8a8a8;--oke-stars-borderWidth:0}.oke-w,oke-modal{--oke-title-fontWeight:600;--oke-title-fontSize:var(--oke-text-regular,14px);--oke-title-fontFamily:inherit;--oke-bodyText-fontWeight:400;--oke-bodyText-fontSize:var(--oke-text-regular,14px);--oke-bodyText-fontFamily:inherit}</style> 877 <style id="oke-reviews-custom-css">.okeReviews.oke-sr{padding-top:10px}[data-oke-widget] .okeReviews[data-oke-container].oke-w{padding-left:15px;padding-right:15px}div.okeReviews[data-oke-container] .oke-reviewContent-body p,.okeReviews[data-oke-container] .oke-modal span,div.okeReviews[data-oke-container] .oke-product-details-title,div.okeReviews[data-oke-container] .oke-product-details-name,div.okeReviews[data-oke-container] .oke-sortSelect-label,div.okeReviews[data-oke-container] .oke-select{color:var(--oke-text-primaryColor)}div.okeReviews[data-oke-container] .oke-showMore-button-text{color:var(--oke-button-textColor)}div.okeReviews[data-oke-container] .oke-reviewContent-body p{line-height:1.7}div.okeReviews[data-oke-container] .oke-avatar-placeholder{color:var(--oke-avatar-placeholderTextColor)}div.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover{box-shadow:none}div.okeReviews[data-oke-container] .oke-button{font-weight:600;text-transform:uppercase;transition:background-color .3s}div.okeReviews[data-oke-container] .oke-is-small .oke-w-reviews-filterToggle{width:100%;margin-bottom:10px}div.okeReviews[data-oke-container] .oke-is-small .oke-w-reviews-writeReview,div.okeReviews[data-oke-container] .oke-is-small .oke-w-writeReview.oke-button{width:100%}div.okeReviews[data-oke-container] .oke-w-reviews-controls{flex-wrap:wrap}div.okeReviews[data-oke-container] .oke-w-reviews-count{padding-right:1em}div.okeReviews[data-oke-container] .oke-select{height:unset;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='currentColor' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23838383' /%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E")}div.okeReviews[data-oke-container] .oke-sortSelect-label{margin-right:0}div.okeReviews[data-oke-container] .oke-reviewContent-title{color:#fc0808;font-weight:600;line-height:1;font-size:1.2em}div.okeReviews[data-oke-container] .oke-qw-question-main-body{font-weight:400}.reviewsHeading{text-align:center}</style> 878 <template id="oke-reviews-body-template"><svg id="oke-star-symbols" style="display:none!important" data-oke-id="oke-star-symbols"><symbol id="oke-star-empty" style="overflow:visible;"><path id="star-default--empty" fill="var(--oke-stars-backgroundColor)" stroke="var(--oke-stars-borderColor)" stroke-width="var(--oke-stars-borderWidth)" d="M3.34 13.86c-.48.3-.76.1-.63-.44l1.08-4.56L.26 5.82c-.42-.36-.32-.7.24-.74l4.63-.37L6.92.39c.2-.52.55-.52.76 0l1.8 4.32 4.62.37c.56.05.67.37.24.74l-3.53 3.04 1.08 4.56c.13.54-.14.74-.63.44L7.3 11.43l-3.96 2.43z"/></symbol><symbol id="oke-star-filled" style="overflow:visible;"><path id="star-default--filled" fill="var(--oke-stars-foregroundColor)" stroke="var(--oke-stars-borderColor)" stroke-width="var(--oke-stars-borderWidth)" d="M3.34 13.86c-.48.3-.76.1-.63-.44l1.08-4.56L.26 5.82c-.42-.36-.32-.7.24-.74l4.63-.37L6.92.39c.2-.52.55-.52.76 0l1.8 4.32 4.62.37c.56.05.67.37.24.74l-3.53 3.04 1.08 4.56c.13.54-.14.74-.63.44L7.3 11.43l-3.96 2.43z"/></symbol></svg></template>
878<script>document.addEventListener('readystatechange',() =>{Array.from(document.getElementById('oke-reviews-body-template')?.content.children)?.forEach(function(child){if(!Array.from(document.body.querySelectorAll('[data-oke-id='.concat(child.getAttribute('data-oke-id'),']'))).length){document.body.prepend(child)}})},{once:true});</script>
878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895<!-- END app snippet --> 896 897 <!-- BEGIN app snippet: okendo-reviews-json-ld --> 898<!-- END app snippet --> 899 900<!-- BEGIN app snippet: widget-plus-initialisation-script --> 901 902 903 904 905
905<script async id="okendo-reviews-script" src="https://cdn-static.okendo.io/reviews-widget-plus/js/okendo-reviews.js"></script>
905 906 907<!-- END app snippet --> 908 909 910<!-- END app block --><!-- BEGIN app block: shopify://apps/redo/blocks/redo_app_embed/c613644b-6df4-4d11-b336-43a5c06745a1 --><!-- BEGIN app snippet: env --> 911
912<script> 913 if (typeof process === "undefined") { 914 process = {}; 915 } 916 process.env ??= {}; 917 process.env.AMPLITUDE_API_KEY = "b5eacb35b49c693d959231826b35f7ca"; 918 process.env.REDO_API_URL = "https://shopify-cdn.getredo.com"; 919 process.env.REDO_CHAT_WIDGET_URL = "https://chat-widget.getredo.com"; 920 process.env.REDO_RETURN_APP_URL = "https://returns.getredo.com"; 921 process.env.REDO_SHOPIFY_SERVER_URL = "https://shopify-server.getredo.com"; 922 923 if (typeof window.redoStorefront === "undefined") { 924 window.redoStorefront = { 925 type: "shopify" 926 }; 927 } 928 window.redoStorefront.env ??= {}; 929 window.redoStorefront.env.AMPLITUDE_API_KEY = "b5eacb35b49c693d959231826b35f7ca"; 930 window.redoStorefront.env.REDO_API_URL = "https://shopify-cdn.getredo.com"; 931 window.redoStorefront.env.REDO_CHAT_WIDGET_URL = "https://chat-widget.getredo.com"; 932 window.redoStorefront.env.REDO_RETURN_APP_URL = "https://returns.getredo.com"; 933 window.redoStorefront.env.REDO_SHOPIFY_SERVER_URL = "https://shopify-server.getredo.com"; 934 935 // Shopper's active language/country, from Shopify's Liquid localization 936 // object. Read via getStorefrontLocale(); blanks mean unavailable. 937 window.redoStorefront.locale = { 938 language: "en", 939 country: "US" 940 }; 941 942 // Folder our bundle was served from. Webpack's "auto" publicPath guesses this by 943 // grabbing the last
943<script> on the page, which may pick a stranger's folder. 944 window.redoStorefront.assetBase = 945 "https://cdn.shopify.com/extensions/01a0f826-ba91-7674-85e0-557ca0fea2f7/redo-v2.30786/assets/main.js".split(/[?#]/)[0].replace(/\/[^/]+$/, "/"); 946</script>
vendor: 1 bytes, line 946
946
947<script> 948try { 949 if (typeof window.redoStorefrontStaging === "undefined") { 950 window.redoStorefrontStaging = { 951 type: "shopify", 952 storeUrl: "myfirmtech.myshopify.com", 953 shopify: { 954 customDomain: "myfirmtech.com", 955 permanentDomain: "myfirmtech.myshopify.com" 956 } 957 }; 958 } 959} catch {} 960</script>
960<!-- END app snippet -->
961<script> 962 (function() { 963 const parts = navigator.userAgent.split(" ").map(part => btoa(part)).join("").replace(/=/g, "").toLowerCase(); 964 if (!parts.includes("2hyb21lluxpz2h0ag91c2") && !parts.includes("w90bwzwcg93zxikdiwmjipk")) { 965 const script = document.createElement("script"); 966 script.async = true; 967 script.src = "https://cdn.shopify.com/extensions/01a0f826-ba91-7674-85e0-557ca0fea2f7/redo-v2.30786/assets/main.js"; 968 document.head.appendChild(script); 969 } 970 })(); 971</script>
971 972 973<!-- END app block --><!-- BEGIN app block: shopify://apps/rebuy-personalization-engine/blocks/rebuy-global-embed/a26ae9b9-933b-40bf-bbc6-bf1220bbc4dc -->
974<script> 975 window.Rebuy = window.Rebuy || {}; 976 window.Rebuy.customer = window.Rebuy.customer || {}; 977 978 window.Rebuy.market = window.Rebuy.market || {}; 979 980 window.Rebuy.market.country = "US"; 981 982 983 window.Rebuy.market.locale = "en"; 984 985</script>
985 986 987 988 989 990 991<!-- END app block --><!-- BEGIN app block: shopify://apps/sami-wholesale/blocks/app-embed-block/799b9db0-2c2b-4b20-8675-98acd123fbb2 --><style>.samita-ws-loading [samitaWS-cart-item-key],.samita-ws-loading [samitaWS-product-id],.samita-ws-loading [samitaWS-variant-id],.samita-ws-loading [samitaWS-cart-total-price],.samita-ws-loading [samitaWS-cart-total-discount],.samita-ws-loading [data-cart-item-regular-price],.samita-ws-loading [samitaWS-ajax-cart-subtotal],.samita-ws-loading [data-cart-subtotal],.samita-ws-loading [samitaws-product-price]{visibility:hidden;opacity:0}[samitaws-product-main-price="true"] [samitaws-product-price]{visibility:hidden;opacity:0}.samitaWS-original-checkout-button,.samitaWS-original-atc-button{visibility:hidden;opacity:0;display:none!important}.samita-ws-loading .shopify-payment-button .shopify-payment-button__button--unbranded{visibility:hidden;opacity:0;display:none!important}</style>
991<script type="text/javascript"> 992 document.getElementsByTagName('html')[0].classList.add('samita-ws-loading', 'samita-ws-enable'); 993 window.addEventListener("samitaWSRenderWholesaleCompleted", function(e){ 994 document.getElementsByTagName('html')[0].classList.remove('samita-ws-loading'); 995 }); 996 var samitaWSRgFormRecaptchaInit = function(){}; 997 var samitaWholesaleRecaptchaInit = function(){}; 998 999 window.Samita = window.Samita || {}; 1000 window.Samita.Wholesale = window.Samita.Wholesale || {};Samita.Wholesale.shop = { 1001 url: 'myfirmtech.myshopify.com', 1002 app_url: 'https://wholesale.samita.io', 1003 api_url: '/apps/sami-wholesale', 1004 settings: { custom: { cache_key: "FQMMXkxSGUZHFFN" } }, 1005 definition: {"shop":true,"theme":"theme_137274720406","themeInfo":"themeInfo_137274720406","registrationForms":[],"quickOrderForms":[],"taxExempt":false,"taxExempts":[],"paymentTerm":false,"paymentTerms":[],"invoicePayment":false,"invoicePayments":[],"shippingRate":[],"ver":"fUktPCUUMTAMPR"}, 1006 configuration: { 1007 money_format: "${{amount}}", 1008 hash: "wxBBldcGAgaEFk" 1009 } 1010 };Samita.Wholesale.themeInfo = 'themeInfo_137274720406'; 1011 Samita.Wholesale.theme = 'theme_137274720406';Samita.Wholesale.shop.locale = (typeof Shopify!= "undefined" && Shopify?.locale) ? Shopify?.locale : "en"; 1012 Samita.Wholesale.shop.market = { handle: "us" }; 1013 1014 Samita.Wholesale.wholesalePricing = [];Samita.Wholesale.wholesalePricing[25251] = {"25251":{"id":25251,"configs":{"discount_group":{"type":"percent","value":40},"discount_for_variants":[{"id":7810371420310,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":42754768896150,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]},{"id":7037087580310,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":40577802338454,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]},{"id":8315846361238,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":44289152254102,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]},{"id":7462086508694,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":41753911001238,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]}]},"product_configs":{"apply_product":{"type":"products","manual":{"apply_for_variants":false,"ids":[7810371420310,7037087580310,8315846361238,7462086508694],"variants":[{"key":7810371420310,"values":[42754768896150]},{"key":7037087580310,"values":[40577802338454]},{"key":8315846361238,"values":[44289152254102]},{"key":7462086508694,"values":[41753911001238]}],"tags":[]},"collections":{"ids":[]}}},"customer_configs":{"apply_customer":{"type":"customer-tags","tags":["wholesale"]}}}}[25251];Samita.Wholesale.wholesalePricing[25256] = {"25256":{"id":25256,"configs":{"discount_group":{"type":"percent","value":50},"discount_for_variants":[{"id":8444964503702,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":45187326869654,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]},{"id":8444819832982,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":45186897084566,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]},{"id":8444965322902,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":45187329327254,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]},{"id":8444965126294,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":45187328966806,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]}]},"product_configs":{"apply_product":{"type":"products","manual":{"apply_for_variants":false,"ids":[8444964503702,8444819832982,8444965322902,8444965126294],"variants":[{"key":8444964503702,"values":[45187326869654]},{"key":8444819832982,"values":[45186897084566]},{"key":8444965322902,"values":[45187329327254]},{"key":8444965126294,"values":[45187328966806]}],"tags":[]},"collections":{"ids":[]}}},"customer_configs":{"apply_customer":{"type":"customer-tags","tags":["wholesale"]}}}}[25256];Samita.Wholesale.volumePricing = [];Samita.Wholesale.registrationForms = []; 1015 Samita.Wholesale.registrationFormIds = [];Samita.Wholesale.registrationFormIds = [8565];Samita.Wholesale.registrationForms[8565] = {"8565":{"accountPage":{"showAccountDetail":true,"editAccountPage":false,"header":"Header","active":false,"title":"Account details","headerDescription":"Fill out the form to change account information","afterUpdate":"registrationForm.SideBar.Account page Message after update","message":"\u
1015003ch5\u003eAccount edited successfully!\u003c\/h5\u003e","footer":"Footer","updateText":"Update","footerDescription":null},"afterSubmit":{"action":"clearForm","message":"\u003ch4\u003eThanks for getting in touch!\u0026nbsp;\u003c\/h4\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eWe appreciate you contacting us. One of our colleagues will get back in touch with you soon!\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eHave a great day!\u003c\/p\u003e","redirectUrl":null},"appearance":{"layout":"boxed","width":600,"style":"classic","mainColor":"#000000","headingColor":"#000","labelColor":"#000","descriptionColor":"#6c757d","optionColor":"#000","paragraphColor":"#000","paragraphBackground":"#fff","background":"color","backgroundColor":"#FFF","backgroundImage":null,"backgroundImageAlignment":"middle","formType":"normalForm"},"elements":[{"id":"text","type":"text","label":"First Name","placeholder":"First Name","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":true,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":50},{"id":"text-2","type":"text","label":"Last Name","placeholder":"Last Name","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":true,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":50},{"id":"email","type":"email","label":"Email","placeholder":"Email","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":true,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":50},{"id":"phone","type":"phone","label":"Phone","placeholder":"Phone","description":null,"validatePhone":false,"onlyShowFlag":false,"defaultCountryCode":"us","limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":50},{"id":"password","type":"password","label":"Password","placeholder":"Enter your password","description":null,"limitCharacters":false,"characters":100,"validationRule":"^.{6,}$","advancedValidateRule":null,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":true,"ifHideLabel":false,"hasConfirm":true,"storePasswordData":false,"labelConfirm":"Confirm password","placeholderConfirm":"Confirm your password","descriptionConfirm":null,"inputIcon":null,"columnWidth":50},{"id":"text-8","type":"text","label":"Company","placeholder":"Company","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":false,"ifHideLabel":false,"inputIcon":null,"columnWidth":50},{"id":"text-3","type":"text","label":"Address Line 1","placeholder":"Address Line 1","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":100},{"id":"text-4","type":"text","label":"Address Line 2","placeholder":"Address Line 2","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":false,"ifHideLabel":false,"inputIcon":null,"columnWidth":100},{"id":"text-5","type":"text","label":"City","placeholder":"City","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":33.33},{"id":"text-6","type":"text","label":"State\/Prov\/Region","placeholder":"State\/Prov\/Region","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":33.33},{"id":"text-7","type":"text","label":"Postal\/Zip","placeholder":"Postal\/Zip","description":null,"limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"hasShopifyMapField":false,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":33.33},{"id":"select","type":"select","label":"Country","placeholder":"Select your country","options":"Afghanistan\nAland Islands\nAlbania\nAlgeria\nAndorra\nAngola\nAnguilla\nAntigua And Barbuda\nArgentina\nArmenia\nAruba\nAustralia\nAustria\nAzerbaijan\nBahamas\nBahrain\nBangladesh\nBarbados\nBelarus\nBelgium\nBelize\nBenin\nBermuda\nBhutan\nBolivia\nBosnia And Herzegovina\nBotswana\nBouvet Island\nBrazil\nBritish Indian Ocean Territory\nVirgin Islands, British\nBrunei\nBulgaria\nBurkina Faso\nBurundi\nCambodia\nRepublic of Cameroon\nCanad
1015a\nCape Verde\nCaribbean Netherlands\nCayman Islands\nCentral African Republic\nChad\nChile\nChina\nChristmas Island\nCocos (Keeling) Islands\nColombia\nComoros\nCongo\nCongo, The Democratic Republic Of The\nCook Islands\nCosta Rica\nCroatia\nCuba\nCuraçao\nCyprus\nCzech Republic\nCôte d'Ivoire\nDenmark\nDjibouti\nDominica\nDominican Republic\nEcuador\nEgypt\nEl Salvador\nEquatorial Guinea\nEritrea\nEstonia\nEswatini\nEthiopia\nFalkland Islands (Malvinas)\nFaroe Islands\nFiji\nFinland\nFrance\nFrench Guiana\nFrench Polynesia\nFrench Southern Territories\nGabon\nGambia\nGeorgia\nGermany\nGhana\nGibraltar\nGreece\nGreenland\nGrenada\nGuadeloupe\nGuatemala\nGuernsey\nGuinea\nGuinea Bissau\nGuyana\nHaiti\nHeard Island And Mcdonald Islands\nHonduras\nHong Kong\nHungary\nIceland\nIndia\nIndonesia\nIran, Islamic Republic Of\nIraq\nIreland\nIsle Of Man\nIsrael\nItaly\nJamaica\nJapan\nJersey\nJordan\nKazakhstan\nKenya\nKiribati\nKosovo\nKuwait\nKyrgyzstan\nLao People's Democratic Republic\nLatvia\nLebanon\nLesotho\nLiberia\nLibyan Arab Jamahiriya\nLiechtenstein\nLithuania\nLuxembourg\nMacao\nMadagascar\nMalawi\nMalaysia\nMaldives\nMali\nMalta\nMartinique\nMauritania\nMauritius\nMayotte\nMexico\nMoldova, Republic of\nMonaco\nMongolia\nMontenegro\nMontserrat\nMorocco\nMozambique\nMyanmar\nNamibia\nNauru\nNepal\nNetherlands\nNetherlands Antilles\nNew Caledonia\nNew Zealand\nNicaragua\nNiger\nNigeria\nNiue\nNorfolk Island\nKorea, Democratic People's Republic Of\nNorth Macedonia\nNorway\nOman\nPakistan\nPalestinian Territory, Occupied\nPanama\nPapua New Guinea\nParaguay\nPeru\nPhilippines\nPitcairn\nPoland\nPortugal\nQatar\nReunion\nRomania\nRussia\nRwanda\nSamoa\nSan Marino\nSao Tome And Principe\nSaudi Arabia\nSenegal\nSerbia\nSeychelles\nSierra Leone\nSingapore\nSint Maarten\nSlovakia\nSlovenia\nSolomon Islands\nSomalia\nSouth Africa\nSouth Georgia And The South Sandwich Islands\nSouth Korea\nSouth Sudan\nSpain\nSri Lanka\nSaint Barthélemy\nSaint Helena\nSaint Kitts And Nevis\nSaint Lucia\nSaint Martin\nSaint Pierre And Miquelon\nSt. Vincent\nSudan\nSuriname\nSvalbard And Jan Mayen\nSweden\nSwitzerland\nSyria\nTaiwan\nTajikistan\nTanzania, United Republic Of\nThailand\nTimor Leste\nTogo\nTokelau\nTonga\nTrinidad and Tobago\nTunisia\nTurkey\nTurkmenistan\nTurks and Caicos Islands\nTuvalu\nUnited States Minor Outlying Islands\nUganda\nUkraine\nUnited Arab Emirates\nUnited Kingdom\nUnited States\nUruguay\nUzbekistan\nVanuatu\nHoly See (Vatican City State)\nVenezuela\nVietnam\nWallis And Futuna\nWestern Sahara\nYemen\nZambia\nZimbabwe","defaultOption":null,"description":null,"hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":null,"columnWidth":100}],"errorMessage":{"required":"Please fill in field","invalid":"Invalid","invalidName":"Invalid name","invalidEmail":"Invalid email","invalidURL":"Invalid url","invalidPhone":"Invalid phone","invalidNumber":"Invalid number","invalidPassword":"Invalid password","confirmPasswordNotMatch":"Confirmed password doesn't match","customerAlreadyExists":"Customer already exists","fileSizeLimit":"File size limit","fileNotAllowed":"File not allowed","requiredCaptcha":"Required captcha","requiredProducts":"Please select product","limitQuantity":"The number of products left in stock has been exceeded","shopifyInvalidPhone":"phone - Enter a valid phone number to use this delivery method","shopifyPhoneHasAlready":"phone - Phone has already been taken","shopifyInvalidProvice":"addresses.province - is not valid","otherError":"Something went wrong, please try again"},"footer":{"description":null,"previousText":"Previous","nextText":"Next","submitText":"Submit","resetButton":false,"resetButtonText":"Reset","submitFullWidth":false,"submitAlignment":"left"},"header":{"active":true,"title":"Create an account","description":"\u003cp\u003eComplete form below to signup for Shopify account.\u003c\/p\u003e"},"integration":{"shopify":{"createAccount":true,"ifExist":"returnError","showMessage":true,"messageRedirectToLogin":"You already registered. Click \u003ca href=\"\/account\/login\"\u003ehere\u003c\/a\u003e to login","sendEmailInvite":true,"acceptsMarketing":false,"integrationElements":{"text":"first_name","text-2":"last_name","email":"email","phone":"phone","password":"password","text-3":"addresses.address1","text-4":"addresses.address2","text-5":"addresses.city","text-6":"addresses.province","text-7":"addresses.zip","select":"addresses.country"}}},"publish":{"publishType":"embedCode","embedCode":"\u003cdiv class=\"samitaWS-registrationForm\" data-id=\"ODU2NQ==\"\u003e\u003c\/div\u003e","shortCode":"{SamitaWSRegistrationForm:ODU2NQ==}","popup":"\u003cbutton class=\"samitaWS-registrationForm-open\" data-id=\"ODU2NQ==\"\u003eOpen form\u003c\/button\u003e","lightbox":"\u003cdiv class=\"samitaWS-registrationForm-publish-modal lightbox hidden\" data-id=\"8565\"\u003e\u003cdiv class=\"samitaWS-registrationForm-modal-content\"\u003e\u003cdiv class=\"samitaWS-registrationForm\" data-id=\"ODU2NQ==\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e","selectPage":"index","selectPositionOnPage":"top","selectTime":"forever","setCookie":"1"},"reCaptcha":{"enable":false}}}[8565];Samita.Wholesale.quickOrderForms = []; 1016 Samita.Wholesale.quickOrderFormIds = [];Samita.Wholesale.quickOrderFormIds = [5229];
1016Samita.Wholesale.quickOrderForms[5229] = {"5229":{"id":5229,"title":"Wholesale Order Form","configs":{"quickOrder_table_template":{"template":"basic","display_on_page":{"handle":"wholesale-order-form"},"copyType":"embedcode","use_short_code":true,"enable_quick_view":true,"enable_quick_order_form_menu":true,"enable_multiple_addCart":true,"show_title":true,"show_description":true,"table_elements":{"columns":[{"title":"Product","status":true,"require":true,"attr":"product","apply":"new"},{"title":"Stock","status":true,"require":false,"attr":"product_stock","apply":"new"},{"title":"Quantity","status":true,"require":true,"attr":"quantity","apply":"general"},{"title":"Action","status":true,"require":true,"attr":"action","apply":"general"}]},"pagination":{"type":"pagination","per_page":20},"design":{"form_width":{"value":100,"setCarat":"%"},"bg_buttonColor":"rgba(225,2,2,1)","bg_buttonHoverColor":"rgba(225,2,2,1)","bg_tbHeader":"#ffffff","bg_tbRow":"#ffffff","border_color":"#d9d9d9","border_size":1,"border_style":"solid","customCss":null,"txt_buttonColor":"#ffffff","txt_buttonHoverColor":"#ffffff","txt_headerColor":"#000000","txt_headerFontsize":"18","txt_rowColor":"#212121","txt_rowFontsize":14,"txt_titleColor":"rgba(225,2,2,1)","txt_descriptionColor":"#000","bg_paginationActive":"rgba(225,2,2,1)","txt_paginationActive":"#ffffff","bg_subtotal_badge":"rgba(225,2,2,1)","txt_subtotal_badge":"#ffffff"}}},"product_configs":{"apply_product":{"type":"collections","manual":{"ids":[]},"collections":{"ids":[333985317014]}}},"customer_configs":{"apply_customer":{"type":"all","tags":[]},"exclude_customer":{"type":"none","tags":[]}},"page_type":"quick_order_page"}}[5229];Samita.Wholesale.orderLimit = [];Samita.Wholesale.orderLimit[889] = {"889":{"id":889,"status":1,"configs":{"quantity_increment":{"active":false,"value":null},"order_limit":{"scope":"quantity","type":"variant","minimum":"10","maximum":"99"},"message":{"product_page":true,"design":{"bg_mes":"#FFF1E3","txt_mes":"#5E4200"}},"discount_for_variants":[{"id":7037087580310,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":40577802338454,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]}]},"product_configs":{"apply_product":{"type":"products","manual":{"ids":[7037087580310],"variants":[{"key":7037087580310,"values":[40577802338454]}],"tags":[]},"collections":{"ids":[]}},"exclude_product":{"type":"none","manual":{"ids":[],"tags":[]},"collections":{"ids":[]}}},"customer_configs":{"apply_customer":{"type":"customer-tags","tags":["wholesale"]},"exclude_customer":{"type":"none","tags":[]}}}}[889];Samita.Wholesale.orderLimit[890] = {"890":{"id":890,"status":1,"configs":{"quantity_increment":{"active":false,"value":null},"order_limit":{"scope":"quantity","type":"variant","minimum":"10","maximum":"107"},"message":{"product_page":true,"design":{"bg_mes":"#FFF1E3","txt_mes":"#5E4200"}},"discount_for_variants":[{"id":7810371420310,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":42754768896150,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]}]},"product_configs":{"apply_product":{"type":"products","manual":{"ids":[7810371420310],"variants":[{"key":7810371420310,"values":[42754768896150]}],"tags":[]},"collections":{"ids":[]}},"exclude_product":{"type":"none","manual":{"ids":[],"tags":[]},"collections":{"ids":[]}}},"customer_configs":{"apply_customer":{"type":"customer-tags","tags":["wholesale"]},"exclude_customer":{"type":"none","tags":[]}}}}[890];Samita.Wholesale.orderLimit[891] = {"891":{"id":891,"status":1,"configs":{"quantity_increment":{"active":false,"value":null},"order_limit":{"scope":"quantity","type":"variant","minimum":"5","maximum":"59"},"message":{"product_page":true,"design":{"bg_mes":"#FFF1E3","txt_mes":"#5E4200"}},"discount_for_variants":[{"id":7462086508694,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":41753911001238,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]}]},"product_configs":{"apply_product":{"type":"products","manual":{"ids":[7462086508694],"variants":[{"key":7462086508694,"values":[41753911001238]}],"tags":[]},"collections":{"ids":[]}},"exclude_product":{"type":"none","manual":{"ids":[],"tags":[]},"collections":{"ids":[]}}},"customer_configs":{"apply_customer":{"type":"customer-tags","tags":["wholesale"]},"exclude_customer":{"type":"none","tags":[]}}}}[891];Samita.Wholesale.orderLimit[892] = {"892":{"id":892,"status":1,"configs":{"quantity_increment":{"active":false,"value":null},"order_limit":{"scope":"quantity","type":"variant","minimum":"5","maximum":"49"},"message":{"product_page":true,"design":{"bg_mes":"#FFF1E3","txt_mes":"#5E4200"}},"discount_for_variants":[{"id":8315846361238,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}],"variant_pricing":false,"variants":[{"id":44289152254102,"position":0,"duplicated":false,"discount_groups":[{"name":"wholesale","type":"percent","value":null}]}]}]},"product_configs":{"apply_product":{"type":"products","manual":{"ids":[8315846361238],"variants":[{"key":83
101615846361238,"values":[44289152254102]}],"tags":[]},"collections":{"ids":[]}},"exclude_product":{"type":"none","manual":{"ids":[],"tags":[]},"collections":{"ids":[]}}},"customer_configs":{"apply_customer":{"type":"customer-tags","tags":["wholesale"]},"exclude_customer":{"type":"none","tags":[]}}}}[892];Samita.Wholesale.extraFee = [];Samita.Wholesale.shippingRate = []; 1017 Samita.Wholesale.shippingRateIds = [];Samita.Wholesale.paymentTerms = []; 1018 Samita.Wholesale.paymentTerm = {}; 1019 Samita.Wholesale.paymentTermIds = [];Samita.Wholesale.invoicePayments = []; 1020 Samita.Wholesale.invoicePayment = {}; 1021 Samita.Wholesale.invoicePaymentIds = [];Samita.Wholesale.taxExempts = []; 1022 Samita.Wholesale.taxExempt = {}; 1023 Samita.Wholesale.taxExemptIds = [];Samita.Wholesale.taxDisplays = []; 1024 Samita.Wholesale.taxDisplay = {};Samita.Wholesale.taxOverride = [];Samita.Wholesale.shippingRateMetafields = null; 1025 Samita.Wholesale.linklists = ""; 1026 Samita.Wholesale.canonical_url = "https:\/\/myfirmtech.com\/"; 1027 Samita.Wholesale.url = window.Samita.Wholesale.shop.app_url; 1028 Samita.Wholesale.apiUrl = ((typeof Shopify!= "undefined" && Shopify?.routes?.root) ? Shopify.routes.root.replace(/\/$/, '') : '') + (window.Samita.Wholesale.shop?.api_url || ''); 1029 Samita.Wholesale.themeOs20 = true; 1030 Samita.Wholesale.__webpack_public_path__ = "https://cdn.shopify.com/extensions/01a0f62a-e0a3-703c-bda5-efe7414b9c90/wholesale-sami-846/assets/"; 1031 Samita.Wholesale.products = Samita.Wholesale.products || [];Samita.Wholesale.cart = {"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};Samita.Wholesale.page = { 1032 title : document.title.replaceAll('"', "'"), 1033 href : window.location.href, 1034 type: "index", 1035 handle: "" 1036 };</script>
1036 1037<!-- END app block --><!-- BEGIN app block: shopify://apps/tinyseo-seo-speed/blocks/store-json-ld-embed/0605268f-f7c4-4e95-b560-e43df7d59ae4 --> 1038<!-- END app block --><!-- BEGIN app block: shopify://apps/tinyseo-seo-speed/blocks/breadcrumbs-json-ld-embed/0605268f-f7c4-4e95-b560-e43df7d59ae4 --> 1039<!-- END app block --><!-- BEGIN app block: shopify://apps/tinyseo-seo-speed/blocks/website-json-ld-embed/0605268f-f7c4-4e95-b560-e43df7d59ae4 --> 1040<!-- END app block --><!-- BEGIN app block: shopify://apps/sami-b2b-lock/blocks/app-embed/8d86a3b4-97b3-44ab-adc1-ec01c5a89da9 -->
1041<script> 1042 window.Samita = window.Samita || {}; 1043 Samita.SamitaLocksAccessParams = Samita.SamitaLocksAccessParams || {}; 1044 Samita.SamitaLocksAccessParams.cart = {item_count:0,total_price:0,currency:"USD",items:[]}; 1045 Samita.SamitaLocksAccessParams.settings = {"general":{"customcss":"html body .lock__notificationTemplateWrapper img[alt=\"smtImage\"] {\ncontent:url(https://cdn.shopify.com/s/files/1/0577/3177/6662/files/door-lock-old-free-photo-on-pi_1ln7yit.png?v=1735780590) !important;\n object-fit: contain !important;\n width:300px !important;\n height:auto !important;\n }\n html body .lock__notificationFooter #passcode{\n flex:1 !important;\n box-shadow:none !important;\n }\n\n html body .lock__notificationTemplateWrapper{\n width:50% !important;\n background:transparent !important;\n box-shadow:none !important;\n }\n\n html body .lock__notificationTemplateWrapper .Lock__Error{\n margin-top:5px !important;\n }\n\n html body .Lock__Watermark{\n padding: 0 40px !important;\n }\n \n html body .Lock__Watermark p{\n font-size: 15px !important;\n font-family: inherit;\n }\n\n @media(max-width:1024px){\n html body .lock__notificationTemplateWrapper{\n width:100% !important;\n }\n }\n\n html body .lock__notificationFooter #passcode:focus-visible {\n border: 1px solid #ccc !important;\n }\n\n\nhtml body .lock__notificationFooter{\n max-width:600px;\n margin-left: auto !important;\n margin-right:auto !important;\n }\n\n html body .Lock__Error{\n \n max-width:600px;\n margin-left: auto !important;\n margin-right:auto !important;\n }","price_atc":"plain_text","effect_button":"ripple","collectFeedback":true,"placeholder_message":true,"placeholder_templateLock":true},"template":{"text_color":"#000","btn_bg_color":"#7396a2","bg_placeholder":"#f3f3f3","btn_text_color":"#ffffff","bg_notification":"#fff","input_box_shadow":"#ccc","plain_text_color":"#230d0d","color_placeholder":"#000","button_priceAtc_bg":"#5487a0","input_passcode_color":"#000","button_priceAtc_color":"#fff","input_passcode_background":"#ffffff"}}; 1046 Samita.SamitaLocksAccessParams.locks = []; 1047 Samita.SamitaLocksAccessParams.ShopUrl = Shopify.shop; 1048 Samita.SamitaLocksAccessParams.features = {"conditions_specific_products":-1,"isCreateAbleLock":true,"number_lock_to_add":-1,"login_to_view_products":true,"login_to_view_pages":true,"login_to_view_urls":true,"login_to_view_blogs":true,"login_to_view_collections":true,"login_to_view_whole_websites":true,"password_protect_pages_with_locks":true,"add_multiple_passcode":true,"secret_link_view_page":true,"exclude_specific_URLs":true,"login_view_price":true,"hide_product_and_collection":true,"hide_add_to_cart_price_and_btn":true,"redirect_to_any_page_url":true,"hide_price_on_gg_search":true,"select_blog_article_to_lock":true,"select_customer_for_lock":true,"exclude_product":true,"request_access":true,"integrateApp":true,"date_range":true,"country_restriction":true,"available_languages":true,"lock_variants":true,"checkout_lock":true}; 1049 Samita.SamitaLocksAccessParams.themeInfo = [{"id":131141370006,"name":"Kalles-4.0.5 official","role":"unpublished","theme_store_id":null,"selected":false,"theme_name":"Kalles","theme_version":"4.0.5"},{"id":132113596566,"name":"Kalles-4.0.5 official v1 [Okendo]","role":"unpublished","theme_store_id":null,"selected":false,"theme_name":"Kalles","theme_version":"4.0.5"},{"id":132420534422,"name":"Copy of Kalles-4.0.5 official [Okendo]","role":"unpublished","theme_store_id":null,"selected":false,"theme_name":"Kalles","theme_version":"4.0.5"},{"id":137274720406,"name":"Live - Impact - FirmTech 07-20-26","role":"main","theme_store_id":1190,"selected":true,"theme_name":"Impact","theme_version":"5.4.1"},{"id":137719218326,"name":"V1 Backup - Live - Impact - Firmtech","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":139099799702,"name":"V2 Backup - Live - Impact - Firmtech ","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":139927650454,"name":"Shopify Advisor copy LIve ","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":141004243094,"name":"Copy of Live - Impact - CS_Website - Dev - Firm...","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":147728236694,"name":"[SFL Test] Live - Impact - CS_Website - Dev - Firm","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":147741769878,"name":"Copy of Live - Impact - CS_Website - Dev - Firm...","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":147844890774,"name":"Redo test","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":147953942678,"name":"Copy of Live - Impact - CS_Website - Dev - Firm...","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":148020461718,"name":"Frontrow Edits","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":148077707414,"name":"TechRing-No FrontRow","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":148087210134,"name":"AB TEST - DOCTORS VIDEOS","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":148156055702,"name":"DOC MAP/DOCTORS VIDEOS","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":148183449750,"name":"Duplicate - Impact - FirmTech 08-04-26","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":148242432150,"name":"Copy of Live - Impact - FirmTech 07-20-26","role":"unpublished","theme_store_id":1190,"selected":false,"theme_name":"Impact","theme_version":"5.4.1"},{"id":125527097494,"name":"NWS || Firmtech","role":"unpublished","theme_store_id":null,"selected":false,"theme_name":"Molla","theme_version":"1.7.4"},{"id":125815226518,"name":"ACF STORAGE THEME - DO NOT DELETE OR RENAME","role":"unpublished","theme_store_id":null,"selected":false},{"id":128955121814,"name":"NWS || Firmtech with Installments message","role":"unpublished","theme_store_id":null,"selected":false,"theme_name":"Molla","theme_version":"1.7.4"},{"id":130587852950,"name":"Copy of NWS || Firmtech Riley's render 1","role":"unpublished","theme_store_id":null,"selected":false,"theme_name":"Molla","theme_version":"1.7.4"}]; 1050 Samita.SamitaLocksAccessParams.appUrl = "https:\/\/lock.samita.io"; 1051 Samita.SamitaLocksAccessParams.selector = {"theme_store_id":null,"theme_name":"default","product":{"price":".product__price, div[id*='price-template'], .product-details .product-pricing, .product-price, .product-detail__price.product-price, .price__container .price__regular, [data-section-id='product-template'] .product__price, ul[data-price], .price.price--large, dl[data-price], .product__content-header p.product__price, .product-single__prices, .product-single__meta .price-container, ul.product-single__meta-list.list--no-bullets.list--inline, form#AddToCartForm-product-template > p.product__price, .product-price > p.price.product-single__price.product-single__price-product-template, .info_content > p.product-single__price.product-single__price-nov-product-template, .product-form__info-item:nth-child(1) .product-form__info-content, p#product-price, .sh-price-wrapper, .prod-details-info-content h5.price, p.modal_price.product__price, .tt-product-single-info .tt-price, .product-info__price.js-
1051price-wrapper, h3.product-single__price-text, .product-single__price-product-template, .modal_price .price__container, h2.h4-style.price-area, .product-details .product-pricing .product--price, span#productPrice-product-template, .product-single__meta .product-single__prices, .site-box-content span.price, .desc_blk .price, p.modal_price, .product-price.product-main-price, .ProductMeta__PriceList.Heading, .pricing.lht, div#price.detail-price, .h2.product-single__price span#productPrice, .product__price.h6, h2#ProductPrice, .product-submit span.product-price, .product-single__meta .product__price, .product-info__wrapper .product-price, .section.product_section p.modal_price, .product-price_wrapper .product-price, span#ProductPrice, div#product-price span#Main_price_data, ul.product-page--pricing, p#productPrice, div[data-price-wrapper], .product-details div#price, p.price--container, .product-details h2.offers, .price-container.text-money, .product-area__row.cc-animate-init .product-area__col.product-area__col--price, .product-form-block .product-price.product-price--large, .product__details .product__price, .product-meta__price-list-container, span#price-field","btnAtc":"button.button.product-selector__submit, button#AddToCart, .product-form__buttons button.product-form__submit, .product-form button.product__add-to-cart-button, .product__submit__buttons .btn--add-to-cart, .paymentButtonsWrapper button#AddToCart, form.product-form--wide button#AddToCart, .product-form__payment-container button.product-form__add-button, product-page--submit-action button#purchase, form[action='/cart/add'] button[data-cart-action='added'], input.add-to-cart","mainContent":"div#main, main#content, .is-beside-vertical-header, main#MainContent, main#main, .wrapper.main-content, main#site-main,.main-content"},"collection":{"productSelector":"card-product.card-product, .product-list__inner product-item.product-item, ul.grid.product-grid li.grid__item, .product-list-item, ul.grid.grid-cols-1 li.bg-primary-background, div#gf-products > div","collectionSelect":"div#product-grid .card-collection, .collection-list .collection-list__item, .collection-item, ul.grid.grid-cols-1 li.relative.bg-primary-background.w-full","price":"card-product.card-product .price.card-product__price, .product-item-meta__price-list-container, span.price, .product-price, .card-information .price, p.product-list-item-price, .relative .text-center.mt-1, .spf-product-card__price-wrapper","btnAtc":"card-product.card-product ul.list-unstyled, form.spf-product__form"},"searchPage":{"productSelector":"card-product.card-product, ul.grid.product-grid li.grid__item, .product-block, div#gf-products > div","price":"card-product.card-product .price.card-product__price, span.price, .card-information .price, .product-price, .spf-product-card__price-wrapper","btnAtc":"card-product.card-product ul.list-unstyled"},"otherPage":{"productSelector":"card-product.card-product, ul.grid.product-grid li.grid__item, .product-block, div#gf-products > div","collectionSelect":"div#product-grid .card-collection, .collection-list","price":"card-product.card-product .price.card-product__price, span.price, .card-information .price, .product-price, .spf-product-card__price-wrapper","btnAtc":"card-product.card-product ul.list-unstyled, form.spf-product__form"},"index":{"productSelector":"card-product.card-product, ul.grid.product-grid li.grid__item, .product-block, div#gf-products > div","collectionSelect":"div#product-grid .card-collection, .collection-list .collection-list__item","price":"card-product.card-product .price.card-product__price, span.price, .card-information .price, .product-price, .spf-product-card__price-wrapper","btnAtc":"card-product.card-product ul.list-unstyled, form.spf-product__form"}}; 1052 // Keep the server-provided value separate. Custom JS below can continue to 1053 // mutate `selector`; storefront code will apply only those mutations after 1054 // resolving the correct base selector for the current theme. 1055 Samita.SamitaLocksAccessParams.selectorFromMetafield = JSON.parse(JSON.stringify(Samita.SamitaLocksAccessParams.selector)); 1056 Samita.SamitaLocksAccessParams.translation = {"default":{"general":{"Back":"Back","Submit":"Submit","Enter_passcode":"Enter passcode","Passcode_empty":"Passcode cant be empty !!","secret_lock_atc":"You cannot see the add to cart of this product !!","title_linkScret":"The link is locked !!","customer_lock_atc":"Button add to cart has been lock !!","secret_lock_price":"You cannot see the price of this product !!","Login_to_see_price":"Login to see price","Passcode_incorrect":"Passcode is incorrect !!","customer_lock_price":"Price had been locked !!","Login_to_Add_to_cart":"Login to Add to cart","notification_linkScret":"resource accessible only with secret link","This_resource_has_been_locked":"This resource has been locked","please_enter_passcode_to_unlock":"Please enter your passcode to unlock this resource"}}}; 1057 Samita.SamitaLocksAccessParams.statusTrial = {}; 1058 Samita.SamitaLocksAccessParams.current_locale = "en"; 1059 Samita.SamitaLocksAccessParams.shopTimezoneOffset = "-0700"; 1060 Samita.SamitaLocksAccessParams.ListHandle = []; 1061 Samita.SamitaLocksAccessParams.ProductsLoad = []; 1062 Samita.SamitaLocksAccessParams.proxy_url = "/apps/samita-lock"; 1063 Samita.SamitaLocksAccessParams.tokenStorefrontSamiLock = "def46dee07b41fed0510276038f75acd"; 1064 if (window?.Shopify?.designMode) { window.Samita.SamitaLocksAccessParams.locks = []; } 1065 1066
1067 1068 1069 1070 1071 1072 1073 1074 Samita.SamitaLocksAccessParams.pageType = "index"; 1075 1076 1077 1078 1079 1080 Samita.SamitaLockTranslation = null; 1081 1082</script>
1082 1083 1084<style>html .lock__notificationTemplateWrapper{background:#fff !important}html button#passcodebtn{background:#7396a2 !important;color:#ffffff !important}html input#passcode{background:#ffffff !important;color:#000 !important;box-shadow:0 0 10px 0 #ccc !important}html input#passcode::placeholder{color:#000 !important;} !important}html button#backbtn{background:#7396a2 !important;color:#ffffff !important}html .lock__placeholder{background:#f3f3f3 !important;color:#000 !important}html .smt-plain-text{color:#230d0d !important;cursor:pointer}html .smt-button{background:#5487a0 !important;color:#fff !important;cursor:pointer;padding:10px 20px;border-radius:5px;text-decoration:none !important}html.smt-loadding{opacity:0 !important;visibility:hidden !important}html body .lock__notificationTemplateWrapper img[alt="smtImage"] { 1085content:url(https://cdn.shopify.com/s/files/1/0577/3177/6662/files/door-lock-old-free-photo-on-pi_1ln7yit.png?v=1735780590) !important; 1086 object-fit: contain !important; 1087 width:300px !important; 1088 height:auto !important; 1089 } 1090 html body .lock__notificationFooter #passcode{ 1091 flex:1 !important; 1092 box-shadow:none !important; 1093 } 1094 1095 html body .lock__notificationTemplateWrapper{ 1096 width:50% !important; 1097 background:transparent !important; 1098 box-shadow:none !important; 1099 } 1100 1101 html body .lock__notificationTemplateWrapper .Lock__Error{ 1102 margin-top:5px !important; 1103 } 1104 1105 html body .Lock__Watermark{ 1106 padding: 0 40px !important; 1107 } 1108 1109 html body .Lock__Watermark p{ 1110 font-size: 15px !important; 1111 font-family: inherit; 1112 } 1113 1114 @media(max-width:1024px){ 1115 html body .lock__notificationTemplateWrapper{ 1116 width:100% !important; 1117 } 1118 } 1119 1120 html body .lock__notificationFooter #passcode:focus-visible { 1121 border: 1px solid #ccc !important; 1122 } 1123 1124 1125html body .lock__notificationFooter{ 1126 max-width:600px; 1127 margin-left: auto !important; 1128 margin-right:auto !important; 1129 } 1130 1131 html body .Lock__Error{ 1132 1133 max-width:600px; 1134 margin-left: auto !important; 1135 margin-right:auto !important; 1136 }</style> 1137 1138 1139 1140 1141<!-- END app block -->
1141<script src="https://cdn.shopify.com/extensions/01a0f119-97d5-70ad-8274-d2ee373cf011/ecomposer-145/assets/ecom.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1141
1141
1142<script src="https://cdn.shopify.com/extensions/01a0eb5b-13b6-751a-b6c1-a42e5b9b7333/affliate-by-secomapp-128/assets/core.min.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1142
1142
1143<script src="https://cdn.shopify.com/extensions/c1eb4680-ad4e-49c3-898d-493ebb06e626/affirm-pay-over-time-messaging-9/assets/affirm-cart-drawer-embed-handler.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1143
1143
1144<script src="https://cdn.shopify.com/extensions/01a0f62a-e0a3-703c-bda5-efe7414b9c90/wholesale-sami-846/assets/samita.wholesale.index.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1144
1144
1145<script src="https://cdn.shopify.com/extensions/019d8abd-41a2-7e0a-836b-e41fdeeaceba/trueprofit-22/assets/embedded.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1145
1145
1146<script src="https://cdn.shopify.com/extensions/019feb7b-2b89-71ba-a248-f1c8ef9b3368/stape-remix-56/assets/widget.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1146
1146
1147<script src="https://cdn.shopify.com/extensions/01a0f67f-a508-78ac-8c38-5b75c817b9d5/wholesale-lock-hide-price-189/assets/samitaLock.js" type="text/javascript" defer="defer"></script>
1147 1148<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1149<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: 57731776662,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "index"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1149
1149
1150<script> 1151 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1152</script>
vendor: 1 bytes, line 1152
1152
1153<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}
1153).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: 57731776662,storefrontBaseUrl: "https://myfirmtech.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://myfirmtech.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"1828520086","configuration":"{\"accountID\":\"blockify-checkout-rules-webpixel-myfirmtech.myshopify.com\",\"enable\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1ab7f922a8fb5837043325263ba42f22","type":"APP","apiClientId":143723102209,"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"}
1153,{"id":"1767833750","configuration":"{\"siteId\":\"y2TTsq4WsP4G0plw\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0d1a379d85da8550d7ec5af32a393808","type":"APP","apiClientId":45694124033,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1697710230","configuration":"{\"shopId\":\"myfirmtech.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":"1517584534","configuration":"{ \"alias\": \"MYFIRMTECH\", \"apiKey\": \"ux4ung2maf2gh5lxklpkp.fc64n2iubntb63ae5o2db\" }","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"089c563d4539df58b1e71259ac47d388","type":"APP","apiClientId":6779637,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"791347350","configuration":"{\"accountID\":\"Y3Ych4\",\"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":"743637142","configuration":"{\"eventPixelIdAddToCart\":\"tw-ona2g-ozym4\",\"eventPixelIdSiteVisit\":\"tw-ona2g-ozym7\",\"eventPixelIdPurchase\":\"tw-ona2g-ozym5\",\"eventPixelIdAddedPaymentInfo\":\"tw-ona2g-ozym6\",\"eventPixelIdCheckoutInitiated\":\"tw-ona2g-ozym9\",\"eventPixelIdContentView\":\"tw-ona2g-ozym8\",\"eventPixelIdSearch\":\"tw-ona2g-ozyma\",\"basePixelId\":\"ona2g\",\"adsAccountId\":\"18ce55p4zdw\",\"isDisconnected\":\"0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3df823913fec4164b84eb9879cd9a3dd","type":"APP","apiClientId":6455335,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":[]},"dataSharingState":"optimized"},{"id":"715358358","configuration":"{\"accountID\":\"57731776662\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9cf281f576a3744d05c8685f9f7f3f72","type":"APP","apiClientId":10250649601,"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":"669319318","configuration":"{\"accountID\":\"facct_01jcgrmpb1yhyfxwhatqwhbksm\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b512ad51efb2fbd80a0b3630d2f185b8","type":"APP","apiClientId":61620781057,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"514424982","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-LCGS8MP2F3\\\",\\\"GT-NS8CT4J\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-LCGS8MP2F3\\\",\\\"MC-F3NTHXWBXC\\\"]}
1153,{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-LCGS8MP2F3\\\",\\\"MC-F3NTHXWBXC\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-LCGS8MP2F3\\\",\\\"MC-F3NTHXWBXC\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-LCGS8MP2F3\\\"}],\\\"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":"486211734","configuration":"{\"shopId\":\"57731776662\",\"pixelEndpoint\":\"https:\/\/wpx.svc.trueprofit.io\/api\/evt\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0c3e1c496a29e1742ccf21c8518d3164","type":"APP","apiClientId":2553263,"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":"161349782","configuration":"{\"shopId\":\"79458\",\"env\":\"production\",\"metaData\":\"[]\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8323bee30e1ec3ae135ae5e0cef4ab6d","type":"APP","apiClientId":2773553,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"49184918","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"AdBeacon Pixel"},{"id":"151421078","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"stape"},{"id":"166199446","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"frontrow-cai"},{"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":"FirmTech Inc","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"myfirmtech.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/myfirmtech.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"7462086508694","handle":"the-tech-ring","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"41753911001238","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8646964641942","handle":"affirm-l-citrulline-dietary-supplement-i-150-tablets","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"46355021660310","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7810371420310","handle":"maxpr","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"42754768896150","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8361829400726","handle":"maxpr-and-ringmate-bundle-1","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44685613006998","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8677883609238","handle":"firmtech-biomarker-testing-and-coac
1153hing-call","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"46497468645526","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8101011161238","handle":"larginine-gel","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"43604216807574","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8630825123990","handle":"firmtech-coaching-call","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"46303013044374","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7037087580310","handle":"firmtech-performance-ring","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"40577802338454","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8361829662870","handle":"performance-ring-and-ringmate-bundle-1","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44685615333526","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7799904534678","handle":"sleeve","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44826783088790","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8315846361238","handle":"ringmate","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44289152254102","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8343427645590","handle":"sliquid","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44400474488982","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8264486060182","handle":"techring-and-affirm-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44067166552214","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7916956385430","handle":"techring-and-maxpr","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"43091897221270","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"7942637944982","handle":"techring-and-performance-ring","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"43187723272342","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8361829597334","handle":"techring-and-ringmate-bundle-1","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44685613924502","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8299752554646","handle":"techring-and-vaxaid-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44216613961878","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8685676757142","handle":"vaxaid","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"46521161023638","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://myfirmtech.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"137274720406","themeStoreId":"1190","themePublished":"true","eventMetadataId":"7eaa0ef7-ea7b-4ecb-8c0a-cdda760170c0","pageType":"home","shopId":"57731776662","storefrontBaseUrl":"https:\/\/myfirmtech.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>
1153<script> 1154 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1155 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1156 window.ShopifyAnalytics.meta.currency = 'USD'; 1157 var meta = {"page":{"pageType":"home","requestId":"f6ef0b0c-e994-43aa-82ad-97bc6fdf99d9-1791067573"}}; 1158 for (var attr in meta) { 1159 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1160 } 1161</script>
vendor: 1 bytes, line 1161
1161
1162<script class="analytics"> 1163 (function () { 1164 var customDocumentWrite = function(content) { 1165 var jquery = null; 1166 1167 if (window.jQuery) { 1168 jquery = window.jQuery; 1169 } else if (window.Checkout && window.Checkout.$) { 1170 jquery = window.Checkout.$; 1171 } 1172 1173 if (jquery) { 1174 jquery('body').append(content); 1175 } 1176 }; 1177 1178 var hasLoggedConversion = function(token) { 1179 if (token) { 1180 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1181 } 1182 return false; 1183 } 1184 1185 var setCookieIfConversion = function(token) { 1186 if (token) { 1187 var twoMonthsFromNow = new Date(Date.now()); 1188 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1189 1190 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1191 } 1192 } 1193 1194 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1195 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1196 if (trekkie.integrations) { 1197 return; 1198 } 1199 trekkie.methods = [ 1200 'identify', 1201 'page', 1202 'ready', 1203 'track', 1204 'trackForm', 1205 'trackLink' 1206 ]; 1207 trekkie.factory = function(method) { 1208 return function() { 1209 var args = Array.prototype.slice.call(arguments); 1210 args.unshift(method); 1211 trekkie.push(args); 1212 if (method == 'track' || method == 'page') { 1213 var pageUrl; 1214 try { 1215 pageUrl = window.location.href; 1216 } catch (e) {} 1217 var pageReferrer; 1218 try { 1219 pageReferrer = document.referrer; 1220 } catch (e) {} 1221 try { 1222 if (window.__TREKKIE_SHIM_QUEUE == null) { 1223 window.__TREKKIE_SHIM_QUEUE = []; 1224 } 1225 window.__TREKKIE_SHIM_QUEUE.push({ 1226 from: 'trekkie-stub', 1227 method: method, 1228 args: args.slice(1), 1229 pageContext: { 1230 url: pageUrl, 1231 referrer: pageReferrer 1232 } 1233 }); 1234 } catch (e) { 1235 // no-op 1236 } 1237 } 1238 return trekkie; 1239 }; 1240 }; 1241 for (var i = 0; i < trekkie.methods.length; i++) { 1242 var key = trekkie.methods[i]; 1243 trekkie[key] = trekkie.factory(key); 1244 } 1245 trekkie.load = function(config) { 1246 trekkie.config = config || {}; 1247 trekkie.config.initialDocumentCookie = document.cookie; 1248 var first = document.getElementsByTagName('script')[0]; 1249var script = document.createElement('script'); 1250script.type = 'text/javascript'; 1251script.onerror = function(e) { 1252 var scriptFallback = document.createElement('script'); 1253 scriptFallback.type = 'text/javascript'; 1254 scriptFallback.onerror = function(error) { 1255 var Monorail = { 1256 produce: function produce(monorailDomain, schemaId, payload) { 1257 var currentMs = new Date().getTime(); 1258 var event = { 1259 schema_id: schemaId, 1260 payload: payload, 1261 metadata: { 1262 event_created_at_ms: currentMs, 1263 event_sent_at_ms: currentMs 1264 } 1265 }; 1266 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1267 }, 1268 sendRequest: function sendRequest(endpointUrl, payload) { 1269 // Try the sendBeacon API 1270 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1271 var blobData = new window.Blob([payload], { 1272 type: 'text/plain' 1273 }); 1274 1275 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1276 return true; 1277 } // sendBeacon was not successful 1278 1279 } // XHR beacon 1280 1281 var xhr = new XMLHttpRequest(); 1282 1283 try { 1284 xhr.open('POST', endpointUrl); 1285 xhr.setRequestHeader('Content-Type', 'text/plain'); 1286 xhr.send(payload); 1287 } catch (e) { 1288 console.log(e); 1289 } 1290 1291 return false; 1292 }, 1293 isIos12: function isIos12() { 1294 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1295 } 1296 }; 1297 Monorail.produce('monorail-edge.shopifysvc.com', 1298 'trekkie_storefront_load_errors/1.1', 1299 {shop_id: 57731776662, 1300 theme_id: 137274720406, 1301 app_name: "storefront", 1302 context_url: window.location.href, 1303 source_url: "//myfirmtech.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 1304 1305 }; 1306 scriptFallback.async = true; 1307 scriptFallback.src = '//myfirmtech.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1308 first.parentNode.insertBefore(scriptFallback, first); 1309}; 1310script.async = true; 1311script.src = '//myfirmtech.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1312first.parentNode.insertBefore(script, first); 1313 1314 }; 1315 trekkie.load( 1316 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":57731776662,"isMerchantRequest":null,"themeId":137274720406,"themeCityHash":"8660641450231462340","contentLanguage":"en","currency":"USD","eventMetadataId":"7eaa0ef7-ea7b-4ecb-8c0a-cdda760170c0"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1317 ); 1318 1319 var loaded = false;
1320 trekkie.ready(function() { 1321 if (loaded) return; 1322 loaded = true; 1323 1324 window.ShopifyAnalytics.lib = window.trekkie; 1325 1326 var originalDocumentWrite = document.write; 1327 document.write = customDocumentWrite; 1328 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1329 document.write = originalDocumentWrite; 1330 1331 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1332 var token = match? match[1]: undefined; 1333 if (!hasLoggedConversion(token)) { 1334 setCookieIfConversion(token); 1335 1336 } 1337 }); 1338 1339 window.ShopifyAnalytics.lib.page(null,{"pageType":"home","requestId":"f6ef0b0c-e994-43aa-82ad-97bc6fdf99d9-1791067573","shopifyEmitted":true}); 1340 1341 var eventsListenerScript = document.createElement('script'); 1342 eventsListenerScript.async = true; 1343 eventsListenerScript.src = "//myfirmtech.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1344 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1345})();</script>
1345 1346
1346<script> 1347 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 1348 window.ga = function ga() { 1349 (window.ga.q = window.ga.q || []).push(arguments); 1350 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 1351 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 1352 } 1353 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 1354 }; 1355 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 1356 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 1357 } 1358 } 1359</script>
vendor: 1 bytes, line 1359
1359
1360<script 1361 defer 1362 src="https://myfirmtech.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 1363 data-application="storefront-renderer" 1364 data-shop-id="57731776662" 1365 data-render-region="gcp-us-central1" 1366 data-page-type="index" 1367 data-theme-instance-id="137274720406" 1368 data-theme-name="Impact" 1369 data-theme-version="5.4.1" 1370 data-monorail-region="shop_domain" 1371 data-resource-timing-sampling-rate="10" 1372 data-shs="true" 1373 data-shs-beacon="true" 1374 data-shs-export-with-fetch="true" 1375 data-shs-logs-sample-rate="1" 1376 data-shs-beacon-endpoint="https://myfirmtech.com/api/collect" 1377></script>
1377 1378<meta name="shopify-y" content="00000000-0000-0000-5000-000000000000" data-expiration="1822625173000"><meta name="shopify-s" content="00000000-0000-0000-5000-000000000000" data-expiration="1791069373000"><meta name="new-cookie-storage-activated" content="t"> 1379</head> 1380 1381 <body class=" zoom-image--enabled"><!-- DRAWER --> 1382<template id="drawer-default-template"> 1383 <style> 1384 [hidden] { 1385 display: none !important; 1386 } 1387 </style> 1388 1389 <button part="outside-close-button" is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1390 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1391 </svg></button> 1392 1393 <div part="overlay"></div> 1394 1395 <div part="content"> 1396 <header part="header"> 1397 <slot name="header"></slot> 1398 1399 <button part="close-button" is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1400 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1401 </svg></button> 1402 </header> 1403 1404 <div part="body"> 1405 <slot></slot> 1406 </div> 1407 1408 <footer part="footer"> 1409 <slot name="footer"></slot> 1410 </footer> 1411 </div> 1412</template> 1413 1414<!-- POPOVER --> 1415<template id="popover-default-template"> 1416 <button part="outside-close-button" is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 1417 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 1418 </svg></button> 1419 1420 <div part="overlay"></div> 1421 1422 <div part="content"> 1423 <header part="title"> 1424 <slot name="title"></slot> 1425 </header> 1426 1427 <div part="body"> 1428 <slot></slot> 1429 </div> 1430 </div> 1431</template><a href="#main" class="skip-to-content sr-only">Skip to content</a><!-- BEGIN sections: header-group --> 1432<aside id="shopify-section-sections--17107269615766__announcement-bar" class="shopify-section shopify-section-group-header-group shopify-section--announcement-bar"><style> 1433 :root { 1434 --sticky-announcement-bar-enabled:0; 1435 }</style><height-observer variable="announcement-bar"> 1436 <div class="announcement-bar bg-gradient text-custom"style="--gradient: linear-gradient(141deg, rgba(186, 24, 27, 1), rgba(186, 24, 27, 1) 26%, rgba(24, 20, 29, 1) 65%); --text-color: 255 255 255;"><marquee-text scrolling-speed="30" class="announcement-bar__scrolling-list"><span class="announcement-bar__item" ><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1437</p> 1438 1439 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1440 1441 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1442 1443 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1444 1445 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1446</p> 1447 1448 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1449 1450 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1451 1452 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1453 1454 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1455</p> 1456
1457 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1458 1459 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1460 1461 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1462 1463 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1464</p> 1465 1466 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1467 1468 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1469 1470 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1471 1472 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1473</p> 1474 1475 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1476 1477 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1478 1479 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1480 1481 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1482</p> 1483 1484 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1485 1486 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1487 1488 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1489 1490 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1491</p> 1492 1493 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1494 1495 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1496 1497 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1498 1499 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1500</p> 1501 1502 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1503 1504 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1505
1506 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1507 1508 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1509</p> 1510 1511 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1512 1513 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1514 1515 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1516 1517 <span class="shape-circle shape--sm"></span></span><span class="announcement-bar__item" aria-hidden="true"><p class="bold text-xs" >Just launched: Men's Health Labs & Coaching 1518</p> 1519 1520 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/collections/firmtech">Clinically proven to keep men hard. Check out our products.</a></p> 1521 1522 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="/products/the-tech-ring">90% of TechRing users are happy with their purchase</a></p> 1523 1524 <span class="shape-circle shape--sm"></span><p class="bold text-xs" ><a href="https://myfirmtech.com/pages/hsa-fsa">FirmTech Rings are HSA/FSA eligible. Learn More</a></p> 1525 1526 <span class="shape-circle shape--sm"></span></span></marquee-text></div> 1527 </height-observer> 1528 1529
1529<script> 1530 document.documentElement.style.setProperty('--announcement-bar-height', Math.round(document.getElementById('shopify-section-sections--17107269615766__announcement-bar').clientHeight) + 'px'); 1531 </script>
1531</aside><header id="shopify-section-sections--17107269615766__header" class="shopify-section shopify-section-group-header-group shopify-section--header"><style> 1532 :root { 1533 --sticky-header-enabled:1; 1534 } 1535 1536 #shopify-section-sections--17107269615766__header { 1537 --header-grid-template: "main-nav logo secondary-nav" / minmax(0, 1fr) auto minmax(0, 1fr); 1538 --header-padding-block: var(--spacing-3); 1539 --header-background-opacity: 1.0; 1540 --header-background-blur-radius: 14px; 1541 --header-transparent-text-color: 255 255 255;--header-logo-width: 150px; 1542 --header-logo-height: 43px;position: sticky; 1543 top: 0; 1544 z-index: 10; 1545 }.shopify-section--announcement-bar ~ #shopify-section-sections--17107269615766__header { 1546 top: calc(var(--sticky-announcement-bar-enabled, 0) * var(--announcement-bar-height, 0px)); 1547 }@media screen and (min-width: 700px) { 1548 #shopify-section-sections--17107269615766__header {--header-logo-width: 150px; 1549 --header-logo-height: 43px;--header-padding-block: var(--spacing-6); 1550 } 1551 }@media screen and (min-width: 1150px) {#shopify-section-sections--17107269615766__header { 1552 --header-grid-template: "logo main-nav secondary-nav" / minmax(0, 1fr) fit-content(55%) minmax(0, 1fr); 1553 } 1554 }</style> 1555 1556<height-observer variable="header"> 1557 <store-header class="header" sticky> 1558 <div class="header__wrapper"><div class="header__main-nav"> 1559 <div class="header__icon-list"> 1560 <button type="button" class="tap-area lg:hidden" aria-controls="header-sidebar-menu"> 1561 <span class="sr-only">Open navigation menu</span><svg role="presentation" stroke-width="2" focusable="false" width="22" height="22" class="icon icon-hamburger" viewBox="0 0 22 22"> 1562 <path d="M1 5h20M1 11h20M1 17h20" stroke="currentColor" stroke-linecap="round"></path> 1563 </svg></button> 1564 1565 <a href="/search" class="tap-area sm:hidden" aria-controls="search-drawer"> 1566 <span class="sr-only">Open search</span><svg role="presentation" stroke-width="2" focusable="false" width="22" height="22" class="icon icon-search" viewBox="0 0 22 22"> 1567 <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle> 1568 <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 1569 </svg></a><nav class="header__link-list justify-center wrap" role="navigation"> 1570 <ul class="contents" role="list"> 1571 1572 <li><a href="/collections/firmtech" class="bold link-faded-reverse" >Shop</a></li> 1573 1574 <li><a href="/pages/health" class="bold link-faded-reverse" >Health</a></li> 1575 1576 <li><a href="/pages/pleasure" class="bold link-faded-reverse" >Pleasure</a></li> 1577 1578 <li><a href="https://myfirmtech.com/pages/mens-health-labs-and-coaching" class="bold link-faded-reverse" >Labs & Coaching</a></li> 1579 1580 <li><a href="/pages/science" class="bold link-faded-reverse" >Science</a></li></ul> 1581 </nav></div> 1582 </div><h1 class="header__logo"> 1583 <a href="/"><span class="sr-only">FirmTech Inc</span><img src="//myfirmtech.com/cdn/shop/files/Firmtech_Horizontal_Black_1.png?v=1718384885&width=140" alt="" srcset="//myfirmtech.com/cdn/shop/files/Firmtech_Horizontal_Black_1.png?v=1718384885&width=140 140w, //myfirmtech.com/cdn/shop/files/Firmtech_Horizontal_Black_1.png?v=1718384885&width=140 140w" width="140" height="40" sizes="150px" class="header__logo-image"></a> 1584 </h1> 1585 1586<div class="header__secondary-nav"> 1587 1588 <a class="header-button button" href="https://shassessment.myfirmtech.com/?utm_medium=organic&utm_source=assessment&utm_campaign=myfirmtech" target="_blank" rel="noopener noreferrer">Free Sexual Health Assessment</a><div class="header__icon-list"><div class="hidden md:block shrink-0"><link rel="stylesheet" href="//myfirmtech.com/cdn/shop/t/24/assets/country-flags.css?v=133253664215562886901772071395" media="print" onload="this.media='all'; this.onload = null"><div class="relative"> 1589 <button type="button" class="text-with-icon gap-2.5 group" aria-controls="popover-localization-form-country-end-sections--17107269615766__header" aria-expanded="false"> 1590 <div class="h-stack gap-2"><span class="country-flags country-flags--US"></span><span class="bold text-sm">USD $</span> 1591 </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7"> 1592 <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 1593 </svg></button> 1594 1595 <x-popover id="popover-localization-form-country-end-sections--17107269615766__header" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="end" class="popover"> 1596 <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country-end-sections--17107269615766__header" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AF" >
1597 <span class="country-flags country-flags--AF"></span> 1598 <span>Afghanistan (USD $)</span> 1599 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AX" > 1600 <span class="country-flags country-flags--AX"></span> 1601 <span>Ã land Islands (USD $)</span> 1602 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AL" > 1603 <span class="country-flags country-flags--AL"></span> 1604 <span>Albania (USD $)</span> 1605 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DZ" > 1606 <span class="country-flags country-flags--DZ"></span> 1607 <span>Algeria (USD $)</span> 1608 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AD" > 1609 <span class="country-flags country-flags--AD"></span> 1610 <span>Andorra (USD $)</span> 1611 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AO" > 1612 <span class="country-flags country-flags--AO"></span> 1613 <span>Angola (USD $)</span> 1614 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AI" > 1615 <span class="country-flags country-flags--AI"></span> 1616 <span>Anguilla (USD $)</span> 1617 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AG" > 1618 <span class="country-flags country-flags--AG"></span> 1619 <span>Antigua & Barbuda (USD $)</span> 1620 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AR" > 1621 <span class="country-flags country-flags--AR"></span> 1622 <span>Argentina (USD $)</span> 1623 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AM" > 1624 <span class="country-flags country-flags--AM"></span> 1625 <span>Armenia (USD $)</span> 1626 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AW" > 1627 <span class="country-flags country-flags--AW"></span> 1628 <span>Aruba (USD $)</span> 1629 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AC" > 1630 <span class="country-flags country-flags--AC"></span> 1631 <span>Ascension Island (USD $)</span> 1632 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AU" > 1633 <span class="country-flags country-flags--AU"></span> 1634 <span>Australia (USD $)</span> 1635 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AT" > 1636 <span class="country-flags country-flags--AT"></span> 1637 <span>Austria (USD $)</span> 1638 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AZ" > 1639 <span class="country-flags country-flags--AZ"></span> 1640 <span>Azerbaijan (USD $)</span> 1641 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BS" > 1642 <span class="country-flags country-flags--BS"></span> 1643 <span>Bahamas (USD $)</span> 1644 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BH" > 1645 <span class="country-flags country-flags--BH"></span> 1646 <span>Bahrain (USD $)</span> 1647 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BD" >
1648 <span class="country-flags country-flags--BD"></span> 1649 <span>Bangladesh (USD $)</span> 1650 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BB" > 1651 <span class="country-flags country-flags--BB"></span> 1652 <span>Barbados (USD $)</span> 1653 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BY" > 1654 <span class="country-flags country-flags--BY"></span> 1655 <span>Belarus (USD $)</span> 1656 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BE" > 1657 <span class="country-flags country-flags--BE"></span> 1658 <span>Belgium (USD $)</span> 1659 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BZ" > 1660 <span class="country-flags country-flags--BZ"></span> 1661 <span>Belize (USD $)</span> 1662 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BJ" > 1663 <span class="country-flags country-flags--BJ"></span> 1664 <span>Benin (USD $)</span> 1665 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BM" > 1666 <span class="country-flags country-flags--BM"></span> 1667 <span>Bermuda (USD $)</span> 1668 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BT" > 1669 <span class="country-flags country-flags--BT"></span> 1670 <span>Bhutan (USD $)</span> 1671 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BO" > 1672 <span class="country-flags country-flags--BO"></span> 1673 <span>Bolivia (USD $)</span> 1674 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BA" > 1675 <span class="country-flags country-flags--BA"></span> 1676 <span>Bosnia & Herzegovina (USD $)</span> 1677 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BW" > 1678 <span class="country-flags country-flags--BW"></span> 1679 <span>Botswana (USD $)</span> 1680 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BR" > 1681 <span class="country-flags country-flags--BR"></span> 1682 <span>Brazil (USD $)</span> 1683 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IO" > 1684 <span class="country-flags country-flags--IO"></span> 1685 <span>British Indian Ocean Territory (USD $)</span> 1686 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VG" > 1687 <span class="country-flags country-flags--VG"></span> 1688 <span>British Virgin Islands (USD $)</span> 1689 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BN" > 1690 <span class="country-flags country-flags--BN"></span> 1691 <span>Brunei (USD $)</span> 1692 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BG" > 1693 <span class="country-flags country-flags--BG"></span> 1694 <span>Bulgaria (USD $)</span> 1695 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BF" > 1696 <span class="country-flags country-flags--BF"></span> 1697 <span>Burkina Faso (USD $)</span> 1698 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BI" >
1699 <span class="country-flags country-flags--BI"></span> 1700 <span>Burundi (USD $)</span> 1701 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KH" > 1702 <span class="country-flags country-flags--KH"></span> 1703 <span>Cambodia (USD $)</span> 1704 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CM" > 1705 <span class="country-flags country-flags--CM"></span> 1706 <span>Cameroon (USD $)</span> 1707 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CA" > 1708 <span class="country-flags country-flags--CA"></span> 1709 <span>Canada (USD $)</span> 1710 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CV" > 1711 <span class="country-flags country-flags--CV"></span> 1712 <span>Cape Verde (USD $)</span> 1713 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BQ" > 1714 <span class="country-flags country-flags--BQ"></span> 1715 <span>Caribbean Netherlands (USD $)</span> 1716 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KY" > 1717 <span class="country-flags country-flags--KY"></span> 1718 <span>Cayman Islands (USD $)</span> 1719 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CF" > 1720 <span class="country-flags country-flags--CF"></span> 1721 <span>Central African Republic (USD $)</span> 1722 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TD" > 1723 <span class="country-flags country-flags--TD"></span> 1724 <span>Chad (USD $)</span> 1725 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CL" > 1726 <span class="country-flags country-flags--CL"></span> 1727 <span>Chile (USD $)</span> 1728 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CN" > 1729 <span class="country-flags country-flags--CN"></span> 1730 <span>China (USD $)</span> 1731 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CX" > 1732 <span class="country-flags country-flags--CX"></span> 1733 <span>Christmas Island (USD $)</span> 1734 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CC" > 1735 <span class="country-flags country-flags--CC"></span> 1736 <span>Cocos (Keeling) Islands (USD $)</span> 1737 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CO" > 1738 <span class="country-flags country-flags--CO"></span> 1739 <span>Colombia (USD $)</span> 1740 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KM" > 1741 <span class="country-flags country-flags--KM"></span> 1742 <span>Comoros (USD $)</span> 1743 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CG" > 1744 <span class="country-flags country-flags--CG"></span> 1745 <span>Congo - Brazzaville (USD $)</span> 1746 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CD" > 1747 <span class="country-flags country-flags--CD"></span> 1748 <span>Congo - Kinshasa (USD $)</span> 1749 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CK" >
1750 <span class="country-flags country-flags--CK"></span> 1751 <span>Cook Islands (USD $)</span> 1752 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CR" > 1753 <span class="country-flags country-flags--CR"></span> 1754 <span>Costa Rica (USD $)</span> 1755 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CI" > 1756 <span class="country-flags country-flags--CI"></span> 1757 <span>Côte dâIvoire (USD $)</span> 1758 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HR" > 1759 <span class="country-flags country-flags--HR"></span> 1760 <span>Croatia (USD $)</span> 1761 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CW" > 1762 <span class="country-flags country-flags--CW"></span> 1763 <span>Curaçao (USD $)</span> 1764 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CY" > 1765 <span class="country-flags country-flags--CY"></span> 1766 <span>Cyprus (USD $)</span> 1767 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CZ" > 1768 <span class="country-flags country-flags--CZ"></span> 1769 <span>Czechia (USD $)</span> 1770 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DK" > 1771 <span class="country-flags country-flags--DK"></span> 1772 <span>Denmark (USD $)</span> 1773 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DJ" > 1774 <span class="country-flags country-flags--DJ"></span> 1775 <span>Djibouti (USD $)</span> 1776 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DM" > 1777 <span class="country-flags country-flags--DM"></span> 1778 <span>Dominica (USD $)</span> 1779 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DO" > 1780 <span class="country-flags country-flags--DO"></span> 1781 <span>Dominican Republic (USD $)</span> 1782 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EC" > 1783 <span class="country-flags country-flags--EC"></span> 1784 <span>Ecuador (USD $)</span> 1785 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EG" > 1786 <span class="country-flags country-flags--EG"></span> 1787 <span>Egypt (USD $)</span> 1788 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SV" > 1789 <span class="country-flags country-flags--SV"></span> 1790 <span>El Salvador (USD $)</span> 1791 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GQ" > 1792 <span class="country-flags country-flags--GQ"></span> 1793 <span>Equatorial Guinea (USD $)</span> 1794 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ER" > 1795 <span class="country-flags country-flags--ER"></span> 1796 <span>Eritrea (USD $)</span> 1797 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EE" > 1798 <span class="country-flags country-flags--EE"></span> 1799 <span>Estonia (USD $)</span> 1800 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SZ" >
1801 <span class="country-flags country-flags--SZ"></span> 1802 <span>Eswatini (USD $)</span> 1803 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ET" > 1804 <span class="country-flags country-flags--ET"></span> 1805 <span>Ethiopia (USD $)</span> 1806 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FK" > 1807 <span class="country-flags country-flags--FK"></span> 1808 <span>Falkland Islands (USD $)</span> 1809 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FO" > 1810 <span class="country-flags country-flags--FO"></span> 1811 <span>Faroe Islands (USD $)</span> 1812 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FJ" > 1813 <span class="country-flags country-flags--FJ"></span> 1814 <span>Fiji (USD $)</span> 1815 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FI" > 1816 <span class="country-flags country-flags--FI"></span> 1817 <span>Finland (USD $)</span> 1818 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FR" > 1819 <span class="country-flags country-flags--FR"></span> 1820 <span>France (USD $)</span> 1821 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GF" > 1822 <span class="country-flags country-flags--GF"></span> 1823 <span>French Guiana (USD $)</span> 1824 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PF" > 1825 <span class="country-flags country-flags--PF"></span> 1826 <span>French Polynesia (USD $)</span> 1827 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TF" > 1828 <span class="country-flags country-flags--TF"></span> 1829 <span>French Southern Territories (USD $)</span> 1830 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GA" > 1831 <span class="country-flags country-flags--GA"></span> 1832 <span>Gabon (USD $)</span> 1833 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GM" > 1834 <span class="country-flags country-flags--GM"></span> 1835 <span>Gambia (USD $)</span> 1836 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GE" > 1837 <span class="country-flags country-flags--GE"></span> 1838 <span>Georgia (USD $)</span> 1839 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DE" > 1840 <span class="country-flags country-flags--DE"></span> 1841 <span>Germany (USD $)</span> 1842 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GH" > 1843 <span class="country-flags country-flags--GH"></span> 1844 <span>Ghana (USD $)</span> 1845 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GI" > 1846 <span class="country-flags country-flags--GI"></span> 1847 <span>Gibraltar (USD $)</span> 1848 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GR" > 1849 <span class="country-flags country-flags--GR"></span> 1850 <span>Greece (USD $)</span> 1851 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GL" >
1852 <span class="country-flags country-flags--GL"></span> 1853 <span>Greenland (USD $)</span> 1854 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GD" > 1855 <span class="country-flags country-flags--GD"></span> 1856 <span>Grenada (USD $)</span> 1857 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GP" > 1858 <span class="country-flags country-flags--GP"></span> 1859 <span>Guadeloupe (USD $)</span> 1860 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GT" > 1861 <span class="country-flags country-flags--GT"></span> 1862 <span>Guatemala (USD $)</span> 1863 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GG" > 1864 <span class="country-flags country-flags--GG"></span> 1865 <span>Guernsey (USD $)</span> 1866 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GN" > 1867 <span class="country-flags country-flags--GN"></span> 1868 <span>Guinea (USD $)</span> 1869 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GW" > 1870 <span class="country-flags country-flags--GW"></span> 1871 <span>Guinea-Bissau (USD $)</span> 1872 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GY" > 1873 <span class="country-flags country-flags--GY"></span> 1874 <span>Guyana (USD $)</span> 1875 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HT" > 1876 <span class="country-flags country-flags--HT"></span> 1877 <span>Haiti (USD $)</span> 1878 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HN" > 1879 <span class="country-flags country-flags--HN"></span> 1880 <span>Honduras (USD $)</span> 1881 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HK" > 1882 <span class="country-flags country-flags--HK"></span> 1883 <span>Hong Kong SAR (USD $)</span> 1884 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HU" > 1885 <span class="country-flags country-flags--HU"></span> 1886 <span>Hungary (USD $)</span> 1887 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IS" > 1888 <span class="country-flags country-flags--IS"></span> 1889 <span>Iceland (USD $)</span> 1890 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IN" > 1891 <span class="country-flags country-flags--IN"></span> 1892 <span>India (USD $)</span> 1893 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ID" > 1894 <span class="country-flags country-flags--ID"></span> 1895 <span>Indonesia (USD $)</span> 1896 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IQ" > 1897 <span class="country-flags country-flags--IQ"></span> 1898 <span>Iraq (USD $)</span> 1899 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IE" > 1900 <span class="country-flags country-flags--IE"></span> 1901 <span>Ireland (USD $)</span> 1902 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IM" >
1903 <span class="country-flags country-flags--IM"></span> 1904 <span>Isle of Man (USD $)</span> 1905 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IL" > 1906 <span class="country-flags country-flags--IL"></span> 1907 <span>Israel (USD $)</span> 1908 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IT" > 1909 <span class="country-flags country-flags--IT"></span> 1910 <span>Italy (USD $)</span> 1911 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JM" > 1912 <span class="country-flags country-flags--JM"></span> 1913 <span>Jamaica (USD $)</span> 1914 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JP" > 1915 <span class="country-flags country-flags--JP"></span> 1916 <span>Japan (USD $)</span> 1917 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JE" > 1918 <span class="country-flags country-flags--JE"></span> 1919 <span>Jersey (USD $)</span> 1920 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JO" > 1921 <span class="country-flags country-flags--JO"></span> 1922 <span>Jordan (USD $)</span> 1923 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KZ" > 1924 <span class="country-flags country-flags--KZ"></span> 1925 <span>Kazakhstan (USD $)</span> 1926 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KE" > 1927 <span class="country-flags country-flags--KE"></span> 1928 <span>Kenya (USD $)</span> 1929 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KI" > 1930 <span class="country-flags country-flags--KI"></span> 1931 <span>Kiribati (USD $)</span> 1932 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="XK" > 1933 <span class="country-flags country-flags--XK"></span> 1934 <span>Kosovo (USD $)</span> 1935 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KW" > 1936 <span class="country-flags country-flags--KW"></span> 1937 <span>Kuwait (USD $)</span> 1938 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KG" > 1939 <span class="country-flags country-flags--KG"></span> 1940 <span>Kyrgyzstan (USD $)</span> 1941 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LA" > 1942 <span class="country-flags country-flags--LA"></span> 1943 <span>Laos (USD $)</span> 1944 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LV" > 1945 <span class="country-flags country-flags--LV"></span> 1946 <span>Latvia (USD $)</span> 1947 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LB" > 1948 <span class="country-flags country-flags--LB"></span> 1949 <span>Lebanon (USD $)</span> 1950 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LS" > 1951 <span class="country-flags country-flags--LS"></span> 1952 <span>Lesotho (USD $)</span> 1953 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LR" > 1954 <span class="country-flags country-flags--LR"></span>
1955 <span>Liberia (USD $)</span> 1956 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LY" > 1957 <span class="country-flags country-flags--LY"></span> 1958 <span>Libya (USD $)</span> 1959 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LI" > 1960 <span class="country-flags country-flags--LI"></span> 1961 <span>Liechtenstein (USD $)</span> 1962 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LT" > 1963 <span class="country-flags country-flags--LT"></span> 1964 <span>Lithuania (USD $)</span> 1965 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LU" > 1966 <span class="country-flags country-flags--LU"></span> 1967 <span>Luxembourg (USD $)</span> 1968 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MO" > 1969 <span class="country-flags country-flags--MO"></span> 1970 <span>Macao SAR (USD $)</span> 1971 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MG" > 1972 <span class="country-flags country-flags--MG"></span> 1973 <span>Madagascar (USD $)</span> 1974 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MW" > 1975 <span class="country-flags country-flags--MW"></span> 1976 <span>Malawi (USD $)</span> 1977 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MY" > 1978 <span class="country-flags country-flags--MY"></span> 1979 <span>Malaysia (USD $)</span> 1980 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MV" > 1981 <span class="country-flags country-flags--MV"></span> 1982 <span>Maldives (USD $)</span> 1983 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ML" > 1984 <span class="country-flags country-flags--ML"></span> 1985 <span>Mali (USD $)</span> 1986 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MT" > 1987 <span class="country-flags country-flags--MT"></span> 1988 <span>Malta (USD $)</span> 1989 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MQ" > 1990 <span class="country-flags country-flags--MQ"></span> 1991 <span>Martinique (USD $)</span> 1992 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MR" > 1993 <span class="country-flags country-flags--MR"></span> 1994 <span>Mauritania (USD $)</span> 1995 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MU" > 1996 <span class="country-flags country-flags--MU"></span> 1997 <span>Mauritius (USD $)</span> 1998 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YT" > 1999 <span class="country-flags country-flags--YT"></span> 2000 <span>Mayotte (USD $)</span> 2001 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MX" > 2002 <span class="country-flags country-flags--MX"></span> 2003 <span>Mexico (USD $)</span> 2004 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MD" > 2005 <span class="country-flags country-flags--MD"></span>
2006 <span>Moldova (USD $)</span> 2007 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MC" > 2008 <span class="country-flags country-flags--MC"></span> 2009 <span>Monaco (USD $)</span> 2010 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MN" > 2011 <span class="country-flags country-flags--MN"></span> 2012 <span>Mongolia (USD $)</span> 2013 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ME" > 2014 <span class="country-flags country-flags--ME"></span> 2015 <span>Montenegro (USD $)</span> 2016 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MS" > 2017 <span class="country-flags country-flags--MS"></span> 2018 <span>Montserrat (USD $)</span> 2019 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MA" > 2020 <span class="country-flags country-flags--MA"></span> 2021 <span>Morocco (USD $)</span> 2022 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MZ" > 2023 <span class="country-flags country-flags--MZ"></span> 2024 <span>Mozambique (USD $)</span> 2025 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MM" > 2026 <span class="country-flags country-flags--MM"></span> 2027 <span>Myanmar (Burma) (USD $)</span> 2028 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NA" > 2029 <span class="country-flags country-flags--NA"></span> 2030 <span>Namibia (USD $)</span> 2031 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NR" > 2032 <span class="country-flags country-flags--NR"></span> 2033 <span>Nauru (USD $)</span> 2034 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NP" > 2035 <span class="country-flags country-flags--NP"></span> 2036 <span>Nepal (USD $)</span> 2037 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NL" > 2038 <span class="country-flags country-flags--NL"></span> 2039 <span>Netherlands (USD $)</span> 2040 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NC" > 2041 <span class="country-flags country-flags--NC"></span> 2042 <span>New Caledonia (USD $)</span> 2043 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NZ" > 2044 <span class="country-flags country-flags--NZ"></span> 2045 <span>New Zealand (USD $)</span> 2046 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NI" > 2047 <span class="country-flags country-flags--NI"></span> 2048 <span>Nicaragua (USD $)</span> 2049 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NE" > 2050 <span class="country-flags country-flags--NE"></span> 2051 <span>Niger (USD $)</span> 2052 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NG" > 2053 <span class="country-flags country-flags--NG"></span> 2054 <span>Nigeria (USD $)</span> 2055 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NU" > 2056 <span class="country-flags country-flags--NU"></span>
2057 <span>Niue (USD $)</span> 2058 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NF" > 2059 <span class="country-flags country-flags--NF"></span> 2060 <span>Norfolk Island (USD $)</span> 2061 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MK" > 2062 <span class="country-flags country-flags--MK"></span> 2063 <span>North Macedonia (USD $)</span> 2064 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NO" > 2065 <span class="country-flags country-flags--NO"></span> 2066 <span>Norway (USD $)</span> 2067 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="OM" > 2068 <span class="country-flags country-flags--OM"></span> 2069 <span>Oman (USD $)</span> 2070 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PK" > 2071 <span class="country-flags country-flags--PK"></span> 2072 <span>Pakistan (USD $)</span> 2073 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PS" > 2074 <span class="country-flags country-flags--PS"></span> 2075 <span>Palestinian Territories (USD $)</span> 2076 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PA" > 2077 <span class="country-flags country-flags--PA"></span> 2078 <span>Panama (USD $)</span> 2079 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PG" > 2080 <span class="country-flags country-flags--PG"></span> 2081 <span>Papua New Guinea (USD $)</span> 2082 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PY" > 2083 <span class="country-flags country-flags--PY"></span> 2084 <span>Paraguay (USD $)</span> 2085 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PE" > 2086 <span class="country-flags country-flags--PE"></span> 2087 <span>Peru (USD $)</span> 2088 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PH" > 2089 <span class="country-flags country-flags--PH"></span> 2090 <span>Philippines (USD $)</span> 2091 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PN" > 2092 <span class="country-flags country-flags--PN"></span> 2093 <span>Pitcairn Islands (USD $)</span> 2094 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PL" > 2095 <span class="country-flags country-flags--PL"></span> 2096 <span>Poland (USD $)</span> 2097 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PT" > 2098 <span class="country-flags country-flags--PT"></span> 2099 <span>Portugal (USD $)</span> 2100 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="QA" > 2101 <span class="country-flags country-flags--QA"></span> 2102 <span>Qatar (USD $)</span> 2103 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RE" > 2104 <span class="country-flags country-flags--RE"></span> 2105 <span>Réunion (USD $)</span> 2106 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RO" > 2107 <span class="country-flags country-flags--RO"></span>
2108 <span>Romania (USD $)</span> 2109 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RU" > 2110 <span class="country-flags country-flags--RU"></span> 2111 <span>Russia (USD $)</span> 2112 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RW" > 2113 <span class="country-flags country-flags--RW"></span> 2114 <span>Rwanda (USD $)</span> 2115 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WS" > 2116 <span class="country-flags country-flags--WS"></span> 2117 <span>Samoa (USD $)</span> 2118 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SM" > 2119 <span class="country-flags country-flags--SM"></span> 2120 <span>San Marino (USD $)</span> 2121 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ST" > 2122 <span class="country-flags country-flags--ST"></span> 2123 <span>São Tomé & PrÃncipe (USD $)</span> 2124 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SA" > 2125 <span class="country-flags country-flags--SA"></span> 2126 <span>Saudi Arabia (USD $)</span> 2127 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SN" > 2128 <span class="country-flags country-flags--SN"></span> 2129 <span>Senegal (USD $)</span> 2130 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RS" > 2131 <span class="country-flags country-flags--RS"></span> 2132 <span>Serbia (USD $)</span> 2133 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SC" > 2134 <span class="country-flags country-flags--SC"></span> 2135 <span>Seychelles (USD $)</span> 2136 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SL" > 2137 <span class="country-flags country-flags--SL"></span> 2138 <span>Sierra Leone (USD $)</span> 2139 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SG" > 2140 <span class="country-flags country-flags--SG"></span> 2141 <span>Singapore (USD $)</span> 2142 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SX" > 2143 <span class="country-flags country-flags--SX"></span> 2144 <span>Sint Maarten (USD $)</span> 2145 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SK" > 2146 <span class="country-flags country-flags--SK"></span> 2147 <span>Slovakia (USD $)</span> 2148 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SI" > 2149 <span class="country-flags country-flags--SI"></span> 2150 <span>Slovenia (USD $)</span> 2151 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SB" > 2152 <span class="country-flags country-flags--SB"></span> 2153 <span>Solomon Islands (USD $)</span> 2154 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SO" > 2155 <span class="country-flags country-flags--SO"></span> 2156 <span>Somalia (USD $)</span> 2157 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZA" > 2158 <span class="country-flags country-flags--ZA"></span>
2159 <span>South Africa (USD $)</span> 2160 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GS" > 2161 <span class="country-flags country-flags--GS"></span> 2162 <span>South Georgia & South Sandwich Islands (USD $)</span> 2163 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KR" > 2164 <span class="country-flags country-flags--KR"></span> 2165 <span>South Korea (USD $)</span> 2166 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SS" > 2167 <span class="country-flags country-flags--SS"></span> 2168 <span>South Sudan (USD $)</span> 2169 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ES" > 2170 <span class="country-flags country-flags--ES"></span> 2171 <span>Spain (USD $)</span> 2172 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LK" > 2173 <span class="country-flags country-flags--LK"></span> 2174 <span>Sri Lanka (USD $)</span> 2175 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BL" > 2176 <span class="country-flags country-flags--BL"></span> 2177 <span>St. Barthélemy (USD $)</span> 2178 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SH" > 2179 <span class="country-flags country-flags--SH"></span> 2180 <span>St. Helena (USD $)</span> 2181 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KN" > 2182 <span class="country-flags country-flags--KN"></span> 2183 <span>St. Kitts & Nevis (USD $)</span> 2184 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LC" > 2185 <span class="country-flags country-flags--LC"></span> 2186 <span>St. Lucia (USD $)</span> 2187 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MF" > 2188 <span class="country-flags country-flags--MF"></span> 2189 <span>St. Martin (USD $)</span> 2190 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PM" > 2191 <span class="country-flags country-flags--PM"></span> 2192 <span>St. Pierre & Miquelon (USD $)</span> 2193 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VC" > 2194 <span class="country-flags country-flags--VC"></span> 2195 <span>St. Vincent & Grenadines (USD $)</span> 2196 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SD" > 2197 <span class="country-flags country-flags--SD"></span> 2198 <span>Sudan (USD $)</span> 2199 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SR" > 2200 <span class="country-flags country-flags--SR"></span> 2201 <span>Suriname (USD $)</span> 2202 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SJ" > 2203 <span class="country-flags country-flags--SJ"></span> 2204 <span>Svalbard & Jan Mayen (USD $)</span> 2205 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SE" > 2206 <span class="country-flags country-flags--SE"></span> 2207 <span>Sweden (USD $)</span> 2208 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CH" >
2209 <span class="country-flags country-flags--CH"></span> 2210 <span>Switzerland (USD $)</span> 2211 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TW" > 2212 <span class="country-flags country-flags--TW"></span> 2213 <span>Taiwan (USD $)</span> 2214 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TJ" > 2215 <span class="country-flags country-flags--TJ"></span> 2216 <span>Tajikistan (USD $)</span> 2217 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TZ" > 2218 <span class="country-flags country-flags--TZ"></span> 2219 <span>Tanzania (USD $)</span> 2220 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TH" > 2221 <span class="country-flags country-flags--TH"></span> 2222 <span>Thailand (USD $)</span> 2223 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TL" > 2224 <span class="country-flags country-flags--TL"></span> 2225 <span>Timor-Leste (USD $)</span> 2226 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TG" > 2227 <span class="country-flags country-flags--TG"></span> 2228 <span>Togo (USD $)</span> 2229 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TK" > 2230 <span class="country-flags country-flags--TK"></span> 2231 <span>Tokelau (USD $)</span> 2232 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TO" > 2233 <span class="country-flags country-flags--TO"></span> 2234 <span>Tonga (USD $)</span> 2235 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TT" > 2236 <span class="country-flags country-flags--TT"></span> 2237 <span>Trinidad & Tobago (USD $)</span> 2238 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TA" > 2239 <span class="country-flags country-flags--TA"></span> 2240 <span>Tristan da Cunha (USD $)</span> 2241 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TN" > 2242 <span class="country-flags country-flags--TN"></span> 2243 <span>Tunisia (USD $)</span> 2244 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TR" > 2245 <span class="country-flags country-flags--TR"></span> 2246 <span>Türkiye (USD $)</span> 2247 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TM" > 2248 <span class="country-flags country-flags--TM"></span> 2249 <span>Turkmenistan (USD $)</span> 2250 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TC" > 2251 <span class="country-flags country-flags--TC"></span> 2252 <span>Turks & Caicos Islands (USD $)</span> 2253 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TV" > 2254 <span class="country-flags country-flags--TV"></span> 2255 <span>Tuvalu (USD $)</span> 2256 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UM" > 2257 <span class="country-flags country-flags--UM"></span> 2258 <span>U.S. Outlying Islands (USD $)</span> 2259 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UG" >
2260 <span class="country-flags country-flags--UG"></span> 2261 <span>Uganda (USD $)</span> 2262 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UA" > 2263 <span class="country-flags country-flags--UA"></span> 2264 <span>Ukraine (USD $)</span> 2265 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AE" > 2266 <span class="country-flags country-flags--AE"></span> 2267 <span>United Arab Emirates (USD $)</span> 2268 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="US" aria-selected="true"> 2269 <span class="country-flags country-flags--US"></span> 2270 <span>United States (USD $)</span> 2271 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UY" > 2272 <span class="country-flags country-flags--UY"></span> 2273 <span>Uruguay (USD $)</span> 2274 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UZ" > 2275 <span class="country-flags country-flags--UZ"></span> 2276 <span>Uzbekistan (USD $)</span> 2277 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VU" > 2278 <span class="country-flags country-flags--VU"></span> 2279 <span>Vanuatu (USD $)</span> 2280 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VA" > 2281 <span class="country-flags country-flags--VA"></span> 2282 <span>Vatican City (USD $)</span> 2283 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VE" > 2284 <span class="country-flags country-flags--VE"></span> 2285 <span>Venezuela (USD $)</span> 2286 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VN" > 2287 <span class="country-flags country-flags--VN"></span> 2288 <span>Vietnam (USD $)</span> 2289 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WF" > 2290 <span class="country-flags country-flags--WF"></span> 2291 <span>Wallis & Futuna (USD $)</span> 2292 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EH" > 2293 <span class="country-flags country-flags--EH"></span> 2294 <span>Western Sahara (USD $)</span> 2295 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YE" > 2296 <span class="country-flags country-flags--YE"></span> 2297 <span>Yemen (USD $)</span> 2298 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZM" > 2299 <span class="country-flags country-flags--ZM"></span> 2300 <span>Zambia (USD $)</span> 2301 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZW" > 2302 <span class="country-flags country-flags--ZW"></span> 2303 <span>Zimbabwe (USD $)</span> 2304 </button></x-listbox></form></x-popover> 2305 </div></div><a href="/search" class="hidden tap-area sm:block" aria-controls="search-drawer"> 2306 <span class="sr-only">Open search</span><svg role="presentation" stroke-width="2" focusable="false" width="22" height="22" class="icon icon-search" viewBox="0 0 22 22"> 2307 <circle cx="11" cy="10" r="7" fill="none" stroke="currentColor"></circle> 2308 <path d="m16 15 3 3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 2309 </svg></a><a href="/account/login" class="hidden tap-area sm:block">
2310 <span class="sr-only">Open account page</span><svg role="presentation" stroke-width="2" focusable="false" width="22" height="22" class="icon icon-account" viewBox="0 0 22 22"> 2311 <circle cx="11" cy="7" r="4" fill="none" stroke="currentColor"></circle> 2312 <path d="M3.5 19c1.421-2.974 4.247-5 7.5-5s6.079 2.026 7.5 5" fill="none" stroke="currentColor" stroke-linecap="round"></path> 2313 </svg></a><a href="/cart" data-no-instant class="relative tap-area" aria-controls="cart-drawer"> 2314 <span class="sr-only">Open cart</span><svg role="presentation" stroke-width="2" focusable="false" width="22" height="22" class="icon icon-cart" viewBox="0 0 22 22"> 2315 <path d="M14.666 7.333a3.666 3.666 0 1 1-7.333 0M3.33 6.785l-.642 7.7c-.137 1.654-.206 2.48.073 3.119a2.75 2.75 0 0 0 1.21 1.314c.612.332 1.442.332 3.102.332h7.853c1.66 0 2.49 0 3.103-.332a2.75 2.75 0 0 0 1.21-1.314c.279-.638.21-1.465.072-3.12l-.642-7.7c-.118-1.423-.178-2.134-.493-2.673A2.75 2.75 0 0 0 16.99 3.02c-.563-.269-1.277-.269-2.705-.269h-6.57c-1.428 0-2.142 0-2.705.27A2.75 2.75 0 0 0 3.823 4.11c-.315.539-.374 1.25-.493 2.674Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 2316 </svg><div class="header__cart-count"> 2317 <cart-count class="count-bubble opacity-0" aria-hidden="true">0</cart-count> 2318 </div> 2319 </a> 2320 </div> 2321 </div> 2322 </div> 2323 </store-header> 2324</height-observer><navigation-drawer mobile-opening="bottom" open-from="left" id="header-sidebar-menu" class="navigation-drawer drawer lg:hidden" > 2325 <button is="close-button" aria-label="Close"class="sm-max:hidden"><svg role="presentation" stroke-width="2" focusable="false" width="19" height="19" class="icon icon-close" viewBox="0 0 24 24"> 2326 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 2327 </svg></button><div class="panel-list__wrapper"> 2328 <div class="panel"> 2329 <div class="panel__wrapper" > 2330 <div class="panel__scroller v-stack gap-8"><ul class="v-stack gap-4"> 2331<li class="h3 sm:h4"><a href="/collections/firmtech" class="group block w-full"> 2332 <span><span class="reversed-link">Shop</span></span> 2333 </a></li> 2334<li class="h3 sm:h4"><a href="/pages/health" class="group block w-full"> 2335 <span><span class="reversed-link">Health</span></span> 2336 </a></li> 2337<li class="h3 sm:h4"><a href="/pages/pleasure" class="group block w-full"> 2338 <span><span class="reversed-link">Pleasure</span></span> 2339 </a></li> 2340<li class="h3 sm:h4"><a href="/pages/science" class="group block w-full"> 2341 <span><span class="reversed-link">Science</span></span> 2342 </a></li> 2343<li class="h3 sm:h4"><a href="/blogs/news" class="group block w-full"> 2344 <span><span class="reversed-link">Blog</span></span> 2345 </a></li> 2346<li class="h3 sm:h4"><a href="https://shassessment.myfirmtech.com/?utm_medium=organic&utm_source=assessment&utm_campaign=myfirmtech" class="group block w-full"> 2347 <span><span class="reversed-link">Free Assessment</span></span> 2348 </a></li> 2349<li class="h3 sm:h4"><a href="/pages/press" class="group block w-full"> 2350 <span><span class="reversed-link">Press</span></span> 2351 </a></li></ul></div><div class="panel-footer v-stack gap-5"><ul class="social-media " role="list"><li> 2352 <a href="https://x.com/myfirmtech" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Twitter"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-twitter" viewBox="0 0 24 24"> 2353 <path d="M16.94 4h2.715l-5.93 6.777L20.7 20h-5.462l-4.278-5.593L6.065 20H3.35l6.342-7.25L3 4h5.6l3.868 5.113L16.94 4Zm-.952 14.375h1.504L7.784 5.54H6.17l9.818 12.836Z" fill="currentColor"/> 2354 </svg></a> 2355 </li><li> 2356 <a href="https://www.instagram.com/myfirmtech/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-instagram" viewBox="0 0 24 24"> 2357 <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.
2357047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/> 2358 </svg></a> 2359 </li><li> 2360 <a href="https://www.pinterest.com/MyFirmTech/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Pinterest"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-pinterest" viewBox="0 0 24 24"> 2361 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.765 2.401c3.59-.054 5.837 1.4 6.895 3.95.349.842.722 2.39.442 3.675-.112.512-.144 1.048-.295 1.53-.308.983-.708 1.853-1.238 2.603-.72 1.02-1.81 1.706-3.182 2.052-1.212.305-2.328-.152-2.976-.643-.206-.156-.483-.36-.56-.643h-.029c-.046.515-.244 1.062-.383 1.531-.193.65-.23 1.321-.472 1.929a12.345 12.345 0 0 1-.942 1.868c-.184.302-.692 1.335-1.061 1.347-.04-.078-.057-.108-.06-.245-.118-.19-.035-.508-.087-.766-.082-.4-.145-1.123-.06-1.53v-.643c.096-.442.092-.894.207-1.317.25-.92.39-1.895.648-2.848.249-.915.477-1.916.678-2.847.045-.21-.21-.815-.265-1.041-.174-.713-.042-1.7.176-2.236.275-.674 1.08-1.703 2.122-1.439.838.212 1.371 1.118 1.09 2.266-.295 1.205-.677 2.284-.943 3.49-.068.311.05.641.118.827.248.672 1 1.324 2.004 1.072 1.52-.383 2.193-1.76 2.652-3.246.124-.402.109-.781.206-1.225.204-.935.118-2.331-.177-3.061-.472-1.17-1.353-1.92-2.563-2.328L12.707 4.3c-.56-.128-1.626.064-2.004.183-1.69.535-2.737 1.427-3.388 3.032-.222.546-.344 1.1-.383 1.868l-.03.276c.13.686.144 1.14.413 1.653.132.252.447.451.5.765.032.185-.104.464-.147.613-.065.224-.041.48-.147.673-.192.349-.714.087-.943-.061-1.192-.77-2.175-2.995-1.62-5.144.085-.332.09-.62.206-.919.723-1.844 1.802-2.978 3.359-3.95.583-.364 1.37-.544 2.092-.734l1.149-.154Z" fill="currentColor"/> 2362 </svg></a> 2363 </li><li> 2364 <a href="https://www.youtube.com/channel/UC46J3ibyYyQNPBr5T58DpFg" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on YouTube"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-youtube" viewBox="0 0 24 24"> 2365 <path fill-rule="evenodd" clip-rule="evenodd" d="M20.44 5.243c.929.244 1.66.963 1.909 1.876.451 1.654.451 5.106.451 5.106s0 3.452-.451 5.106a2.681 2.681 0 0 1-1.91 1.876c-1.684.443-8.439.443-8.439.443s-6.754 0-8.439-.443a2.682 2.682 0 0 1-1.91-1.876c-.45-1.654-.45-5.106-.45-5.106s0-3.452.45-5.106a2.681 2.681 0 0 1 1.91-1.876c1.685-.443 8.44-.443 8.44-.443s6.754 0 8.438.443Zm-5.004 6.982L9.792 15.36V9.091l5.646 3.134Z" fill="currentColor"/> 2366 </svg></a> 2367 </li><li> 2368 <a href="https://www.linkedin.com/company/myfirmtech/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on LinkedIn"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-linkedin" viewBox="0 0 24 24"> 2369 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.349 5.478a1.875 1.875 0 1 0-3.749 0 1.875 1.875 0 1 0 3.749 0ZM7.092 19.2H3.857V8.78h3.235V19.2ZM12.22 8.78H9.121V19.2h3.228v-5.154c0-1.36.257-2.676 1.94-2.676 1.658 0 1.68 1.554 1.68 2.763V19.2H19.2v-5.715c0-2.806-.605-4.963-3.877-4.963-1.573 0-2.629.863-3.06 1.683h-.044V8.78Z" fill="currentColor"/> 2370 </svg></a> 2371 </li></ul><div class="panel-footer__localization-wrapper h-stack gap-6 border-t md:hidden"><link rel="stylesheet" href="//myfirmtech.com/cdn/shop/t/24/assets/country-flags.css?v=133253664215562886901772071395" media="print" onload="this.media='all'; this.onload = null"><div class="relative"> 2372 <button type="button" class="text-with-icon gap-2.5 group" aria-controls="popover-localization-form-country--sections--17107269615766__header" aria-expanded="false"> 2373 <div class="h-stack gap-2"><span class="country-flags country-flags--US"></span><span class="bold text-sm">USD $</span> 2374 </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7"> 2375 <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 2376 </svg></button> 2377 2378 <x-popover id="popover-localization-form-country--sections--17107269615766__header" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover"> 2379 <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country--sections--17107269615766__header" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AF" >
2380 <span class="country-flags country-flags--AF"></span> 2381 <span>Afghanistan (USD $)</span> 2382 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AX" > 2383 <span class="country-flags country-flags--AX"></span> 2384 <span>Ã land Islands (USD $)</span> 2385 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AL" > 2386 <span class="country-flags country-flags--AL"></span> 2387 <span>Albania (USD $)</span> 2388 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DZ" > 2389 <span class="country-flags country-flags--DZ"></span> 2390 <span>Algeria (USD $)</span> 2391 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AD" > 2392 <span class="country-flags country-flags--AD"></span> 2393 <span>Andorra (USD $)</span> 2394 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AO" > 2395 <span class="country-flags country-flags--AO"></span> 2396 <span>Angola (USD $)</span> 2397 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AI" > 2398 <span class="country-flags country-flags--AI"></span> 2399 <span>Anguilla (USD $)</span> 2400 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AG" > 2401 <span class="country-flags country-flags--AG"></span> 2402 <span>Antigua & Barbuda (USD $)</span> 2403 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AR" > 2404 <span class="country-flags country-flags--AR"></span> 2405 <span>Argentina (USD $)</span> 2406 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AM" > 2407 <span class="country-flags country-flags--AM"></span> 2408 <span>Armenia (USD $)</span> 2409 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AW" > 2410 <span class="country-flags country-flags--AW"></span> 2411 <span>Aruba (USD $)</span> 2412 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AC" > 2413 <span class="country-flags country-flags--AC"></span> 2414 <span>Ascension Island (USD $)</span> 2415 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AU" > 2416 <span class="country-flags country-flags--AU"></span> 2417 <span>Australia (USD $)</span> 2418 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AT" > 2419 <span class="country-flags country-flags--AT"></span> 2420 <span>Austria (USD $)</span> 2421 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AZ" > 2422 <span class="country-flags country-flags--AZ"></span> 2423 <span>Azerbaijan (USD $)</span> 2424 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BS" > 2425 <span class="country-flags country-flags--BS"></span> 2426 <span>Bahamas (USD $)</span> 2427 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BH" > 2428 <span class="country-flags country-flags--BH"></span> 2429 <span>Bahrain (USD $)</span> 2430 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BD" >
2431 <span class="country-flags country-flags--BD"></span> 2432 <span>Bangladesh (USD $)</span> 2433 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BB" > 2434 <span class="country-flags country-flags--BB"></span> 2435 <span>Barbados (USD $)</span> 2436 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BY" > 2437 <span class="country-flags country-flags--BY"></span> 2438 <span>Belarus (USD $)</span> 2439 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BE" > 2440 <span class="country-flags country-flags--BE"></span> 2441 <span>Belgium (USD $)</span> 2442 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BZ" > 2443 <span class="country-flags country-flags--BZ"></span> 2444 <span>Belize (USD $)</span> 2445 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BJ" > 2446 <span class="country-flags country-flags--BJ"></span> 2447 <span>Benin (USD $)</span> 2448 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BM" > 2449 <span class="country-flags country-flags--BM"></span> 2450 <span>Bermuda (USD $)</span> 2451 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BT" > 2452 <span class="country-flags country-flags--BT"></span> 2453 <span>Bhutan (USD $)</span> 2454 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BO" > 2455 <span class="country-flags country-flags--BO"></span> 2456 <span>Bolivia (USD $)</span> 2457 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BA" > 2458 <span class="country-flags country-flags--BA"></span> 2459 <span>Bosnia & Herzegovina (USD $)</span> 2460 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BW" > 2461 <span class="country-flags country-flags--BW"></span> 2462 <span>Botswana (USD $)</span> 2463 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BR" > 2464 <span class="country-flags country-flags--BR"></span> 2465 <span>Brazil (USD $)</span> 2466 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IO" > 2467 <span class="country-flags country-flags--IO"></span> 2468 <span>British Indian Ocean Territory (USD $)</span> 2469 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VG" > 2470 <span class="country-flags country-flags--VG"></span> 2471 <span>British Virgin Islands (USD $)</span> 2472 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BN" > 2473 <span class="country-flags country-flags--BN"></span> 2474 <span>Brunei (USD $)</span> 2475 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BG" > 2476 <span class="country-flags country-flags--BG"></span> 2477 <span>Bulgaria (USD $)</span> 2478 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BF" > 2479 <span class="country-flags country-flags--BF"></span> 2480 <span>Burkina Faso (USD $)</span> 2481 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BI" >
2482 <span class="country-flags country-flags--BI"></span> 2483 <span>Burundi (USD $)</span> 2484 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KH" > 2485 <span class="country-flags country-flags--KH"></span> 2486 <span>Cambodia (USD $)</span> 2487 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CM" > 2488 <span class="country-flags country-flags--CM"></span> 2489 <span>Cameroon (USD $)</span> 2490 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CA" > 2491 <span class="country-flags country-flags--CA"></span> 2492 <span>Canada (USD $)</span> 2493 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CV" > 2494 <span class="country-flags country-flags--CV"></span> 2495 <span>Cape Verde (USD $)</span> 2496 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BQ" > 2497 <span class="country-flags country-flags--BQ"></span> 2498 <span>Caribbean Netherlands (USD $)</span> 2499 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KY" > 2500 <span class="country-flags country-flags--KY"></span> 2501 <span>Cayman Islands (USD $)</span> 2502 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CF" > 2503 <span class="country-flags country-flags--CF"></span> 2504 <span>Central African Republic (USD $)</span> 2505 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TD" > 2506 <span class="country-flags country-flags--TD"></span> 2507 <span>Chad (USD $)</span> 2508 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CL" > 2509 <span class="country-flags country-flags--CL"></span> 2510 <span>Chile (USD $)</span> 2511 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CN" > 2512 <span class="country-flags country-flags--CN"></span> 2513 <span>China (USD $)</span> 2514 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CX" > 2515 <span class="country-flags country-flags--CX"></span> 2516 <span>Christmas Island (USD $)</span> 2517 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CC" > 2518 <span class="country-flags country-flags--CC"></span> 2519 <span>Cocos (Keeling) Islands (USD $)</span> 2520 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CO" > 2521 <span class="country-flags country-flags--CO"></span> 2522 <span>Colombia (USD $)</span> 2523 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KM" > 2524 <span class="country-flags country-flags--KM"></span> 2525 <span>Comoros (USD $)</span> 2526 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CG" > 2527 <span class="country-flags country-flags--CG"></span> 2528 <span>Congo - Brazzaville (USD $)</span> 2529 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CD" > 2530 <span class="country-flags country-flags--CD"></span> 2531 <span>Congo - Kinshasa (USD $)</span> 2532 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CK" >
2533 <span class="country-flags country-flags--CK"></span> 2534 <span>Cook Islands (USD $)</span> 2535 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CR" > 2536 <span class="country-flags country-flags--CR"></span> 2537 <span>Costa Rica (USD $)</span> 2538 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CI" > 2539 <span class="country-flags country-flags--CI"></span> 2540 <span>Côte dâIvoire (USD $)</span> 2541 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HR" > 2542 <span class="country-flags country-flags--HR"></span> 2543 <span>Croatia (USD $)</span> 2544 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CW" > 2545 <span class="country-flags country-flags--CW"></span> 2546 <span>Curaçao (USD $)</span> 2547 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CY" > 2548 <span class="country-flags country-flags--CY"></span> 2549 <span>Cyprus (USD $)</span> 2550 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CZ" > 2551 <span class="country-flags country-flags--CZ"></span> 2552 <span>Czechia (USD $)</span> 2553 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DK" > 2554 <span class="country-flags country-flags--DK"></span> 2555 <span>Denmark (USD $)</span> 2556 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DJ" > 2557 <span class="country-flags country-flags--DJ"></span> 2558 <span>Djibouti (USD $)</span> 2559 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DM" > 2560 <span class="country-flags country-flags--DM"></span> 2561 <span>Dominica (USD $)</span> 2562 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DO" > 2563 <span class="country-flags country-flags--DO"></span> 2564 <span>Dominican Republic (USD $)</span> 2565 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EC" > 2566 <span class="country-flags country-flags--EC"></span> 2567 <span>Ecuador (USD $)</span> 2568 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EG" > 2569 <span class="country-flags country-flags--EG"></span> 2570 <span>Egypt (USD $)</span> 2571 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SV" > 2572 <span class="country-flags country-flags--SV"></span> 2573 <span>El Salvador (USD $)</span> 2574 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GQ" > 2575 <span class="country-flags country-flags--GQ"></span> 2576 <span>Equatorial Guinea (USD $)</span> 2577 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ER" > 2578 <span class="country-flags country-flags--ER"></span> 2579 <span>Eritrea (USD $)</span> 2580 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EE" > 2581 <span class="country-flags country-flags--EE"></span> 2582 <span>Estonia (USD $)</span> 2583 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SZ" >
2584 <span class="country-flags country-flags--SZ"></span> 2585 <span>Eswatini (USD $)</span> 2586 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ET" > 2587 <span class="country-flags country-flags--ET"></span> 2588 <span>Ethiopia (USD $)</span> 2589 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FK" > 2590 <span class="country-flags country-flags--FK"></span> 2591 <span>Falkland Islands (USD $)</span> 2592 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FO" > 2593 <span class="country-flags country-flags--FO"></span> 2594 <span>Faroe Islands (USD $)</span> 2595 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FJ" > 2596 <span class="country-flags country-flags--FJ"></span> 2597 <span>Fiji (USD $)</span> 2598 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FI" > 2599 <span class="country-flags country-flags--FI"></span> 2600 <span>Finland (USD $)</span> 2601 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FR" > 2602 <span class="country-flags country-flags--FR"></span> 2603 <span>France (USD $)</span> 2604 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GF" > 2605 <span class="country-flags country-flags--GF"></span> 2606 <span>French Guiana (USD $)</span> 2607 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PF" > 2608 <span class="country-flags country-flags--PF"></span> 2609 <span>French Polynesia (USD $)</span> 2610 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TF" > 2611 <span class="country-flags country-flags--TF"></span> 2612 <span>French Southern Territories (USD $)</span> 2613 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GA" > 2614 <span class="country-flags country-flags--GA"></span> 2615 <span>Gabon (USD $)</span> 2616 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GM" > 2617 <span class="country-flags country-flags--GM"></span> 2618 <span>Gambia (USD $)</span> 2619 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GE" > 2620 <span class="country-flags country-flags--GE"></span> 2621 <span>Georgia (USD $)</span> 2622 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DE" > 2623 <span class="country-flags country-flags--DE"></span> 2624 <span>Germany (USD $)</span> 2625 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GH" > 2626 <span class="country-flags country-flags--GH"></span> 2627 <span>Ghana (USD $)</span> 2628 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GI" > 2629 <span class="country-flags country-flags--GI"></span> 2630 <span>Gibraltar (USD $)</span> 2631 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GR" > 2632 <span class="country-flags country-flags--GR"></span> 2633 <span>Greece (USD $)</span> 2634 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GL" >
2635 <span class="country-flags country-flags--GL"></span> 2636 <span>Greenland (USD $)</span> 2637 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GD" > 2638 <span class="country-flags country-flags--GD"></span> 2639 <span>Grenada (USD $)</span> 2640 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GP" > 2641 <span class="country-flags country-flags--GP"></span> 2642 <span>Guadeloupe (USD $)</span> 2643 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GT" > 2644 <span class="country-flags country-flags--GT"></span> 2645 <span>Guatemala (USD $)</span> 2646 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GG" > 2647 <span class="country-flags country-flags--GG"></span> 2648 <span>Guernsey (USD $)</span> 2649 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GN" > 2650 <span class="country-flags country-flags--GN"></span> 2651 <span>Guinea (USD $)</span> 2652 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GW" > 2653 <span class="country-flags country-flags--GW"></span> 2654 <span>Guinea-Bissau (USD $)</span> 2655 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GY" > 2656 <span class="country-flags country-flags--GY"></span> 2657 <span>Guyana (USD $)</span> 2658 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HT" > 2659 <span class="country-flags country-flags--HT"></span> 2660 <span>Haiti (USD $)</span> 2661 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HN" > 2662 <span class="country-flags country-flags--HN"></span> 2663 <span>Honduras (USD $)</span> 2664 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HK" > 2665 <span class="country-flags country-flags--HK"></span> 2666 <span>Hong Kong SAR (USD $)</span> 2667 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HU" > 2668 <span class="country-flags country-flags--HU"></span> 2669 <span>Hungary (USD $)</span> 2670 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IS" > 2671 <span class="country-flags country-flags--IS"></span> 2672 <span>Iceland (USD $)</span> 2673 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IN" > 2674 <span class="country-flags country-flags--IN"></span> 2675 <span>India (USD $)</span> 2676 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ID" > 2677 <span class="country-flags country-flags--ID"></span> 2678 <span>Indonesia (USD $)</span> 2679 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IQ" > 2680 <span class="country-flags country-flags--IQ"></span> 2681 <span>Iraq (USD $)</span> 2682 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IE" > 2683 <span class="country-flags country-flags--IE"></span> 2684 <span>Ireland (USD $)</span> 2685 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IM" >
2686 <span class="country-flags country-flags--IM"></span> 2687 <span>Isle of Man (USD $)</span> 2688 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IL" > 2689 <span class="country-flags country-flags--IL"></span> 2690 <span>Israel (USD $)</span> 2691 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IT" > 2692 <span class="country-flags country-flags--IT"></span> 2693 <span>Italy (USD $)</span> 2694 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JM" > 2695 <span class="country-flags country-flags--JM"></span> 2696 <span>Jamaica (USD $)</span> 2697 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JP" > 2698 <span class="country-flags country-flags--JP"></span> 2699 <span>Japan (USD $)</span> 2700 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JE" > 2701 <span class="country-flags country-flags--JE"></span> 2702 <span>Jersey (USD $)</span> 2703 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JO" > 2704 <span class="country-flags country-flags--JO"></span> 2705 <span>Jordan (USD $)</span> 2706 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KZ" > 2707 <span class="country-flags country-flags--KZ"></span> 2708 <span>Kazakhstan (USD $)</span> 2709 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KE" > 2710 <span class="country-flags country-flags--KE"></span> 2711 <span>Kenya (USD $)</span> 2712 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KI" > 2713 <span class="country-flags country-flags--KI"></span> 2714 <span>Kiribati (USD $)</span> 2715 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="XK" > 2716 <span class="country-flags country-flags--XK"></span> 2717 <span>Kosovo (USD $)</span> 2718 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KW" > 2719 <span class="country-flags country-flags--KW"></span> 2720 <span>Kuwait (USD $)</span> 2721 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KG" > 2722 <span class="country-flags country-flags--KG"></span> 2723 <span>Kyrgyzstan (USD $)</span> 2724 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LA" > 2725 <span class="country-flags country-flags--LA"></span> 2726 <span>Laos (USD $)</span> 2727 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LV" > 2728 <span class="country-flags country-flags--LV"></span> 2729 <span>Latvia (USD $)</span> 2730 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LB" > 2731 <span class="country-flags country-flags--LB"></span> 2732 <span>Lebanon (USD $)</span> 2733 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LS" > 2734 <span class="country-flags country-flags--LS"></span> 2735 <span>Lesotho (USD $)</span> 2736 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LR" > 2737 <span class="country-flags country-flags--LR"></span>
2738 <span>Liberia (USD $)</span> 2739 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LY" > 2740 <span class="country-flags country-flags--LY"></span> 2741 <span>Libya (USD $)</span> 2742 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LI" > 2743 <span class="country-flags country-flags--LI"></span> 2744 <span>Liechtenstein (USD $)</span> 2745 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LT" > 2746 <span class="country-flags country-flags--LT"></span> 2747 <span>Lithuania (USD $)</span> 2748 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LU" > 2749 <span class="country-flags country-flags--LU"></span> 2750 <span>Luxembourg (USD $)</span> 2751 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MO" > 2752 <span class="country-flags country-flags--MO"></span> 2753 <span>Macao SAR (USD $)</span> 2754 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MG" > 2755 <span class="country-flags country-flags--MG"></span> 2756 <span>Madagascar (USD $)</span> 2757 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MW" > 2758 <span class="country-flags country-flags--MW"></span> 2759 <span>Malawi (USD $)</span> 2760 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MY" > 2761 <span class="country-flags country-flags--MY"></span> 2762 <span>Malaysia (USD $)</span> 2763 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MV" > 2764 <span class="country-flags country-flags--MV"></span> 2765 <span>Maldives (USD $)</span> 2766 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ML" > 2767 <span class="country-flags country-flags--ML"></span> 2768 <span>Mali (USD $)</span> 2769 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MT" > 2770 <span class="country-flags country-flags--MT"></span> 2771 <span>Malta (USD $)</span> 2772 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MQ" > 2773 <span class="country-flags country-flags--MQ"></span> 2774 <span>Martinique (USD $)</span> 2775 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MR" > 2776 <span class="country-flags country-flags--MR"></span> 2777 <span>Mauritania (USD $)</span> 2778 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MU" > 2779 <span class="country-flags country-flags--MU"></span> 2780 <span>Mauritius (USD $)</span> 2781 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YT" > 2782 <span class="country-flags country-flags--YT"></span> 2783 <span>Mayotte (USD $)</span> 2784 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MX" > 2785 <span class="country-flags country-flags--MX"></span> 2786 <span>Mexico (USD $)</span> 2787 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MD" > 2788 <span class="country-flags country-flags--MD"></span>
2789 <span>Moldova (USD $)</span> 2790 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MC" > 2791 <span class="country-flags country-flags--MC"></span> 2792 <span>Monaco (USD $)</span> 2793 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MN" > 2794 <span class="country-flags country-flags--MN"></span> 2795 <span>Mongolia (USD $)</span> 2796 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ME" > 2797 <span class="country-flags country-flags--ME"></span> 2798 <span>Montenegro (USD $)</span> 2799 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MS" > 2800 <span class="country-flags country-flags--MS"></span> 2801 <span>Montserrat (USD $)</span> 2802 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MA" > 2803 <span class="country-flags country-flags--MA"></span> 2804 <span>Morocco (USD $)</span> 2805 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MZ" > 2806 <span class="country-flags country-flags--MZ"></span> 2807 <span>Mozambique (USD $)</span> 2808 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MM" > 2809 <span class="country-flags country-flags--MM"></span> 2810 <span>Myanmar (Burma) (USD $)</span> 2811 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NA" > 2812 <span class="country-flags country-flags--NA"></span> 2813 <span>Namibia (USD $)</span> 2814 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NR" > 2815 <span class="country-flags country-flags--NR"></span> 2816 <span>Nauru (USD $)</span> 2817 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NP" > 2818 <span class="country-flags country-flags--NP"></span> 2819 <span>Nepal (USD $)</span> 2820 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NL" > 2821 <span class="country-flags country-flags--NL"></span> 2822 <span>Netherlands (USD $)</span> 2823 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NC" > 2824 <span class="country-flags country-flags--NC"></span> 2825 <span>New Caledonia (USD $)</span> 2826 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NZ" > 2827 <span class="country-flags country-flags--NZ"></span> 2828 <span>New Zealand (USD $)</span> 2829 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NI" > 2830 <span class="country-flags country-flags--NI"></span> 2831 <span>Nicaragua (USD $)</span> 2832 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NE" > 2833 <span class="country-flags country-flags--NE"></span> 2834 <span>Niger (USD $)</span> 2835 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NG" > 2836 <span class="country-flags country-flags--NG"></span> 2837 <span>Nigeria (USD $)</span> 2838 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NU" > 2839 <span class="country-flags country-flags--NU"></span>
2840 <span>Niue (USD $)</span> 2841 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NF" > 2842 <span class="country-flags country-flags--NF"></span> 2843 <span>Norfolk Island (USD $)</span> 2844 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MK" > 2845 <span class="country-flags country-flags--MK"></span> 2846 <span>North Macedonia (USD $)</span> 2847 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NO" > 2848 <span class="country-flags country-flags--NO"></span> 2849 <span>Norway (USD $)</span> 2850 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="OM" > 2851 <span class="country-flags country-flags--OM"></span> 2852 <span>Oman (USD $)</span> 2853 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PK" > 2854 <span class="country-flags country-flags--PK"></span> 2855 <span>Pakistan (USD $)</span> 2856 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PS" > 2857 <span class="country-flags country-flags--PS"></span> 2858 <span>Palestinian Territories (USD $)</span> 2859 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PA" > 2860 <span class="country-flags country-flags--PA"></span> 2861 <span>Panama (USD $)</span> 2862 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PG" > 2863 <span class="country-flags country-flags--PG"></span> 2864 <span>Papua New Guinea (USD $)</span> 2865 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PY" > 2866 <span class="country-flags country-flags--PY"></span> 2867 <span>Paraguay (USD $)</span> 2868 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PE" > 2869 <span class="country-flags country-flags--PE"></span> 2870 <span>Peru (USD $)</span> 2871 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PH" > 2872 <span class="country-flags country-flags--PH"></span> 2873 <span>Philippines (USD $)</span> 2874 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PN" > 2875 <span class="country-flags country-flags--PN"></span> 2876 <span>Pitcairn Islands (USD $)</span> 2877 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PL" > 2878 <span class="country-flags country-flags--PL"></span> 2879 <span>Poland (USD $)</span> 2880 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PT" > 2881 <span class="country-flags country-flags--PT"></span> 2882 <span>Portugal (USD $)</span> 2883 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="QA" > 2884 <span class="country-flags country-flags--QA"></span> 2885 <span>Qatar (USD $)</span> 2886 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RE" > 2887 <span class="country-flags country-flags--RE"></span> 2888 <span>Réunion (USD $)</span> 2889 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RO" > 2890 <span class="country-flags country-flags--RO"></span>
2891 <span>Romania (USD $)</span> 2892 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RU" > 2893 <span class="country-flags country-flags--RU"></span> 2894 <span>Russia (USD $)</span> 2895 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RW" > 2896 <span class="country-flags country-flags--RW"></span> 2897 <span>Rwanda (USD $)</span> 2898 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WS" > 2899 <span class="country-flags country-flags--WS"></span> 2900 <span>Samoa (USD $)</span> 2901 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SM" > 2902 <span class="country-flags country-flags--SM"></span> 2903 <span>San Marino (USD $)</span> 2904 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ST" > 2905 <span class="country-flags country-flags--ST"></span> 2906 <span>São Tomé & PrÃncipe (USD $)</span> 2907 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SA" > 2908 <span class="country-flags country-flags--SA"></span> 2909 <span>Saudi Arabia (USD $)</span> 2910 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SN" > 2911 <span class="country-flags country-flags--SN"></span> 2912 <span>Senegal (USD $)</span> 2913 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RS" > 2914 <span class="country-flags country-flags--RS"></span> 2915 <span>Serbia (USD $)</span> 2916 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SC" > 2917 <span class="country-flags country-flags--SC"></span> 2918 <span>Seychelles (USD $)</span> 2919 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SL" > 2920 <span class="country-flags country-flags--SL"></span> 2921 <span>Sierra Leone (USD $)</span> 2922 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SG" > 2923 <span class="country-flags country-flags--SG"></span> 2924 <span>Singapore (USD $)</span> 2925 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SX" > 2926 <span class="country-flags country-flags--SX"></span> 2927 <span>Sint Maarten (USD $)</span> 2928 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SK" > 2929 <span class="country-flags country-flags--SK"></span> 2930 <span>Slovakia (USD $)</span> 2931 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SI" > 2932 <span class="country-flags country-flags--SI"></span> 2933 <span>Slovenia (USD $)</span> 2934 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SB" > 2935 <span class="country-flags country-flags--SB"></span> 2936 <span>Solomon Islands (USD $)</span> 2937 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SO" > 2938 <span class="country-flags country-flags--SO"></span> 2939 <span>Somalia (USD $)</span> 2940 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZA" > 2941 <span class="country-flags country-flags--ZA"></span>
2942 <span>South Africa (USD $)</span> 2943 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GS" > 2944 <span class="country-flags country-flags--GS"></span> 2945 <span>South Georgia & South Sandwich Islands (USD $)</span> 2946 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KR" > 2947 <span class="country-flags country-flags--KR"></span> 2948 <span>South Korea (USD $)</span> 2949 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SS" > 2950 <span class="country-flags country-flags--SS"></span> 2951 <span>South Sudan (USD $)</span> 2952 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ES" > 2953 <span class="country-flags country-flags--ES"></span> 2954 <span>Spain (USD $)</span> 2955 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LK" > 2956 <span class="country-flags country-flags--LK"></span> 2957 <span>Sri Lanka (USD $)</span> 2958 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BL" > 2959 <span class="country-flags country-flags--BL"></span> 2960 <span>St. Barthélemy (USD $)</span> 2961 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SH" > 2962 <span class="country-flags country-flags--SH"></span> 2963 <span>St. Helena (USD $)</span> 2964 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KN" > 2965 <span class="country-flags country-flags--KN"></span> 2966 <span>St. Kitts & Nevis (USD $)</span> 2967 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LC" > 2968 <span class="country-flags country-flags--LC"></span> 2969 <span>St. Lucia (USD $)</span> 2970 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MF" > 2971 <span class="country-flags country-flags--MF"></span> 2972 <span>St. Martin (USD $)</span> 2973 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PM" > 2974 <span class="country-flags country-flags--PM"></span> 2975 <span>St. Pierre & Miquelon (USD $)</span> 2976 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VC" > 2977 <span class="country-flags country-flags--VC"></span> 2978 <span>St. Vincent & Grenadines (USD $)</span> 2979 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SD" > 2980 <span class="country-flags country-flags--SD"></span> 2981 <span>Sudan (USD $)</span> 2982 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SR" > 2983 <span class="country-flags country-flags--SR"></span> 2984 <span>Suriname (USD $)</span> 2985 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SJ" > 2986 <span class="country-flags country-flags--SJ"></span> 2987 <span>Svalbard & Jan Mayen (USD $)</span> 2988 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SE" > 2989 <span class="country-flags country-flags--SE"></span> 2990 <span>Sweden (USD $)</span> 2991 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CH" >
2992 <span class="country-flags country-flags--CH"></span> 2993 <span>Switzerland (USD $)</span> 2994 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TW" > 2995 <span class="country-flags country-flags--TW"></span> 2996 <span>Taiwan (USD $)</span> 2997 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TJ" > 2998 <span class="country-flags country-flags--TJ"></span> 2999 <span>Tajikistan (USD $)</span> 3000 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TZ" > 3001 <span class="country-flags country-flags--TZ"></span> 3002 <span>Tanzania (USD $)</span> 3003 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TH" > 3004 <span class="country-flags country-flags--TH"></span> 3005 <span>Thailand (USD $)</span> 3006 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TL" > 3007 <span class="country-flags country-flags--TL"></span> 3008 <span>Timor-Leste (USD $)</span> 3009 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TG" > 3010 <span class="country-flags country-flags--TG"></span> 3011 <span>Togo (USD $)</span> 3012 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TK" > 3013 <span class="country-flags country-flags--TK"></span> 3014 <span>Tokelau (USD $)</span> 3015 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TO" > 3016 <span class="country-flags country-flags--TO"></span> 3017 <span>Tonga (USD $)</span> 3018 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TT" > 3019 <span class="country-flags country-flags--TT"></span> 3020 <span>Trinidad & Tobago (USD $)</span> 3021 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TA" > 3022 <span class="country-flags country-flags--TA"></span> 3023 <span>Tristan da Cunha (USD $)</span> 3024 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TN" > 3025 <span class="country-flags country-flags--TN"></span> 3026 <span>Tunisia (USD $)</span> 3027 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TR" > 3028 <span class="country-flags country-flags--TR"></span> 3029 <span>Türkiye (USD $)</span> 3030 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TM" > 3031 <span class="country-flags country-flags--TM"></span> 3032 <span>Turkmenistan (USD $)</span> 3033 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TC" > 3034 <span class="country-flags country-flags--TC"></span> 3035 <span>Turks & Caicos Islands (USD $)</span> 3036 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TV" > 3037 <span class="country-flags country-flags--TV"></span> 3038 <span>Tuvalu (USD $)</span> 3039 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UM" > 3040 <span class="country-flags country-flags--UM"></span> 3041 <span>U.S. Outlying Islands (USD $)</span> 3042 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UG" >
3043 <span class="country-flags country-flags--UG"></span> 3044 <span>Uganda (USD $)</span> 3045 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UA" > 3046 <span class="country-flags country-flags--UA"></span> 3047 <span>Ukraine (USD $)</span> 3048 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AE" > 3049 <span class="country-flags country-flags--AE"></span> 3050 <span>United Arab Emirates (USD $)</span> 3051 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="US" aria-selected="true"> 3052 <span class="country-flags country-flags--US"></span> 3053 <span>United States (USD $)</span> 3054 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UY" > 3055 <span class="country-flags country-flags--UY"></span> 3056 <span>Uruguay (USD $)</span> 3057 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UZ" > 3058 <span class="country-flags country-flags--UZ"></span> 3059 <span>Uzbekistan (USD $)</span> 3060 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VU" > 3061 <span class="country-flags country-flags--VU"></span> 3062 <span>Vanuatu (USD $)</span> 3063 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VA" > 3064 <span class="country-flags country-flags--VA"></span> 3065 <span>Vatican City (USD $)</span> 3066 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VE" > 3067 <span class="country-flags country-flags--VE"></span> 3068 <span>Venezuela (USD $)</span> 3069 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VN" > 3070 <span class="country-flags country-flags--VN"></span> 3071 <span>Vietnam (USD $)</span> 3072 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WF" > 3073 <span class="country-flags country-flags--WF"></span> 3074 <span>Wallis & Futuna (USD $)</span> 3075 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EH" > 3076 <span class="country-flags country-flags--EH"></span> 3077 <span>Western Sahara (USD $)</span> 3078 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YE" > 3079 <span class="country-flags country-flags--YE"></span> 3080 <span>Yemen (USD $)</span> 3081 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZM" > 3082 <span class="country-flags country-flags--ZM"></span> 3083 <span>Zambia (USD $)</span> 3084 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZW" > 3085 <span class="country-flags country-flags--ZW"></span> 3086 <span>Zimbabwe (USD $)</span> 3087 </button></x-listbox></form></x-popover> 3088 </div><a href="/account" class="panel-footer__account-link bold text-sm">Account</a></div></div></div> 3089 </div></div></navigation-drawer>
3089<script> 3090 document.documentElement.style.setProperty('--header-height', Math.round(document.getElementById('shopify-section-sections--17107269615766__header').clientHeight) + 'px'); 3091</script>
3091 3092 3093 3094 3095<style> @media (min-width: 900px) {#shopify-section-sections--17107269615766__header .header-button {--button-background: 37 47 106 / var(--button-background-opacity, 1); --button-outline-color: 37 47 191; --button-text-color: 255 255 255; } #shopify-section-sections--17107269615766__header .header__secondary-nav {width: 40vw; } #shopify-section-sections--17107269615766__header .header__wrapper {padding-left: 5vw; padding-right: 5vw; }} @media (max-width: 899px) {#shopify-section-sections--17107269615766__header .header-button {display: none; }} @media (min-width: 900px) and (max-width: 1150px) {#shopify-section-sections--17107269615766__header .header__logo {left: -30vw; }} #shopify-section-sections--17107269615766__header .header__main-nav {padding-right: 14vw;} </style></header> 3096<!-- END sections: header-group --><!-- BEGIN sections: overlay-group --> 3097<div id="shopify-section-sections--17107270664342__cart-drawer" class="shopify-section shopify-section-group-overlay-group"><cart-drawer class="cart-drawer drawer drawer--lg" id="cart-drawer"><button is="close-button" aria-label="Close"><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 3098 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 3099 </svg></button> 3100 3101 <div class="empty-state align-self-center"> 3102 <div class="empty-state__icon-wrapper"><svg role="presentation" stroke-width="1" focusable="false" width="32" height="32" class="icon icon-cart" viewBox="0 0 22 22"> 3103 <path d="M14.666 7.333a3.666 3.666 0 1 1-7.333 0M3.33 6.785l-.642 7.7c-.137 1.654-.206 2.48.073 3.119a2.75 2.75 0 0 0 1.21 1.314c.612.332 1.442.332 3.102.332h7.853c1.66 0 2.49 0 3.103-.332a2.75 2.75 0 0 0 1.21-1.314c.279-.638.21-1.465.072-3.12l-.642-7.7c-.118-1.423-.178-2.134-.493-2.673A2.75 2.75 0 0 0 16.99 3.02c-.563-.269-1.277-.269-2.705-.269h-6.57c-1.428 0-2.142 0-2.705.27A2.75 2.75 0 0 0 3.823 4.11c-.315.539-.374 1.25-.493 2.674Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> 3104 </svg><span class="count-bubble count-bubble--lg">0</span> 3105 </div> 3106 3107 <div class="prose"> 3108 <p class="h5">Your cart is empty</p> 3109<a class="button button--xl" 3110 3111 3112 3113 3114 3115 href="/collections/firmtech" 3116 3117 3118 >Continue shopping</a></div> 3119 </div></cart-drawer> 3120 3121 3122</div><div id="shopify-section-sections--17107270664342__search-drawer" class="shopify-section shopify-section-group-overlay-group"><search-drawer class="search-drawer drawer drawer--lg" id="search-drawer"> 3123 <form action="/search" method="get" class="v-stack gap-5 sm:gap-8" role="search"> 3124 <div class="search-input"> 3125 <input type="search" name="q" placeholder="Search for..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-label="Search"> 3126 <button type="reset" class="text-subdued">Clear</button> 3127 <button type="button" is="close-button"> 3128 <span class="sr-only">Close</span><svg role="presentation" stroke-width="2" focusable="false" width="24" height="24" class="icon icon-close" viewBox="0 0 24 24"> 3129 <path d="M17.658 6.343 6.344 17.657M17.658 17.657 6.344 6.343" stroke="currentColor"></path> 3130 </svg></button> 3131 </div> 3132 3133 <style> 3134 #shopify-section-sections--17107270664342__search-drawer { 3135 --predictive-search-column-count: 3; 3136 } 3137 </style> 3138 3139 <input type="hidden" name="type" value="product"> 3140 3141 <predictive-search class="predictive-search" section-id="sections--17107270664342__search-drawer"><div slot="results"></div> 3142 3143 <div slot="loading"> 3144 <div class="v-stack gap-5 sm:gap-6 "> 3145 <div class="h-stack gap-4 sm:gap-5"><span class="skeleton skeleton--tab"></span><span class="skeleton skeleton--tab"></span><span class="skeleton skeleton--tab"></span></div> 3146 3147 <div class="v-stack gap-4 sm:gap-6"><div class="h-stack align-center gap-5 sm:gap-6"> 3148 <span class="skeleton skeleton--thumbnail"></span> 3149 3150 <div class="v-stack gap-3 w-full">
3151 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 3152 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 3153 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 3154 </div> 3155 </div><div class="h-stack align-center gap-5 sm:gap-6"> 3156 <span class="skeleton skeleton--thumbnail"></span> 3157 3158 <div class="v-stack gap-3 w-full"> 3159 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 3160 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 3161 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 3162 </div> 3163 </div><div class="h-stack align-center gap-5 sm:gap-6"> 3164 <span class="skeleton skeleton--thumbnail"></span> 3165 3166 <div class="v-stack gap-3 w-full"> 3167 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 3168 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 3169 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 3170 </div> 3171 </div><div class="h-stack align-center gap-5 sm:gap-6"> 3172 <span class="skeleton skeleton--thumbnail"></span> 3173 3174 <div class="v-stack gap-3 w-full"> 3175 <span class="skeleton skeleton--text" style="--skeleton-text-width: 20%"></span> 3176 <span class="skeleton skeleton--text" style="--skeleton-text-width: 80%"></span> 3177 <span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span> 3178 </div> 3179 </div></div> 3180 </div></div> 3181 </predictive-search> 3182 </form> 3183</search-drawer> 3184 3185</div> 3186<!-- END sections: overlay-group --><main role="main" id="main" class="anchor"> 3187 <section id="shopify-section-template--17107273580694__image_with_text_overlay_bFJrCJ" class="shopify-section shopify-section--image-with-text-overlay"><style> 3188 #shopify-section-template--17107273580694__image_with_text_overlay_bFJrCJ {--section-outer-spacing-block: 0;--content-over-media-overlay: 0 0 0 / 0.0;margin-block-start: calc(-1 * var(--header-height) * var(--section-is-first));} 3189</style> 3190 3191<div class="section section-blends section-full text-custom"style="--text-color: 255 255 255;" allow-transparent-header><image-banner reveal-on-scroll="true" class="content-over-media content-over-media--auto full-bleed text-custom"style="--text-color: 255 255 255;"><picture><source 3192 media="(max-width: 699px)" 3193 srcset="//myfirmtech.com/cdn/shop/files/Men-Health-vertical-5.png?v=1779422685&width=400 400w, //myfirmtech.com/cdn/shop/files/Men-Health-vertical-5.png?v=1779422685&width=600 600w, //myfirmtech.com/cdn/shop/files/Men-Health-vertical-5.png?v=1779422685&width=800 800w, //myfirmtech.com/cdn/shop/files/Men-Health-vertical-5.png?v=1779422685&width=1000 1000w, //myfirmtech.com/cdn/shop/files/Men-Health-vertical-5.png?v=1779422685&width=1200 1200w" 3194 width="1376" 3195 height="2706" 3196 ><img src="//myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=2412" alt="" srcset="//myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=200 200w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=300 300w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=400 400w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=500 500w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=600 600w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=700 700w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=800 800w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=900 900w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=1000 1000w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=1200 1200w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=1400 1400w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=1600 1600w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=1800 1800w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=2000 2000w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=2200 2200w, //myfirmtech.com/cdn/shop/files/Men-Health-5.png?v=1779422677&width=2400 2400w" width="2412" height="1362" sizes="100vw"></picture>
3196<div class="place-self-start text-start sm:place-self-center-start sm:text-start"> 3197 <div class="prose"><p class="bold" >JUST LAUNCHED</p><p class="h0" reveal-on-scroll="true" ><split-lines>Labs & Coaching That Enhance Performance</split-lines></p><div ><p>FirmTech Labs analyzes your blood biomarkers to help you perform better. Exclusive to TechRing Users, Coaching helps you assess your health alongside your ring scores. </p></div> 3198<a class="button button--lg" 3199 style="--button-background: 37 47 106 / var(--button-background-opacity, 1);--button-outline-color: 37 47 106;--button-text-color: 255 255 255;" 3200 3201 3202 3203 3204 href="/pages/mens-health-labs-and-coaching" 3205 3206 3207 >Explore labs & health coaching</a> 3208</div> 3209 </div></image-banner> 3210</div> 3211 3212<style> #shopify-section-template--17107273580694__image_with_text_overlay_bFJrCJ p.bold {color: red; font-weight: bold; /* Corrected font-weight */} #shopify-section-template--17107273580694__image_with_text_overlay_bFJrCJ /* Default: Mobile (below 768px) */.place-self-start.text-start.sm\:place-self-center-start.sm\:text-start {width: 100%; margin-left: 0; /* Aligned left */} @media (min-width: 768px) and (max-width: 1023px) {#shopify-section-template--17107273580694__image_with_text_overlay_bFJrCJ .place-self-start.text-start.sm\:place-self-center-start.sm\:text-start {width: 70%; margin-left: 0; /* Aligned left */ }} @media (min-width: 1024px) {#shopify-section-template--17107273580694__image_with_text_overlay_bFJrCJ .place-self-start.text-start.sm\:place-self-center-start.sm\:text-start {width: 54%; margin-left: 0; /* Aligned left */ }} </style></section><section id="shopify-section-template--17107273580694__press" class="shopify-section shopify-section--press"><style> 3213 #shopify-section-template--17107273580694__press { 3214 --section-background-hash: 0; 3215 } 3216 3217 #shopify-section-template--17107273580694__press + * { 3218 --previous-section-background-hash: 0; 3219 }</style><style> 3220 #shopify-section-template--17107273580694__press { 3221 --press-items-border: / ; 3222 --press-max-width: 1000px; 3223 } 3224 </style><div class="section section-blends section-full"> 3225 <div class="section-stack"> 3226 <div class="press"> 3227 <press-carousel id="carousel-template--17107273580694__press" class="press__list full-bleed text-center sm:unbleed" role="region"><div id="block-template--17107273580694__press-16644243327ba53d2a-0" class="press__list-item snap-center is-selected" role="group" aria-label="Item 1 of 5" ><div class="rating"> 3228 <div class="rating__stars" role="img" aria-label="5 out of 5 stars"><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3229 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3230 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3231 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3232 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3233 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3234 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3235 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3236 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3237 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3238 </svg></div> 3239 </div><blockquote class="blockquote h3" reveal-on-scroll="true">I'm 32 and brought FirmTech into the bedroom with my partner mostly out of curiosity. Now it's a staple. Genuinely one of the better things I've added to my routine.</blockquote><div class="v-stack gap-2"><div class="press__logo rounded"><img src="//myfirmtech.com/cdn/shop/files/Verified_Buyer_9c910792-c391-4af9-ae89-048922a10e84.png?v=1721342796&width=114" alt="" srcset="//myfirmtech.com/cdn/shop/files/Verified_Buyer_9c910792-c391-4af9-ae89-048922a10e84.png?v=1721342796&width=100 100w, //myfirmtech.com/cdn/shop/files/Verified_Buyer_9c910792-c391-4af9-ae89-048922a10e84.png?v=1721342796&width=114 114w" width="114" height="16" style="--press-image-max-width: 100px" class="press__image" sizes="100px"></div><p class="press__author text-subdued">Bridger</p></div></div><div id="block-template--17107273580694__press-quote_yDhFGc" class="press__list-item snap-center " role="group" aria-label="Item 2 of 5" ><div class="rating"> 3240 <div class="rating__stars" role="img" aria-label="5 out of 5 stars"><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3241 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3242 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3243 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3244 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3245 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3246 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3247 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3248 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3249 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3250 </svg></div> 3251 </div><blockquote class="blockquote h3" reveal-on-scroll="true">I was surprised. 70 years old and 4 erections per night. I thought that only happened to teenager
3251s. After a few weeks with the ring, looking at the data and seeing where I could improve was genuinely eye-opening.</blockquote><div class="v-stack gap-2"><div class="press__logo rounded"><img src="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114" alt="" srcset="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=100 100w, //myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114 114w" width="114" height="16" loading="lazy" style="--press-image-max-width: 100px" class="press__image" sizes="100px"></div><p class="press__author text-subdued">Gary C. TechRing customer</p></div></div><div id="block-template--17107273580694__press-quote_MUDGqQ" class="press__list-item snap-center " role="group" aria-label="Item 3 of 5" ><div class="rating"> 3252 <div class="rating__stars" role="img" aria-label="5 out of 5 stars"><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3253 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3254 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3255 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3256 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3257 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3258 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3259 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3260 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3261 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3262 </svg></div> 3263 </div><blockquote class="blockquote h3" reveal-on-scroll="true">The Max PR ring from FirmTech is a great product! When it is worn, it boosts your self-confidence-you feel fuller and fill your pants more! It enables the wearer to maintain his erection longer and provides more pleasurable sex for both partners. I highly recommend it! </blockquote><div class="v-stack gap-2"><div class="press__logo rounded"><img src="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114" alt="" srcset="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=100 100w, //myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114 114w" width="114" height="16" loading="lazy" style="--press-image-max-width: 100px" class="press__image" sizes="100px"></div><p class="press__author text-subdued">Dartanian</p></div></div><div id="block-template--17107273580694__press-quote_KrDReQ" class="press__list-item snap-center " role="group" aria-label="Item 4 of 5" ><div class="rating"> 3264 <div class="rating__stars" role="img" aria-label="5 out of 5 stars"><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3265 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3266 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3267 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3268 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3269 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3270 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3271 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3272 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3273 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3274 </svg></div> 3275 </div><blockquote class="blockquote h3" reveal-on-scroll="true">The TechRing is helping me dial in my use of PDE5 inhibitors. I've tried multiple protocols. The TR helps make the process more objective. Plus it is rather fun. It feels wrong to go to bed without it now. </blockquote><div class="v-stack gap-2"><div class="press__logo rounded"><img src="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114" alt="" srcset="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=100 100w, //myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114 114w" width="114" height="16" loading="lazy" style="--press-image-max-width: 100px" class="press__image" sizes="100px"></div><p class="press__author text-subdued">Brad</p></div></div><div id="block-template--17107273580694__press-quote_EjaBkP" class="press__list-item snap-center " role="group" aria-label="Item 5 of 5" ><div class="rating"> 3276 <div class="rating__stars" role="img" aria-label="5 out of 5 stars"><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3277 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3278 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3279 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3280 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3281 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3282 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3283 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3284 </svg><svg role="presentation" fill="none" focusable="false" width="15" height="15" class="rating__star icon icon-rating-star" viewBox="0 0 15 15"> 3285 <path d="M7.5 0L9.58587 5.2731L15 5.72949L10.875 9.44483L12.1353 15L7.5 12.0231L2.86475 15L4.125 9.44483L0 5.72949L5.41414 5.2731L7.5 0Z" fill="currentColor"></path> 3286 </svg></div> 3287 </div><blockquote class="blockquote h3" reveal-on-scroll="true">When wearing this ring I feel like Iâm in my 30âs again. Itâs absolutely incredible, if you are on the fence about getting one. The only thing I would say is GET it, I think you will not be disappointed. </blockquote><div class="v-stack gap-2"><div class="press__logo rounded"><img src="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114" alt="" srcset="//myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=100 100w, //myfirmtech.com/cdn/shop/files/Verified_Buyer.png?v=1718889402&width=114 114w" width="114" height="16" loading="lazy" style="--press-image-max-width: 100px" class="press__image" sizes="100px"></div><p class="press__author text-subdued">Nick</p></div></div></press-carousel><div class="press__controls"> 3288 <button class="circle-button ring group" is="prev-button" aria-controls="carousel-template--17107273580694__press">
3289 <span class="sr-only">Previous</span> 3290 <span class="animated-arrow animated-arrow--reverse"></span> 3291 </button> 3292 3293 <page-dots aria-controls="carousel-template--17107273580694__press" class="page-dots"><button type="button" class="tap-area" aria-current="true"> 3294 <span class="sr-only">Go to item 1</span> 3295 </button><button type="button" class="tap-area" aria-current="false"> 3296 <span class="sr-only">Go to item 2</span> 3297 </button><button type="button" class="tap-area" aria-current="false"> 3298 <span class="sr-only">Go to item 3</span> 3299 </button><button type="button" class="tap-area" aria-current="false"> 3300 <span class="sr-only">Go to item 4</span> 3301 </button><button type="button" class="tap-area" aria-current="false"> 3302 <span class="sr-only">Go to item 5</span> 3303 </button></page-dots> 3304 3305 <button class="circle-button ring group" is="next-button" aria-controls="carousel-template--17107273580694__press"> 3306 <span class="sr-only">Next</span> 3307 <span class="animated-arrow"></span> 3308 </button> 3309 </div></div> 3310 </div> 3311 </div></section><section id="shopify-section-template--17107273580694__doctorvideos_HCcLdz" class="shopify-section shopify-section--doctor-videos"><style> 3312 .ft-doctor-videos { 3313 background: #191919; 3314 padding: 60px 24px; 3315 box-sizing: border-box; 3316 width: 100%; 3317 } 3318 3319 .ft-doctor-videos__inner { 3320 max-width: 1300px; 3321 margin: 0 auto; 3322 } 3323 3324 /* Header */ 3325 .ft-doctor-videos__header { 3326 display: flex; 3327 align-items: center; 3328 justify-content: space-between; 3329 margin-bottom: 40px; 3330 flex-wrap: wrap; 3331 gap: 16px; 3332 } 3333 3334 .ft-doctor-videos__subheading { 3335 font-family: Montserrat, sans-serif; 3336 font-size: 12px; 3337 font-weight: 700; 3338 letter-spacing: 0.14em; 3339 text-transform: uppercase; 3340 color: #EE3831; 3341 margin: 0 0 8px; 3342 } 3343 3344 .ft-doctor-videos__heading { 3345 font-family: Lora, Georgia, serif; 3346 font-size: clamp(26px, 3vw, 38px); 3347 font-weight: 700; 3348 color: #ECEAE4; 3349 margin: 0; 3350 line-height: 1.15; 3351 } 3352 3353 .ft-doctor-videos__btn { 3354 display: inline-block; 3355 padding: 13px 26px; 3356 background: #EE3831; 3357 color: #fff !important; 3358 font-family: Montserrat, sans-serif; 3359 font-size: 14px; 3360 font-weight: 700; 3361 letter-spacing: 0.04em; 3362 text-decoration: none; 3363 border-radius: 50px; 3364 white-space: nowrap; 3365 transition: background 0.2s; 3366 flex-shrink: 0; 3367 } 3368 3369 .ft-doctor-videos__btn:hover { 3370 background: #cc0000; 3371 } 3372 3373 /* Grid */ 3374 .ft-doctor-videos__grid { 3375 display: grid; 3376 grid-template-columns: repeat(3, 1fr); 3377 gap: 20px; 3378 width: 100%; 3379 } 3380 3381 /* Card */ 3382 .ft-dv-card { 3383 background: #111111; 3384 border-radius: 12px; 3385 overflow: hidden; 3386 cursor: pointer; 3387 display: flex; 3388 flex-direction: column; 3389 transition: transform 0.2s ease, box-shadow 0.2s ease; 3390 } 3391 3392 .ft-dv-card:hover { 3393 transform: translateY(-4px); 3394 box-shadow: 0 16px 40px rgba(0,0,0,0.6); 3395 } 3396 3397 /* Thumbnail */ 3398 .ft-dv-card__thumb { 3399 position: relative; 3400 width: 100%; 3401 padding-top: 56.25%; 3402 overflow: hidden; 3403 background: #222; 3404 flex-shrink: 0; 3405 } 3406 3407 .ft-dv-card__thumb img { 3408 position: absolute; 3409 top: 0; left: 0; 3410 width: 100%; 3411 height: 100%; 3412 object-fit: cover; 3413 transition: transform 0.3s ease; 3414 } 3415 3416 .ft-dv-card:hover .ft-dv-card__thumb img { 3417 transform: scale(1.04); 3418 } 3419 3420 .ft-dv-card__play { 3421 position: absolute; 3422 top: 0; left: 0; right: 0; bottom: 0; 3423 display: flex; 3424 align-items: center; 3425 justify-content: center; 3426 background: rgba(0,0,0,0.12); 3427 transition: background 0.2s; 3428 } 3429 3430 .ft-dv-card:hover .ft-dv-card__play { 3431 background: rgba(0,0,0,0.05); 3432 } 3433 3434 .ft-dv-card__play-btn { 3435 width: 54px; 3436 height: 54px; 3437 background: rgba(238,56,49,0.55); 3438 border-radius: 50%; 3439 display: flex; 3440 align-items: center; 3441 justify-content: center; 3442 box-shadow: 0 2px 10px rgba(0,0,0,0.25); 3443 transition: transform 0.2s, background 0.2s; 3444 } 3445 3446 .ft-dv-card:hover .ft-dv-card__play-btn { 3447 transform: scale(1.1); 3448 background: rgba(238,56,49,0.95); 3449 } 3450 3451 .ft-dv-card__play-btn svg { 3452 width: 18px; 3453 height: 18px; 3454 fill: rgba(255,255,255,0.85); 3455 margin-left: 3px; 3456 } 3457 3458 /* Info */ 3459 .ft-dv-card__info { 3460 padding: 16px 18px 20px; 3461 flex: 1; 3462 } 3463 3464 .ft-dv-card__doctor { 3465 font-family: Montserrat, sans-serif; 3466 font-size: 11px; 3467 font-weight: 700; 3468 letter-spacing: 0.1em; 3469 text-transform: uppercase; 3470 color: #EE3831; 3471 margin: 0 0 6px; 3472 } 3473 3474 .ft-dv-card__title { 3475 font-family: Montserrat, sans-serif; 3476 font-size: 14px; 3477 font-weight: 600; 3478 color: #ECEAE4; 3479 margin: 0; 3480 line-height: 1.45; 3481 } 3482 3483 /* Modal */ 3484 .ft-dv-modal { 3485 display: none; 3486 position: fixed; 3487 top: 0; left: 0; right: 0; bottom: 0; 3488 background: rgba(0,0,0,0.9); 3489 z-index: 99999;
3490 align-items: center; 3491 justify-content: center; 3492 padding: 20px; 3493 box-sizing: border-box; 3494 } 3495 3496 .ft-dv-modal.is-open { 3497 display: flex; 3498 } 3499 3500 .ft-dv-modal__box { 3501 position: relative; 3502 width: 100%; 3503 max-width: 900px; 3504 } 3505 3506 .ft-dv-modal__close { 3507 position: absolute; 3508 top: -40px; 3509 right: 0; 3510 background: none; 3511 border: none; 3512 color: #fff; 3513 font-size: 34px; 3514 line-height: 1; 3515 cursor: pointer; 3516 padding: 0; 3517 opacity: 0.85; 3518 } 3519 3520 .ft-dv-modal__close:hover { opacity: 1; } 3521 3522 .ft-dv-modal__ratio { 3523 position: relative; 3524 padding-top: 56.25%; 3525 background: #000; 3526 border-radius: 10px; 3527 overflow: hidden; 3528 } 3529 3530 .ft-dv-modal__ratio iframe { 3531 position: absolute; 3532 top: 0; left: 0; 3533 width: 100%; 3534 height: 100%; 3535 border: none; 3536 } 3537 3538 /* Tablet */ 3539 @media screen and (max-width: 900px) { 3540 .ft-doctor-videos__grid { 3541 grid-template-columns: repeat(2, 1fr); 3542 } 3543 } 3544 3545 /* Mobile */ 3546 @media screen and (max-width: 599px) { 3547 .ft-doctor-videos { 3548 padding: 40px 16px; 3549 } 3550 .ft-doctor-videos__grid { 3551 grid-template-columns: repeat(3, 1fr); 3552 gap: 10px; 3553 } 3554 .ft-doctor-videos__header { 3555 flex-direction: column; 3556 align-items: flex-start; 3557 } 3558 .ft-dv-card__info { 3559 padding: 10px 10px 14px; 3560 } 3561 .ft-dv-card__doctor { 3562 font-size: 9px; 3563 letter-spacing: 0.06em; 3564 } 3565 .ft-dv-card__title { 3566 font-size: 11px; 3567 line-height: 1.35; 3568 } 3569 .ft-dv-card__play-btn { 3570 width: 36px; 3571 height: 36px; 3572 } 3573 .ft-dv-card__play-btn svg { 3574 width: 13px; 3575 height: 13px; 3576 } 3577 } 3578</style> 3579 3580<div class="ft-doctor-videos"> 3581 <div class="ft-doctor-videos__inner"> 3582 3583 <div class="ft-doctor-videos__header"> 3584 <div> 3585 <p class="ft-doctor-videos__subheading">Recommended by Top Urologists</p> 3586 <h2 class="ft-doctor-videos__heading">What Physicians Are Saying</h2> 3587 </div></div> 3588 3589 <div class="ft-doctor-videos__grid"> 3590 3591 <!-- Card 1: Rena Malik --> 3592 <div class="ft-dv-card" data-video-id="disWMphgvMc" role="button" tabindex="0" aria-label="Watch Dr. Rena Malik's review"> 3593 <div class="ft-dv-card__thumb"> 3594 <img src="https://cdn.shopify.com/s/files/1/0577/3177/6662/files/Screenshot_2026-06-12_at_14.51.02.png?v=1781301798" alt="Dr. Rena Malik reviews the FirmTech TechRing" loading="lazy"> 3595 <div class="ft-dv-card__play"> 3596 <div class="ft-dv-card__play-btn"> 3597 <svg viewBox="0 0 24 24"><polygon points="5,3 19,12 5,21"/></svg> 3598 </div> 3599 </div> 3600 </div> 3601 <div class="ft-dv-card__info"> 3602 <p class="ft-dv-card__doctor">Dr. Rena Malik, MD</p> 3603 <p class="ft-dv-card__title">Urologist & sexual health expert reviews the TechRing</p> 3604 </div> 3605 </div> 3606 3607 <!-- Card 2: Mohit Khera --> 3608 <div class="ft-dv-card" data-video-id="Isq81OxDwrA" role="button" tabindex="0" aria-label="Watch Dr. Mohit Khera's review"> 3609 <div class="ft-dv-card__thumb"> 3610 <img src="https://cdn.shopify.com/s/files/1/0577/3177/6662/files/Screenshot_2026-06-12_at_14.53.54.png?v=1781301800" alt="Dr. Mohit Khera on cardiovascular risk and erections" loading="lazy"> 3611 <div class="ft-dv-card__play"> 3612 <div class="ft-dv-card__play-btn"> 3613 <svg viewBox="0 0 24 24"><polygon points="5,3 19,12 5,21"/></svg> 3614 </div> 3615 </div> 3616 </div> 3617 <div class="ft-dv-card__info"> 3618 <p class="ft-dv-card__doctor">Dr. Mohit Khera, MD</p> 3619 <p class="ft-dv-card__title">Leading urologist on erectile data and cardiovascular risk</p> 3620 </div> 3621 </div> 3622 3623 <!-- Card 3: Amy Pearlman --> 3624 <div class="ft-dv-card" data-video-id="ymAVCyd1p7c" role="button" tabindex="0" aria-label="Watch Dr. Amy Pearlman's review"> 3625 <div class="ft-dv-card__thumb"> 3626 <img src="https://cdn.shopify.com/s/files/1/0577/3177/6662/files/Screenshot_2026-06-12_at_14.56.23.png?v=1781301804" alt="Dr. Amy Pearlman on men's health and the TechRing" loading="lazy"> 3627 <div class="ft-dv-card__play"> 3628 <div class="ft-dv-card__play-btn"> 3629 <svg viewBox="0 0 24 24"><polygon points="5,3 19,12 5,21"/></svg> 3630 </div> 3631 </div> 3632 </div> 3633 <div class="ft-dv-card__info"> 3634 <p class="ft-dv-card__doctor">Dr. Amy Pearlman, MD</p> 3635 <p class="ft-dv-card__title">Men's health specialist on the science behind the TechRing</p> 3636 </div> 3637 </div> 3638 3639 </div> 3640 </div> 3641</div> 3642 3643<!-- Modal --> 3644<div class="ft-dv-modal" id="ft-dv-modal" role="dialog" aria-modal="true"> 3645 <div class="ft-dv-modal__box"> 3646 <button class="ft-dv-modal__close" id="ft-dv-close" aria-label="Close">×</button> 3647 <div class="ft-dv-modal__ratio"> 3648 <iframe id="ft-dv-iframe" src="" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 3649 </div> 3650 </div> 3651</div> 3652
3653<script> 3654(function() { 3655 var modal = document.getElementById('ft-dv-modal'); 3656 var iframe = document.getElementById('ft-dv-iframe'); 3657 var close = document.getElementById('ft-dv-close'); 3658 var cards = document.querySelectorAll('.ft-dv-card'); 3659 3660 cards.forEach(function(card) { 3661 function open() { 3662 var id = card.getAttribute('data-video-id'); 3663 iframe.src = 'https://www.youtube.com/embed/' + id + '?autoplay=1&rel=0&modestbranding=1'; 3664 modal.classList.add('is-open'); 3665 document.body.style.overflow = 'hidden'; 3666 } 3667 card.addEventListener('click', open); 3668 card.addEventListener('keydown', function(e) { 3669 if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); open(); } 3670 }); 3671 }); 3672 3673 function closeModal() { 3674 modal.classList.remove('is-open'); 3675 iframe.src = ''; 3676 document.body.style.overflow = ''; 3677 } 3678 3679 close.addEventListener('click', closeModal); 3680 modal.addEventListener('click', function(e) { if (e.target === modal) closeModal(); }); 3681 document.addEventListener('keydown', function(e) { if (e.key === 'Escape') closeModal(); }); 3682})(); 3683</script>
3683 3684 3685</section><section id="shopify-section-template--17107273580694__image_with_text_overlay_B9MWiq" class="shopify-section shopify-section--image-with-text-overlay"><style> 3686 #shopify-section-template--17107273580694__image_with_text_overlay_B9MWiq {--section-outer-spacing-block: 0;--content-over-media-overlay: 0 0 0 / 0.0;} 3687</style> 3688 3689<div class="section section-blends section-full text-custom"style="--text-color: 255 255 255;" ><image-banner reveal-on-scroll="true" class="content-over-media content-over-media--auto full-bleed text-custom"style="--text-color: 255 255 255;"><picture><source 3690 media="(max-width: 699px)" 3691 srcset="//myfirmtech.com/cdn/shop/files/quali_bar_-_mobile.png?v=1722011955&width=400 400w, //myfirmtech.com/cdn/shop/files/quali_bar_-_mobile.png?v=1722011955&width=600 600w, //myfirmtech.com/cdn/shop/files/quali_bar_-_mobile.png?v=1722011955&width=800 800w, //myfirmtech.com/cdn/shop/files/quali_bar_-_mobile.png?v=1722011955&width=1000 1000w, //myfirmtech.com/cdn/shop/files/quali_bar_-_mobile.png?v=1722011955&width=1200 1200w" 3692 width="1308" 3693 height="1328" 3694 ><img src="//myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=5760" alt="" srcset="//myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=200 200w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=300 300w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=400 400w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=500 500w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=600 600w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=700 700w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=800 800w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=900 900w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=1000 1000w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=1200 1200w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=1400 1400w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=1600 1600w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=1800 1800w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=2000 2000w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=2200 2200w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=2400 2400w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=2600 2600w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=2800 2800w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=3000 3000w, //myfirmtech.com/cdn/shop/files/quali_bar_8217d9d6-6aae-43ea-9426-15db1a493c30.png?v=1722012005&width=3200 3200w" width="10256" height="448" loading="lazy" sizes="100vw"></picture></image-banner> 3695</div> 3696 3697</section><section id="shopify-section-template--17107273580694__rich_text_rjTQqV" class="shopify-section shopify-section--rich-text"><style> 3698 #shopify-section-template--17107273580694__rich_text_rjTQqV { 3699 --section-background-hash: 000016330975064008001217068208105; 3700 } 3701 3702 #shopify-section-template--17107273580694__rich_text_rjTQqV + * { 3703 --previous-section-background-hash: 000016330975064008001217068208105; 3704 }</style><style> 3705 #shopify-section-template--17107273580694__rich_text_rjTQqV { 3706 --rich-text-max-width: 780px 3707 } 3708 </style> 3709 3710 <div class="section section-full bg-custom text-custom"style="--background: 64 8 9; --text-color: 255 255 255;"><div class="rich-text justify-center "> 3711 <div class="rich-text__wrapper"> 3712 <div class="prose justify-items-center text-center"><p class="bold" >
3712What It Does - Where Health Meets Pleasure</p><div class="main-heading-content"><p class="h1 hyphenate" >Your Penis Is Trying To Talk To You â¨& Now You Can Listen</p><div ><p>Up until now, measuring the nighttime activity of your penis outside of lab conditions was impossible. But thatâs all changed. Gain vital health insights via data between TechRing and the app, empowering you and your healthcare provider.</p></div></div></div> 3713 </div> 3714 </div> 3715 </div><style> #shopify-section-template--17107273580694__rich_text_rjTQqV p.bold {color: red; font-weight: 80;} </style></section><section id="shopify-section-template--17107273580694__slideshow_aaYjGd" class="shopify-section shopify-section--slideshow"><style>#shopify-section-template--17107273580694__slideshow_aaYjGd { 3716 --slideshow-background: #f2f2f2; 3717 --slideshow-controls-background: ; 3718 --slideshow-controls-color: ;margin-block-start: calc(-1 * var(--header-height) * var(--section-is-first));}</style><x-slideshow class="slideshow " allow-transparent-header><slideshow-carousel id="slideshow-template--17107273580694__slideshow_aaYjGd" class="slideshow__carousel" selector=".slideshow__slide" transition="fade_with_text" role="region"><custom-cursor class="slideshow__cursor circle-button circle-button--lg circle-button--fill" aria-hidden="true"><svg role="presentation" focusable="false" width="7" height="10" class="icon icon-chevron-right" viewBox="0 0 7 10"> 3719 <path d="m1 9 4-4-4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 3720 </svg><svg class="slideshow__cursor-ring" viewBox="-28 -28 56 56" width="56" height="56" fill="none" stroke="currentColor" stroke-width="2"> 3721 <circle r="27" stroke-dasharray="158.33626974092556" stroke-dashoffset="158.33626974092556px"></circle> 3722 </svg> 3723 </custom-cursor></slideshow-carousel> 3724</x-slideshow> 3725 3726 3727</section><section id="shopify-section-template--17107273580694__custom_liquid_6NTYcP" class="shopify-section shopify-section--custom-liquid"><style> 3728 #shopify-section-template--17107273580694__custom_liquid_6NTYcP { 3729 --section-background-hash: 000016330975064008001217068208105; 3730 } 3731 3732 #shopify-section-template--17107273580694__custom_liquid_6NTYcP + * { 3733 --previous-section-background-hash: 000016330975064008001217068208105; 3734 }</style><style> 3735 #shopify-section-template--17107273580694__custom_liquid_6NTYcP { 3736 --section-spacing-block: 0px; 3737 --section-spacing-inline: 0px; 3738 } 3739 </style> 3740 3741 <div class="section section-full bg-custom"style="--background: 64 8 9;"> 3742 <!-- Section: TechRing Benefits --> 3743<section class="techring-benefits"> 3744 <div class="container"> 3745 <div class="techring-image"> 3746 <img src="https://cdn.shopify.com/s/files/1/0577/3177/6662/files/Home-F1.png?v=1721346495" alt="TechRing"> 3747 </div> 3748 <div class="techring-content"> 3749 <div class="techring-benefit"> 3750 <div class="icon" style="display: none;"> 3751 <svg><!-- Your SVG icon code for Detecting Early Warning Signs --></svg> 3752 </div> 3753 <div class="text"> 3754 <img src="//myfirmtech.com/cdn/shop/files/Home-1_28cbb529-8b08-4c5d-8542-1be76c6b2de8.png?v=1721341421&width=50" alt="" srcset="//myfirmtech.com/cdn/shop/files/Home-1_28cbb529-8b08-4c5d-8542-1be76c6b2de8.png?v=1721341421&width=48 48w, //myfirmtech.com/cdn/shop/files/Home-1_28cbb529-8b08-4c5d-8542-1be76c6b2de8.png?v=1721341421&width=50 50w" width="40" height="40" loading="lazy" sizes="48px" class="media-with-text__icon"> 3755 <h3>Detecting Early Warning Signs</h3> 3756 <p>The TechRing measures the firmness, duration, and number of nocturnal erections, indicators and predictors of cardiovascular disease and ED; potentially life changing data points.</p> 3757 </div> 3758 </div> 3759 <div class="techring-benefit"> 3760 <div class="icon" style="display: none;"> 3761 <svg><!-- Your SVG icon code for Objective, Actionable, Personal Data --></svg> 3762 </div> 3763 <div class="text"> 3764 <img src="//myfirmtech.com/cdn/shop/files/Home-2_b4c246e4-8356-4b3d-9fb8-c23dd81fa594.png?v=1721341509&width=50" alt="" width="40" height="40" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 2)" class="media-with-text__icon"> 3765 <h3>Objective, Actionable, Personal Data</h3> 3766 <p>Your recordings and score empower you and your health care provider with aids to diagnosis and management of cardiac and sexual health issues.</p> 3767 </div> 3768 </div> 3769 <div class="techring-benefit"> 3770 <div class="icon" style="display: none"> 3771 <svg><!-- Your SVG icon code for Healthy Lives & Sex Drives --></svg> 3772 </div> 3773 <div class="text"> 3774 <img src="//myfirmtech.com/cdn/shop/files/Home-3_ee161b94-43c6-47ad-8dd0-9d5c009b15bd.png?v=1721341507&width=50" alt="" width="40" height="40" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 2)" class="media-with-text__icon"> 3775 <h3>Healthy Lives & Sex Drives</h3> 3776 <p>Using the TechRing once per week will give you a clearer understanding of your vascular and sexual health, helping you to achieve better sex long into the future.</p> 3777 </div> 3778 </div> 3779 <div class="cta-button"> 3780 <a class="button button--xl" href="/collections/firmtech-rings">Choose Your Ring</a> 3781 </div> 3782 </div> 3783 </div> 3784</section> 3785 3786<style> 3787/* Full bleed: strip the theme container off this section */ 3788#shopify-section-template--17107273580694__custom_liquid_6NTYcP { 3789 background-color: #400809; 3790 padding-top: 0; 3791 padding-bottom: 0; 3792 margin-top: 0; 3793 margin-bottom: 0; 3794 overflow-x: hidden; 3795} 3796#shopify-section-template--17107273580694__custom_liquid_6NTYcP > .page-width, 3797#shopify-section-template--17107273580694__custom_liquid_6NTYcP > .container, 3798#shopify-section-template--17107273580694__custom_liquid_6NTYcP > .section, 3799#shopify-section-template--17107273580694__custom_liquid_6NTYcP > .shopify-section { 3800 max-width: 100%; 3801 width: 100%; 3802 padding-left: 0; 3803 padding-right: 0; 3804 margin-left: 0; 3805 margin-right: 0; 3806} 3807 3808.techring-benefits { 3809 background: #400809; 3810 color: #fff; 3811 padding: 50px 0; 3812 width: 100vw; 3813 position: relative; 3814 left: 50%; 3815 right: 50%; 3816 margin-left: -50vw; 3817 margin-right: -50vw; 3818} 3819.techring-benefits .container { 3820 display: flex; 3821 align-items: top; 3822 justify-content: space-between; 3823 margin-right: 0; 3824 margin-left: 0; 3825 max-width: 100%; 3826 padding-left: 0; 3827 padding-right: 0; 3828} 3829.techring-benefits .techring-image img { 3830 max-width: 100%; 3831 display: block; 3832} 3833.techring-benefits .techring-content { 3834 flex: 1; 3835 padding: 20px; 3836} 3837.techring-benefit { 3838 display: flex; 3839 align-items: start; 3840 margin-bottom: 30px; 3841} 3842.techring-benefit .icon { 3843 flex-shrink: 0; 3844 margin-right: 15px; 3845} 3846.techring-benefit .text h3 { 3847 margin: 0 0 10px; 3848 font-size: var(--text-h4); 3849 line-height: 1.3; 3850} 3851.techring-benefit .text p { 3852 margin: 0; 3853} 3854.cta-button .btn { 3855 background-color: #ff0000; 3856 color: #fff; 3857 padding: 10px 20px; 3858 border-radius: 30px; 3859 text-decoration: none; 3860} 3861.cta-button .btn:hover { 3862 background-color: #cc0000; 3863} 3864.techring-image { 3865 width: 50%; 3866} 3867@media (max-width: 899px) { 3868 .techring-image { 3869 width: 100%; 3870 } 3871 .techring-benefits .container { 3872 flex-wrap: wrap; 3873 } 3874} 3875@media (min-width: 1300px) { 3876 .techring-benefit .text p { 3877 max-width: 620px; 3878 } 3879} 3880</style> 3881 </div> 3882</section><section id="shopify-section-template--17107273580694__custom_html_WCAV9E" class="shopify-section shopify-section--custom-html"><style> 3883 #shopify-section-template--17107273580694__custom_html_WCAV9E { 3884 3885 3886 } 3887 </style><style> 3888 #shopify-section-template--17107273580694__custom_html_WCAV9E { 3889 --section-background-hash: 0; 3890 } 3891 3892 #shopify-section-template--17107273580694__custom_html_WCAV9E + * { 3893 --previous-section-background-hash: 0; 3894 }</style><div class="section section-blends section-full">
3895 <section id="firmtech-doctor-map-section" class="ft-map-section"> 3896 <div class="ft-map-inner"> 3897 <div class="ft-map-header"> 3898 <p class="ft-map-eyebrow">Global Network</p> 3899 <h2 class="ft-map-title">Used and Recommended by Doctors Around the World</h2> 3900 <p class="ft-map-subtitle">Find a partner provider</p> 3901 </div> 3902 <div class="ft-map-layout"> 3903 <div class="ft-map-sidebar"> 3904 <div class="ft-map-search-wrap"> 3905 <svg class="ft-search-icon" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> 3906 <input type="text" id="ft-doctor-search" class="ft-map-search" placeholder="Search by name or clinic..." autocomplete="off"> 3907 </div> 3908 <div class="ft-map-count" id="ft-map-count">Loading providers...</div> 3909 <ul class="ft-doctor-list" id="ft-doctor-list"></ul> 3910 <div class="ft-map-scrollhint">Scroll to see all providers</div> 3911 </div> 3912 <div class="ft-map-container"> 3913 <div id="ft-leaflet-map"></div> 3914 </div> 3915 </div> 3916 </div> 3917</section> 3918 3919<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" crossorigin="">
3920<script src="https://unpkg.com/[email protected]/dist/leaflet.js" crossorigin=""></script>
3920 3921 3922<style> 3923 .shopify-section:has(#firmtech-doctor-map-section), 3924 [class*="custom-liquid"]:has(#firmtech-doctor-map-section), 3925 div:has(> #firmtech-doctor-map-section) { 3926 margin: 0 !important; padding: 0 !important; width: 100% !important; 3927 } 3928 #firmtech-doctor-map-section { 3929 margin: 0 !important; 3930 width: 100vw !important; 3931 position: relative !important; 3932 left: 50% !important; 3933 margin-left: -50vw !important; 3934 overflow: hidden; 3935 } 3936 3937 .ft-map-section { background: #111111; padding: 48px 0 0; font-family: 'Poppins', sans-serif; } 3938 3939 .ft-map-inner { max-width: 1500px; margin: 0 auto; padding: 0 32px 48px; } 3940 3941 .ft-map-header { text-align: center; margin: 0 auto 28px; max-width: 900px; } 3942 .ft-map-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: #EE3831; margin: 0 0 10px; } 3943 .ft-map-title { font-family: 'Lora', serif; font-size: clamp(24px, 3vw, 36px); font-weight: 600; color: #FFFFFF; margin: 0 0 8px; line-height: 1.2; } 3944 .ft-map-subtitle { font-size: 15px; color: #A0A0B0; margin: 0 auto; max-width: 500px; line-height: 1.6; } 3945 3946 .ft-map-layout { 3947 display: grid; 3948 grid-template-columns: 420px 1fr; 3949 border: 1px solid rgba(255,255,255,0.1); 3950 border-radius: 14px; 3951 overflow: hidden; 3952 width: 100%; 3953 height: calc(100vh - 220px); 3954 max-height: none; 3955 min-height: 560px; 3956 } 3957 3958 .ft-map-sidebar { 3959 background: #10222E; 3960 display: flex; 3961 flex-direction: column; 3962 border-right: 1px solid rgba(255,255,255,0.08); 3963 overflow: hidden; 3964 } 3965 3966 .ft-map-search-wrap { position: relative; padding: 18px 18px 12px; border-bottom: 1px solid rgba(255,255,255,0.06); } 3967 .ft-search-icon { position: absolute; left: 32px; top: 50%; transform: translateY(-50%) translateY(3px); width: 16px; height: 16px; color: rgba(255,255,255,0.35); pointer-events: none; } 3968 .ft-map-search { width: 100%; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); border-radius: 8px; padding: 11px 14px 11px 40px; font-family: 'Poppins', sans-serif; font-size: 14px; color: #fff; outline: none; box-sizing: border-box; } 3969 .ft-map-search::placeholder { color: rgba(255,255,255,0.3); } 3970 .ft-map-search:focus { border-color: rgba(120,180,220,0.5); } 3971 3972 .ft-map-count { padding: 10px 20px; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: rgba(255,255,255,0.4); border-bottom: 1px solid rgba(255,255,255,0.06); } 3973 3974 .ft-doctor-list { list-style: none; margin: 0; padding: 0; overflow-y: scroll; flex: 1; min-height: 0; scrollbar-width: thin; scrollbar-color: rgba(120,180,220,0.25) transparent; -webkit-overflow-scrolling: touch; } 3975 .ft-doctor-list::-webkit-scrollbar { width: 5px; } 3976 .ft-doctor-list::-webkit-scrollbar-thumb { background: rgba(120,180,220,0.25); border-radius: 4px; } 3977 3978 .ft-doctor-item { padding: 14px 20px; border-bottom: 1px solid rgba(255,255,255,0.04); cursor: pointer; transition: background 0.15s; } 3979 .ft-doctor-item:hover { background: rgba(120,180,220,0.10); } 3980 .ft-doctor-item.active { background: rgba(120,180,220,0.16); border-left: 3px solid #EE3831; } 3981 .ft-doctor-name { font-size: 15px; font-weight: 600; color: #fff; margin: 0 0 3px; line-height: 1.35; } 3982 .ft-doctor-company { font-size: 13px; color: rgba(255,255,255,0.5); margin: 0; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } 3983 3984 /* scroll hint: shown on all screen sizes */ 3985 .ft-map-scrollhint { 3986 display: block; 3987 flex-shrink: 0; 3988 padding: 9px 14px; 3989 border-top: 1px solid rgba(255,255,255,0.1); 3990 background: #0C1A24; 3991 text-align: center; 3992 font-size: 10px; 3993 font-weight: 600; 3994 letter-spacing: 0.1em; 3995 text-transform: uppercase; 3996 color: rgba(255,255,255,0.35); 3997 } 3998 3999 .ft-map-container { position: relative; } 4000 #ft-leaflet-map { width: 100%; height: 100%; min-height: 420px; } 4001 4002 /* ---- MAP COLOR ---- 4003 Target blue sampled from the reference image: #3A6F8B. 4004 This chain maps CARTO light land (#FAFAF8) to #3B6F8B and water (#D4DADD) to #2B5166. */ 4005 .leaflet-container { background: #3B6F8B !important; } 4006 .leaflet-tile-pane { 4007 filter: brightness(0.42) contrast(1.9) sepia(1) saturate(2.24) hue-rotate(160deg) brightness(1.1); 4008 } 4009 4010 .leaflet-control-zoom a { background: rgba(12,26,36,0.92) !important; color: #fff !important; border-color: rgba(255,255,255,0.15) !important; }
4011 .leaflet-control-zoom a:hover { background: rgba(30,70,110,0.95) !important; } 4012 .leaflet-control-attribution { background: transparent !important; color: rgba(255,255,255,0.28) !important; font-size: 7px !important; box-shadow: none !important; padding: 0 4px !important; } 4013 .leaflet-control-attribution a { color: rgba(255,255,255,0.28) !important; } 4014 .leaflet-control-attribution svg { display: none !important; } 4015 4016 .ft-popup .leaflet-popup-content-wrapper { 4017 background: rgba(10,26,38,0.97); 4018 color: #fff; 4019 border: 1px solid rgba(120,180,220,0.28); 4020 border-radius: 10px; 4021 box-shadow: 0 8px 32px rgba(0,0,0,0.6); 4022 padding: 0; 4023 } 4024 .ft-popup .leaflet-popup-tip { background: rgba(10,26,38,0.97); } 4025 .ft-popup .leaflet-popup-content { margin: 0; min-width: 220px; } 4026 .ft-popup-inner { padding: 16px 18px; } 4027 .ft-popup-name { font-size: 15px; font-weight: 700; color: #fff; margin: 0 0 4px; line-height: 1.3; } 4028 .ft-popup-company { font-size: 13px; color: rgba(130,195,240,0.9); margin: 0 0 7px; } 4029 .ft-popup-address { font-size: 12px; color: rgba(255,255,255,0.55); margin: 0 0 10px; line-height: 1.45; } 4030 .ft-popup-link { font-size: 12px; font-weight: 600; color: #EE3831; text-decoration: none; } 4031 .ft-popup-link:hover { text-decoration: underline; } 4032 4033 @media (max-width: 1100px) { 4034 .ft-map-inner { padding: 0 20px 40px; } 4035 .ft-map-layout { grid-template-columns: 320px 1fr; } 4036 } 4037 4038 @media (max-width: 768px) { 4039 .ft-map-section { padding: 32px 0 0; } 4040 .ft-map-inner { padding: 0 14px 32px; } 4041 .ft-map-layout { grid-template-columns: 1fr; grid-template-rows: 320px auto; height: auto; min-height: 0; border-radius: 12px; } 4042 .ft-map-sidebar { order: 2; border-right: none; border-top: 1px solid rgba(255,255,255,0.06); max-height: 320px; } 4043 .ft-map-container { order: 1; } 4044 #ft-leaflet-map { min-height: 320px; } 4045 } 4046</style> 4047
4048<script> 4049(function() { 4050 var DOCTORS = [ 4051 {name:'Paul Abramson MD',company:'My Doctor Medical Group',address:'450 Sutter St, Suite 840, San Francisco, CA 94108',website:'https://mydoctorsf.com/',lat:37.7897,lng:-122.4088}, 4052 {name:'Afraz Adam, MD',company:'CannaPlus+',address:'231 Ponsonby Rd, Ponsonby, Auckland 1011, New Zealand',website:'https://www.cannaplus.co.nz/',lat:-36.8573,lng:174.7376}, 4053 {name:'Kevin Aister, DO',company:'Peak Health Group',address:'8952 E Desert Cove Ave, Suite 203, Scottsdale, AZ 85260',website:'https://www.peakhealthlife.com',lat:33.6288,lng:-111.8879}, 4054 {name:'Mohamed Nabil Amin, MD',company:'Private Practice',address:'Cairo, Egypt',website:'https://clinido.com/en/drprofile/634518/22406',lat:30.0444,lng:31.2357}, 4055 {name:'Jonathan Andrews',company:'Teds Health',address:'One Avenue, 57 Southwark St, London SE1 1RU, UK',website:'https://www.tedshealth.com/',lat:51.5047,lng:-0.0968}, 4056 {name:'AXONVIS',company:'AXONVIS / MyFirmTech Asia',address:'5008 Ang Mo Kio Ave 5, #04-09, Singapore 569874',website:'https://www.myfirmtech.asia/',lat:1.372,lng:103.848}, 4057 {name:'Adam Ball, MD',company:'Gulfstream Urology Associates',address:'579 NW Lake Whitney Pl, Suite 105, Port St. Lucie, FL 34986',website:'https://gulfstreamurology.com/',lat:27.3265,lng:-80.4059}, 4058 {name:'Iman Bar, MD',company:'Newport Beach Mens Health Clinic',address:'2111 San Joaquin Hills Rd, Newport Beach, CA 92660, USA',website:'',lat:33.6189,lng:-117.8531}, 4059 {name:'Sylvie Barak',company:'Sex and Sensibility',address:'Mountain Vie
4059w, CA, USA',website:'https://www.mysexandsensibility.com',lat:37.3861,lng:-122.0839}, 4060 {name:'Wolf-D. Beecken, MD',company:'Vitalicum-Urologie',address:'Hochstrasse 49, 60313 Frankfurt am Main, Germany',website:'https://vitalicum-urologie.de/',lat:50.1136,lng:8.6803}, 4061 {name:'Miguel Bertonatti',company:'Medical Health Institute',address:'Miami, FL, USA',website:'https://members.medicalhealthinstitute.com/',lat:25.7617,lng:-80.1918}, 4062 {name:'Alexandria Callahan, MD',company:'City of Hope',address:'2520 Elisha Ave, Zion, IL 60099',website:'',lat:42.4632,lng:-87.8464}, 4063 {name:'George Carroll, MD',company:'Orlando Sexual Medicine',address:'235 Maitland Ave S, Suite 206, Maitland, FL 32751',website:'https://www.orlandosexualmedicine.com/',lat:28.6291,lng:-81.3634}, 4064 {name:'Fabio Castiglione, MD',company:'HCA Healthcare UK / Holistic Andrology',address:'Harley Street, London W1G, UK',website:'https://www.holisticandrology.com',lat:51.5196,lng:-0.1477}, 4065 {name:'BSHC Bangkok Sexual Health Center',company:'Bangkok Sexual Health Center',address:'Bangkok, Thailand',website:'https://www.bangkoksexualhealth.com/',lat:13.7563,lng:100.5018}, 4066 {name:'PSJ ED Clinic',company:'PSJ ED Clinics',address:'2A Park Ave S, Northampton NN3 3AA, UK',website:'https://www.psjedclinics.co.uk/',lat:52.2405,lng:-0.8717}, 4067 {name:'Greg Dawson II',company:'CAYA',address:'Forney, TX, USA',website:'',lat:32.748,lng:-96.4697}, 4068 {name:'Nicholas Deebel MD',company:'Wake Forest Baptist Medical Center',address:'Winston-Salem, NC, USA',website:'https://www.wakehealth.edu/',lat:36.0999,lng:-80.2506}, 4069 {name:'Philip Delaney',company:'Delaney Physiotherapy',address:'312A Charter Avenue, Coventry CV4 8DA, UK',website:'https://www.delaneyphysio.com',lat:52.3882,lng:-1.5567}, 4070 {name:'Tad DeWald, MD',company:'Florida Regen',address:'162 NE 25th St, Suite 103, Miami, FL 33137',website:'https://www.floridaregen.com',lat:25.8026,lng:-80.1934}, 4071 {name:'Jodi Diamond',company:'Pelvic PT of the Palm Beaches',address:'Palm Beach Gardens, FL, USA',website:'https://www.pelvicptpalmbeach.com/',lat:26.8303,lng:-80.1144}, 4072 {name:'Randall Dooley, MD',company:'St Lukes Hospital',address:'Chesterfield, MO, USA',website:'',lat:38.6582,lng:-90.5774}, 4073 {name:'Desmond Ebanks, MD',company:'Alternity Healthcare',address:'639 Park Rd, Suite 200, West Hartford, CT 06107',website:'https://alternityhealthcare.com/',lat:41.7536,lng:-72.7396}, 4074 {name:'ED Clinics Bury St Edmunds',company:'ED Clinics',address:'Britannia House, Brunel Business Court, Bury St Edmunds IP32 7AJ, UK',website:'https://edclinics.co.uk/clinics/the-abbeyfields-clinic/',lat:52.244,lng:0.7299}, 4075 {name:'Cris Dervin Fedalizo',company:'Artizo LLC',address:'2800 Shirlington Rd, Unit 500, Arlington, VA 22206',website:'https://www.artizollc.com/',lat:38.8442,lng:-77.0951}, 4076 {name:'Stamatis Ferarolis',company:'Defy Medical',address:'4809 N Armenia Ave, Suite 220, Tampa, FL 33603',website:'https://www.defymedical.com/',lat:27.9774,lng:-82.4895}, 4077 {name:'Susan Frantz',company:'Frantz Therapy',address:'Avon, CT, USA',website:'https://www.sfrantztherapy.com/',lat:41.7915,lng:-72.8631}, 4078 {name:'Amy Garza',company:'AgeWell',address:'Amarillo, TX, USA',website:'https://www.agewellclinics.com',lat:35.2073,lng:-101.8382}, 4079 {name:'Michael Gilliam',company:'Vitality Mens Health',address:'Sarasota, FL, USA',website:'https://www.vitalityhrt.com/',lat:27.2714,lng:-82.4896}, 4080 {name:'Katie Hauck',company:'Black Mountain Physio',address:'Kelowna, BC, Canada',website:'https://blackmountainphysio.com/',lat:49.888,lng:-119.496}, 4081 {name:'Alalpha Health',company:'Alalpha Health',address:'Dubai, UAE',website:'',lat:25.2048,lng:55.2708}, 4082 {name:'Josh Himes PhD',company:'Pro Health Place',address:'Summerville, SC, USA',website:'https://prohealthplace.com/',lat:33.0185,lng:-80.1751}, 4083 {name:'Scott Jagodzinski',company:'Argent Alpha',address:'Phoenix, AZ, USA',website:'https://www.argentalpha.com/',lat:33.4827,lng:-111.9896}, 4084 {name:'Salvatore Carfagno Jr, DO',company:'OB-GYN Practice',address:'707 White Horse Pike, Absecon, NJ 08201, USA',website:'',lat:39.4276,lng:-74.4946}, 4085 {name:'Colleen Kampf',company:'GameDay Mens Health',address:'Pottstown, PA, USA',website:'https://gamedaymenshealth.com/',lat:40.2454,lng:-75.6496}, 4086 {name:'Cemal Kavasogullari, MD',company:'Esteem Life Medical Group',address:'Glasgow, UK',website:'https://www.esteemlife.co.uk',lat:55.8642,lng:-4.2518}, 4087 {name:'Jenn Kennedy, MD',company:'Riviera Therapy',address:'1515 State Street, Santa Barbara, CA, USA',website:'https://rivieratherapy.com/',lat:34.4195,lng:-119.6989}, 4088 {name:'Ram Chandra Khadka',company:'Sunya Health Solution',address:'Lalitpur, Nepal',website:'https://www.sunya.health/',lat:27.6682,lng:85.3148}, 4089 {name:'Jacob Khurgin, MD',company:'Maimonides Medical Center',address:'Brooklyn, NY, USA',website:'https://maimo.org/',lat:40.5898,lng:-73.9552}, 4090 {name:'Drew Klein',company:'FocusWave Clinic Inc.',address:'2249 Carling Ave, Ottawa, Ontario, Canada',website:'https://focuswaveclinic.com/',lat:45.383,lng:-75.7624}, 4091 {name:'Diane H Kottakis',company:'Middle Park Health',address:'Keene, NH, USA',website:'',lat:42.9334,lng:-72.2779}, 4092 {name:'Noemie Kyryluk',company:'NMK Psychotherapy',address:'Thunder Bay, ON, Canada',website:'https://www.nmkpsychotherapy.com/',lat:48.3809,lng:-89.2477}, 4093 {name:'Paula Leech LMFT',company:'Paula Leech Therapy',address:'Portland, OR, USA',website:'https://www.paulaleech.com/',lat:45.5194,lng:-122.6936}, 4094 {name:'ED Clinics Leeds',company:'ED Clinics',address:'7 Fairburn Dr, Garforth, Leeds LS25 2AR, UK',website:'http://edclinics.co.uk/clinics/indergaard-physiotherapy/',lat:53.7945,lng:-1.3781}, 4095 {name:'James Liu, MD',company:'Urology Associates of Savannah',address:'Savannah, GA, USA',website:'https://www.urologysavannah.com/',lat:32.0515,lng:-81.0886}, 4096 {name:'ED Clinics London',company:'ED Clinics',address:'16 Glentworth St, London NW1 5PG, UK',website:'https://edclinics.co.uk/clinics/lifeplus-london/',lat:51.5236,lng:-0.1586}, 4097 {name:'Clarice Long',company:'Levelland Physical Therapy',address:'Lubbock, TX, USA',website:'',lat:33.5779,lng:-101.8552}, 4098 {name:'John Ludlow, MD',company:'Western Michigan Urological Associates',address:'Empire, MI, USA',website:'https://wmuro.com/',lat:44.8128,lng:-85.9994}, 4099 {name:'Ansar Mahmood',company:'KYZN Clinics',address:'Stafford, UK',website:'',lat:52.8073,lng:-2.1233}, 4100 {name:'ED Clinics Manchester',company:'ED Clinics',address:'180 Heaton Moor Road, Stockport SK4 2PB, UK',website:'https://edclinics.co.uk/clinics/metro-physio-manchester/',lat:53.4108,lng:-2.1843}, 4101 {name:'Carl Manni',company:'Majoro Mens Health',address:'Kamakura, Japan',website:'',lat:35.3197,lng:139.5467}, 4102 {name:'Mac Medicina',company:'Mac Medicina',address:'Spain',website:'',lat:40.4168,lng:-3.7038}, 4103 {name:'Fenwa Milhouse, MD',company:'Your Favorite Urologist LLC',address:'Chicago, IL, USA',website:'https://yourfavoriteurologist.com/',lat:41.9011,lng:-87.6313}, 4104 {name:'Shauli Minkowitz, MD',company:'Johannesburg Urology Center',address:'Sandton, South Africa',website:'',lat:-26.1071,lng:28.0567}, 4105 {name:'Nazanin Moali, MD',company:'Oasis2Care',address:'Torrance, CA, USA',website:'https://oasis2care.com/',lat:33.8045,lng:-118.3483}, 4106 {name:'Feras Mohder, MD',company:'Pioneer Medical Associates',address:'Clinton Township, MI, USA',website:'',lat:42.5795,lng:-82.9183}, 4107 {name:'Ashley Moore',company:'Ashley Moore Therapy',address:'Centennial, CO, USA',website:'',lat:39.5938,lng:-104.8773}, 4108 {name:'Michael Mooreville, MD',company:'URAMIX',address:'Lansdowne, PA, USA',website:'https://www.uram
4108ix.com/',lat:39.939,lng:-75.2718}, 4109 {name:'Gregory Moran, MD',company:'Family Physician',address:'4333 N Josey Ln #302, Carrollton, TX 75010, USA',website:'',lat:33.0045,lng:-96.9002}, 4110 {name:'Asif Muneer, MD',company:'UCL NHS',address:'33 Grosvenor Place, London SW1X 7HY, UK',website:'https://clevelandcliniclondon.uk/doctors/4106223-professor-asif-muneer',lat:51.5003,lng:-0.1534}, 4111 {name:'Agata Osewska',company:'MyFirmTech Poland',address:'ul. Marii Kazimiery 22/131, Warsaw 01-641, Poland',website:'http://www.myfirmtech.pl/',lat:52.2639,lng:20.9834}, 4112 {name:'Prodromos Ouzounoglou, MD',company:'Homerton Hospital NHS',address:'London, UK',website:'',lat:51.5488,lng:-0.0459}, 4113 {name:'Greta Peciulyte, MD',company:'Androfill / Harley Urology LTD',address:'64 Harley St, London W1G 7HB, UK',website:'https://www.androfill.co.uk/about-us/',lat:51.5224,lng:-0.1477}, 4114 {name:'Michael A. Perelman PhD',company:'Payne Whitney Clinic / NY Weill Cornell',address:'70 E 77th St, Suite 1C, New York, NY 10075',website:'',lat:40.7756,lng:-73.9601}, 4115 {name:'Edward Petrik',company:'Gameday Mens Health Austin',address:'Georgetown, TX, USA',website:'https://www.gamedaymenshealth.com/',lat:30.628,lng:-97.6691}, 4116 {name:'Aubergine Male Health Physio',company:'Aubergine Physio',address:'5A Willows Gate, Stratton Audley, Bicester OX27 9BQ, UK',website:'https://www.auberginephysio.co.uk/',lat:51.9436,lng:-1.1475}, 4117 {name:'Christopher Pittman',company:'Vein911',address:'Tampa, FL, USA',website:'https://www.vein911.com',lat:27.9726,lng:-82.4955}, 4118 {name:'ED Clinics Portsmouth',company:'ED Clinics',address:'96 London Road, Widley, Waterlooville PO7 5AB, UK',website:'https://edclinics.co.uk/clinics/the-physiotherapy-centre/',lat:50.8619,lng:-1.0678}, 4119 {name:'Ummer Qadeer, MD',company:'Hooke London',address:'London, UK',website:'https://www.hooke.london',lat:51.5074,lng:-0.1278}, 4120 {name:'Marcel Rad, MD',company:'Urology Cluj',address:'Cluj, Romania',website:'https://urocluj.ro/',lat:46.7334,lng:23.5265}, 4121 {name:'Ira Ratner',company:'Franklin Wellness Partners',address:'Wrentham, MA, USA',website:'',lat:42.0501,lng:-71.3326}, 4122 {name:'ED Clinics Reading',company:'ED Clinics',address:'11 Headley Road, Woodley, Reading RG5 4JB, UK',website:'https://edclinics.co.uk/clinics/3way-healthcare/',lat:51.4563,lng:-0.9283}, 4123 {name:'Sankeerth Reddy, MD',company:'Zest Clinic',address:'Singapore',website:'https://www.zest.clinic/',lat:1.3167,lng:103.9274}, 4124 {name:'Giselle Roedel DPT',company:'Pelvic Wellness Center',address:'Salem, OR, USA',website:'https://pelvicwellnessofsalem.com/',lat:44.926,lng:-122.994}, 4125 {name:'Heather Saran',company:'Bright Endocrinology PLLC',address:'Scottsdale, AZ, USA',website:'https://www.brightendocrinology.com',lat:33.6838,lng:-111.9065}, 4126 {name:'Yoshi Sato, MD',company:'Sapporo Medical University / Sanjukai Urology Hospital',address:'Sapporo, Hokkaido, Japan',website:'',lat:43.0618,lng:141.3545}, 4127 {name:'ED Clinics Solihull',company:'ED Clinics',address:'3 Manor Walk, Solihull B91 3SX, UK',website:'https://edclinics.co.uk/clinics/midlands-shockwave/',lat:52.4129,lng:-1.7781}, 4128 {name:'Angela Tan, MD',company:'Reiwa Health',address:'118 Joo Chiat Rd #01-01, Singapore 427407',website:'https://www.reiwahealth.com/',lat:1.3068,lng:103.9027}, 4129 {name:'William Taylor',company:'Taylor Physiotherapy',address:'Edinburgh, UK',website:'https://taylorphysiotherapy.com/',lat:55.9572,lng:-3.2267}, 4130 {name:'Rotana Tek, MD',company:'Alpha Hormones',address:'Pasadena, CA, USA',website:'https://alphahormones.com/',lat:34.1363,lng:-118.131}, 4131 {name:'Leon Telis, MD',company:'Mount Sinai Hospital',address:'New York, NY, USA',website:'https://www.mountsinai.org/',lat:40.7397,lng:-73.9851}, 4132 {name:'Steven Tijerina',company:'IPC Integrated Pelvic Care',address:'Orland Park, IL, USA',website:'https://www.ipc.health/',lat:41.6031,lng:-87.8539}, 4133 {name:'VennHealth UK',company:'VennHealth UK',address:'UK',website:'',lat:51.5074,lng:-0.1278}, 4134 {name:'Grainne Walsh',company:'Pelvic Health',address:'Unit B14, KCR Park Business Park, Dublin 12, Ireland',website:'https://www.gwpelvichealth.com/',lat:53.3218,lng:-6.3047}, 4135 {name:'James B. Walther',company:'Walther Institute for Marital Intimacy',address:'4173 Crescent Dr, Suite D, Saint Louis, MO 63129, USA',website:'https://www.waltherinstitute.com/',lat:38.5226,lng:-90.3388}, 4136 {name:'Di Woody Wu',company:'VActive',address:'Montreal, QC, Canada',website:'https://vactiveclinic.com/',lat:45.5481,lng:-73.5588}, 4137 {name:'Kevin Zorn',company:'BPHCanada Prostate Center',address:'315 Ave James-Shaw, Beaconsfield, Quebec, Canada',website:'https://bphcanada.com/',lat:45.4673,lng:-73.8634} 4138 ]; 4139 4140 var TOTAL_LABEL = DOCTORS.length + ' providers worldwide'; 4141 4142 function ftInit() { 4143 if (typeof L === 'undefined') { setTimeout(ftInit, 150); return; } 4144 4145 var map = L.map('ft-leaflet-map', { 4146 center: [25, 5], 4147 zoom: 2, 4148 minZoom: 1, 4149 maxZoom: 12, 4150 zoomControl: true, 4151 zoomSnap: 0, 4152 zoomDelta: 0.5,
4153 worldCopyJump: false, 4154 maxBounds: [[-85, -180], [85, 180]], 4155 maxBoundsViscosity: 1.0 4156 }); 4157 4158 L.tileLayer('https://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}{r}.png?key=cb1_2sjp_1_31f8fa088cadb5970c628622', { 4159 subdomains: 'abcd', 4160 maxZoom: 12, 4161 minZoom: 0, 4162 noWrap: true, 4163 bounds: [[-85.0511, -180], [85.0511, 180]], 4164 attribution: '© <a href="https://carto.com/">CARTO</a> © <a href="https://www.openstreetmap.org/copyright">OSM</a>' 4165 }).addTo(map); 4166 4167 /* Force a single world copy to fill the pane width. 4168 World width at zoom z is 256 * 2^z, so the fill zoom is log2(paneWidth / 256). 4169 Anything below that leaves empty space on the sides. */ 4170 function fitWorldWidth() { 4171 var w = map.getSize().x; 4172 if (!w) return; 4173 var fillZoom = Math.log(w / 256) / Math.LN2; 4174 map.setMinZoom(fillZoom); 4175 if (map.getZoom() < fillZoom) { map.setZoom(fillZoom); } 4176 } 4177 4178 function refresh() { map.invalidateSize(); fitWorldWidth(); } 4179 4180 setTimeout(refresh, 300); 4181 setTimeout(refresh, 800); 4182 setTimeout(refresh, 1600); 4183 window.addEventListener('resize', refresh); 4184 4185 function makeIcon() { 4186 var svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 32" width="20" height="27"><path d="M12 0C5.37 0 0 5.37 0 12c0 9 12 20 12 20S24 21 24 12C24 5.37 18.63 0 12 0z" fill="#EE3831" stroke="rgba(255,255,255,0.85)" stroke-width="1.2"/><circle cx="12" cy="12" r="5" fill="white" opacity="0.95"/></svg>'; 4187 return L.divIcon({ html: svg, className: '', iconSize: [20,27], iconAnchor: [10,27], popupAnchor: [0,-30] }); 4188 } 4189 4190 var allMarkers = {}; 4191 4192 DOCTORS.forEach(function(doc, i) { 4193 var marker = L.marker([doc.lat, doc.lng], { icon: makeIcon() }); 4194 var url = doc.website ? '<a class="ft-popup-link" href="' + doc.website + '" target="_blank" rel="noopener">Visit Website →</a>' : ''; 4195 marker.bindPopup( 4196 '<div class="ft-popup-inner">' + 4197 '<p class="ft-popup-name">' + doc.name + '</p>' + 4198 '<p class="ft-popup-company">' + doc.company + '</p>' + 4199 '<p class="ft-popup-address">' + doc.address + '</p>' + 4200 url + '</div>', 4201 { className: 'ft-popup', maxWidth: 280 } 4202 ); 4203 marker.on('click', function() { highlightItem(i); }); 4204 marker.addTo(map); 4205 allMarkers[i] = marker; 4206 }); 4207 4208 function renderList(docs) { 4209 var list = document.getElementById('ft-doctor-list'); 4210 if (!list) return; 4211 list.innerHTML = ''; 4212 docs.forEach(function(doc) { 4213 var i = doc._i !== undefined ? doc._i : DOCTORS.indexOf(doc); 4214 var li = document.createElement('li'); 4215 li.className = 'ft-doctor-item'; 4216 li.dataset.index = i; 4217 li.innerHTML = '<p class="ft-doctor-name">' + doc.name + '</p><p class="ft-doctor-company">' + doc.company + '</p>'; 4218 li.addEventListener('click', function() { 4219 var idx = parseInt(li.dataset.index); 4220 var m = allMarkers[idx]; 4221 if (m) { 4222 map.flyTo(m.getLatLng(), 8, { duration: 1 }); 4223 setTimeout(function() { m.openPopup(); }, 1050); 4224 } 4225 highlightItem(idx, li); 4226 }); 4227 list.appendChild(li); 4228 }); 4229 } 4230 4231 function highlightItem(idx, el) { 4232 document.querySelectorAll('.ft-doctor-item').forEach(function(e) { e.classList.remove('active'); }); 4233 var target = el || document.querySelector('.ft-doctor-item[data-index="' + idx + '"]'); 4234 if (target) { target.classList.add('active'); target.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } 4235 } 4236 4237 renderList(DOCTORS); 4238 4239 var searchInput = document.getElementById('ft-doctor-search'); 4240 var countEl = document.getElementById('ft-map-count'); 4241 var hintEl = document.querySelector('.ft-map-scrollhint'); 4242 if (countEl) countEl.textContent = TOTAL_LABEL; 4243 if (searchInput) { 4244 searchInput.addEventListener('input', function() { 4245 var q = this.value.toLowerCase().trim(); 4246 var filtered = DOCTORS.map(function(d, i) { return Object.assign({}, d, {_i:i}); }) 4247 .filter(function(d) { return !q || d.name.toLowerCase().indexOf(q) > -1 || d.company.toLowerCase().indexOf(q) > -1 || d.address.toLowerCase().indexOf(q) > -1; }); 4248 renderList(filtered); 4249 if (countEl) countEl.textContent = q ? filtered.length + ' results' : TOTAL_LABEL; 4250 if (hintEl) hintEl.textContent = q ? 'Scroll to see all results' : 'Scroll to see all providers'; 4251 }); 4252 } 4253 } 4254 4255 if (document.readyState === 'loading') { 4256 document.addEventListener('DOMContentLoaded', ftInit); 4257 } else { 4258 ftInit(); 4259 } 4260})(); 4261</script>
4261 4262 </div> 4263</section><section id="shopify-section-template--17107273580694__media_with_text_KXw9z4" class="shopify-section shopify-section--media-with-text"><style> 4264 #shopify-section-template--17107273580694__media_with_text_KXw9z4 { 4265 --section-background-hash: 0; 4266 } 4267 4268 #shopify-section-template--17107273580694__media_with_text_KXw9z4 + * { 4269 --previous-section-background-hash: 0; 4270 }</style><style> 4271 #shopify-section-template--17107273580694__media_with_text_KXw9z4 { 4272 --media-with-text-gap: 0; 4273 --media-with-text-item-grid-template: "media" "content" / auto; 4274 } 4275 4276 @media screen and (min-width: 1000px) { 4277 #shopify-section-template--17107273580694__media_with_text_KXw9z4 { 4278 --media-with-text-gap: 0; 4279 } 4280 }#block-template--17107273580694__media_with_text_KXw9z4-image_hta8TC { 4281 --media-with-text-item-icon-width: 68px; 4282 } 4283 4284 @media screen and (min-width: 1000px) { 4285 #block-template--17107273580694__media_with_text_KXw9z4-image_hta8TC { 4286 --media-with-text-item-grid-template: "content media" / minmax(0, 0.9fr) minmax(0, 1.1fr); 4287 } 4288 }</style><div class="section section-blends section-full"> 4289 <media-with-text class="media-with-text full-bleed"><div id="block-template--17107273580694__media_with_text_KXw9z4-image_hta8TC" class="media-with-text__item" > 4290 <div class="media-with-text__media " reveal-on-scroll="true"> 4291<img src="//myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=821" alt="" srcset="//myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=300 300w, //myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=400 400w, //myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=500 500w, //myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=600 600w, //myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=700 700w, //myfirmtech.com/cdn/shop/files/FirmTech_Customize_Live_Impact_copy.png?v=1770932149&width=800 800w" width="821" height="742" loading="lazy" sizes="(max-width: 999px) 100vw, min(715px, 55vw)"></div><div class="media-with-text__content bg-gradient text-custom"style="--gradient: linear-gradient(180deg, rgba(64, 8, 9, 1), rgba(64, 8, 9, 1) 100%); --text-color: 255 255 255;"> 4292 <div class="prose break-all place-self-center-start text-start" reveal-on-scroll="true"><img src="//myfirmtech.com/cdn/shop/files/1_e5e81757-184b-4a5f-aa84-5e32fe865492.png?v=1718895162&width=36" alt="" srcset="//myfirmtech.com/cdn/shop/files/1_e5e81757-184b-4a5f-aa84-5e32fe865492.png?v=1718895162&width=36 36w" width="36" height="36" loading="lazy" sizes="68px" class="media-with-text__icon"><p class="h2">Where Health Meets Pleasure</p><div class = "block-content"><p>Gain vital health insights via data between the TechRing and the app, empowering you and your healthcare provider.</p></div> 4293<a class="button button--xl" 4294 4295 4296 4297 4298 4299 href="/collections/firmtech-rings" 4300 4301 4302 >Discover Our Rings</a></div> 4303 </div> 4304 </div></media-with-text> 4305</div> 4306 4307 4308<style> #shopify-section-template--17107273580694__media_with_text_KXw9z4 .media-with-text__content .prose {max-width: 1300px !important; margin: 0 auto !important;} </style></section><section id="shopify-section-template--17107273580694__multi_column_kXhKLK" class="shopify-section shopify-section--multi-column"><style> 4309 #shopify-section-template--17107273580694__multi_column_kXhKLK { 4310 --section-background-hash: 002010055735800958522240624900006; 4311 } 4312 4313 #shopify-section-template--17107273580694__multi_column_kXhKLK + * { 4314 --previous-section-background-hash: 002010055735800958522240624900006; 4315 }</style><style> 4316 #shopify-section-template--17107273580694__multi_column_kXhKLK { 4317 --multi-column-grid: auto / auto-flow 73vw; 4318 --multi-column-list-gap: var(--spacing-12); 4319 } 4320 </style> 4321 4322 <div class="section section-full bg-custom text-custom"style="--background: 19 2 3; --text-color: 255 255 255;"> 4323 <div class="section-stack"><div class="multi-column scroll-area bleed md:unbleed"><div class="multi-column__item justify-start snap-start" style="--multi-column-item-column-count: span 4" ><img src="//myfirmtech.com/cdn/shop/files/2-1_06091ccd-fe15-4d30-a8f7-d5edaa6b63db.png?v=1721341678&width=44" alt="" width="44" height="44" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 3)" class="rounded"><div class="v-stack gap-4 text-start"><p class="h4">Better, More Frequent Sex</p> 4324<div class="prose"><p>Enhance performance, prolong hardness, and amplify orgasms for increased pleasure for you and your partner.</p> 4325</div></div></div><div class="multi-column__item justify-start snap-start" style="--multi-column-item-column-count: span 4" ><img src="//myfirmtech.com/cdn/shop/files/1-1_00dc2464-619c-4490-af77-a40bc2e41ea0.png?v=1721341678&width=44" alt="" width="44" height="44" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 3)" class="rounded"><div class="v-stack gap-4 text-start"><p class="h4">Track Nocturnal Erections</p> 4326<div class="prose"><p>
43263-5 nocturnal erections are typical for men. The TechRing generates an Erectile Fitness Score for activity tracking.</p> 4327</div></div></div><div class="multi-column__item justify-start snap-start" style="--multi-column-item-column-count: span 4" ><img src="//myfirmtech.com/cdn/shop/files/4-1_850330fd-cc1c-433f-9358-2f6609a934e2.png?v=1721341678&width=44" alt="" width="44" height="44" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 3)" class="rounded"><div class="v-stack gap-4 text-start"><p class="h4">Medication & Supplements</p> 4328<div class="prose"><p>Gain insights into how supplements and medications affect your your sexual performance and cardiovascular health.</p> 4329</div></div></div></div> 4330 </div> 4331 </div></section><section id="shopify-section-template--17107273580694__media_with_text_APkLyC" class="shopify-section shopify-section--media-with-text"><style> 4332 #shopify-section-template--17107273580694__media_with_text_APkLyC { 4333 --section-background-hash: 0; 4334 } 4335 4336 #shopify-section-template--17107273580694__media_with_text_APkLyC + * { 4337 --previous-section-background-hash: 0; 4338 }</style><style> 4339 #shopify-section-template--17107273580694__media_with_text_APkLyC { 4340 --media-with-text-gap: var(--grid-gutter); 4341 --media-with-text-item-grid-template: "media" "content" / auto; 4342 } 4343 4344 @media screen and (min-width: 1000px) { 4345 #shopify-section-template--17107273580694__media_with_text_APkLyC { 4346 --media-with-text-gap: var(--spacing-6); 4347 } 4348 }#block-template--17107273580694__media_with_text_APkLyC-video_Q6xHjB { 4349 --media-with-text-item-icon-width: 120px; 4350 } 4351 4352 @media screen and (min-width: 1000px) { 4353 #block-template--17107273580694__media_with_text_APkLyC-video_Q6xHjB { 4354 --media-with-text-item-grid-template: "content media" / minmax(0, 1.0fr) minmax(0, 1.0fr); 4355 } 4356 }</style><div class="section section-blends section-full"> 4357 <media-with-text class="media-with-text "><div id="block-template--17107273580694__media_with_text_APkLyC-video_Q6xHjB" class="media-with-text__item" > 4358 <div class="media-with-text__media rounded" reveal-on-scroll="true"><video-media autoplay style="--aspect-ratio: 1.5"><video playsinline="playsinline" playslinline="true" muted="muted" loop="loop" preload="metadata" poster="//myfirmtech.com/cdn/shop/files/preview_images/1cf8d9f47f724e5094182fa9d318d6bd.thumbnail.0000000000_small.jpg?v=1721343165" loading="lazy"><source src="//myfirmtech.com/cdn/shop/videos/c/vp/1cf8d9f47f724e5094182fa9d318d6bd/1cf8d9f47f724e5094182fa9d318d6bd.HD-1080p-7.2Mbps-31990833.mp4?v=0" type="video/mp4"><img src="//myfirmtech.com/cdn/shop/files/preview_images/1cf8d9f47f724e5094182fa9d318d6bd.thumbnail.0000000000_small.jpg?v=1721343165"></video></video-media></div><div class="media-with-text__content rounded bg-custom text-custom"style="--background: 246 246 246; --text-color: 26 26 26;"> 4359 <div class="prose break-all place-self-center-start text-start" reveal-on-scroll="true"><p class="h2">Can We Help You? Take Our Quick Quiz</p><div class = "block-content"></div> 4360<a class="button button--xl" 4361 style="--button-background: 37 47 106 / var(--button-background-opacity, 1);--button-outline-color: 37 47 106;--button-text-color: 255 255 255;" 4362 4363 4364 4365 4366 href="https://shassessment.myfirmtech.com/?utm_medium=organic&utm_source=assessment&utm_campaign=myfirmtech" 4367 4368 4369 >Free Sexual Health Assessment</a></div> 4370 </div> 4371 </div></media-with-text> 4372</div> 4373 4374 4375</section><section id="shopify-section-template--17107273580694__multi_column_tm9HbJ" class="shopify-section shopify-section--multi-column"><style> 4376 #shopify-section-template--17107273580694__multi_column_tm9HbJ { 4377 --section-background-hash: 0; 4378 } 4379 4380 #shopify-section-template--17107273580694__multi_column_tm9HbJ + * { 4381 --previous-section-background-hash: 0; 4382 }</style><style> 4383 #shopify-section-template--17107273580694__multi_column_tm9HbJ { 4384 --multi-column-grid: auto / auto-flow 73vw; 4385 --multi-column-list-gap: var(--grid-gutter); 4386 } 4387 </style> 4388 4389 <div class="section section-blends section-full"> 4390 <div class="section-stack"> 4391 <section-header class="section-header justify-center justify-items-center text-center"><div class="prose"><p class="subheading">Health or Pleasure?</p><h2 class="h2" reveal-on-scroll="true"><split-lines>Find The Right Ring For You</split-lines></h2> 4392 <div class="sentence-case"> 4393 4394 </div> 4395 4396 </div></section-header><div class="multi-column scroll-area bleed md:unbleed"><div class="multi-column__item justify-center snap-start" style="--multi-column-item-column-count: span 6" ><img src="//myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=2480" alt="" srcset="//myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=300 300w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=400 400w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=500 500w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=600 600w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=800 800w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=1000 1000w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=1200 1200w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=1400 1400w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=1600 1600w, //myfirmtech.com/cdn/shop/files/Health-Cover.png?v=1721961217&width=1800 1800w" width="2480" height="2655" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 2)" class="rounded"><div class="v-stack gap-4 text-center"><p class="h4"></p> 4397<div class="prose"> 4398<div> 4399<a class="button button--lg" 4400 4401 4402 4403 4404 4405 href="/collections/health-rings" 4406 4407 4408 >Shop The Health Ring</a></div></div></div></div><div class="multi-column__item justify-center snap-start" style="--multi-column-item-column-count: span 6" ><img src="//myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=2480" alt="" srcset="//myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=300 300w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=400 400w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=500 500w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=600 600w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=800 800w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=1000 1000w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=1200 1200w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=1400 1400w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=1600 1600w, //myfirmtech.com/cdn/shop/files/Pleasure-Cover.png?v=1721961217&width=1800 1800w" width="2480" height="2655" loading="lazy" sizes="(max-width: 699px) calc(73vw - 40px), (max-width: 999px) calc(38vw - 64px), calc(min(1300px, 100vw) / 2)" class="rounded"><div class="v-stack gap-4 text-center"><p class="h4"></p> 4409<div class="prose"> 4410<div> 4411<a class="button button--lg" 4412 4413 4414 4415 4416 4417 href="/collections/pleasure-rings" 4418 4419 4420 >Shop Pleasure Rings</a></div></div></div></div></div> 4421 </div> 4422 </div><style> #shopify-section-template--17107273580694__multi_column_tm9HbJ p.subheading {color: red; font-weight: 80;} </style></section><section id="shopify-section-template--17107273580694__image_with_text_overlay_WHynqh" class="shopify-section shopify-section--image-with-text-overlay"><style> 4423 #shopify-section-template--17107273580694__image_with_text_overlay_WHynqh {--section-outer-spacing-block: 0;--content-over-media-overlay: 0 0 0 / 0.0;} 4424</style> 4425 4426<div class="section section-blends section-full text-custom"style="--text-color: 255 255 255;" ><image-banner reveal-on-scroll="true" class="content-over-media content-over-media--auto full-bleed text-custom"style="--text-color: 255 255 255;"><picture><source 4427 media="(max-width: 699px)" 4428 srcset="//myfirmtech.com/cdn/shop/files/guarantee-bar-m.png?v=1718888655&width=400 400w, //myfirmtech.com/cdn/shop/files/guarantee-bar-m.png?v=1718888655&width=600 600w, //myfirmtech.com/cdn/shop/files/guarantee-bar-m.png?v=1718888655&width=800 800w, //myfirmtech.com/cdn/shop/files/guarantee-bar-m.png?v=1718888655&width=1000 1000w, //myfirmtech.com/cdn/shop/files/guarantee-bar-m.png?v=1718888655&width=1200 1200w" 4429 width="547" 4430 height="120" 4431 ><img src="//myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=1439" alt="" srcset="//myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=200 200w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=300 300w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=400 400w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=500 500w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=600 600w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=700 700w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=800 800w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=900 900w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=1000 1000w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=1200 1200w, //myfirmtech.com/cdn/shop/files/guarantee-bar.png?v=1718888595&width=1400 1400w" width="1439" height="120" loading="lazy" sizes="100vw"></picture></image-banner> 4432</div> 4433 4434</section><section id="shopify-section-template--17107273580694__17206312225bd979d8" class="shopify-section shopify-section--apps"><style> 4435 #shopify-section-template--17107273580694__17206312225bd979d8 { 4436 --section-background-hash: 0; 4437 } 4438 4439 #shopify-section-template--17107273580694__17206312225bd979d8 + * { 4440 --previous-section-background-hash: 0; 4441 }</style><style> 4442 #shopify-section-template--17107273580694__17206312225bd979d8 { 4443 4444 4445 } 4446 </style> 4447 4448 <div class="section section-blends section-full"><div id="shopify-block-ATlpMOFlmMnlxREhre__okendo_reviews_widget_BQyKgd" class="shopify-block shopify-app-block"> 4449 4450 4451 4452 4453<style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/okendo-reviews-lib.65939eaa.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/okendo-widget.6aeb18ae.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/widget.cb383169.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/shared-components.d6924fbf.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/review-list/masonry.0e5de697.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/header-modules/rating-average.6f2ee529.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/header-modules/rating-breakdown.a108ab46.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/header-modules/recommends.826afd09.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/header-modules/attributes.7cf57481.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/header-modules/reviews-summary.bc0924f4.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/header-modules/reviews-keywords.d134dcfc.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/review-templates/card-featured-media.6ef99b1b.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/attributes.9a58c98a.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/tooltip.ea8fe98f.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/media-thumbn
4453ail.2cd8dd9f.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/show-more-button.36160e9f.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/review-basic-content.68f28100.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/reviewer.05892934.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/helpful-voting.47319e5d.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/attribute-bars/bar-rounded.2793cccc.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/avatar.89663c87.css"></style><style data-oke-reviews-version="0.85.5" type="text/css" data-href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus/css/modules/flag.143bbb7e.css"></style><link data-oke-reviews-version="0.85.5" rel="stylesheet" type="text/css" href="https://d3hw6dc1ow8pp2.cloudfront.net/reviews-widget-plus-css-bundles/0-85-5/reviews-widget.b5ee35499ed924715090709ae20c21f1.css"> 4454<div 4455 data-oke-widget 4456 data-oke-reviews-product-id="shopify-7462086508694" 4457 > 4458 <div data-oke-reviews-version="0.104.2" aria-label="Rated 4.6 out of 5 stars Based on 98 reviews" data-oke-container="" tabindex="-1" role="region" class="okeReviews oke-w"><div class="js-oke-widgetSize oke-is-medium"><div class="oke-w-header"><div class="oke-w-header-content oke-w-header-content--verticalAlignTop oke-w-header-content--spaceAround"><div class="oke-w-header-content-block oke-w-header-content-block--oneThird oke-w-header-content-block--center"><div class="oke-w-header-content-module oke-w-header-content-module--center"><div class="oke-w-ratingAverageModule oke-w-ratingAverageModule--oneLine oke-w-ratingAverageModule--center"><div class="oke-w-ratingAverageModule-rating"><span class="oke-w-ratingAverageModule-rating-average"> 4.6 </span><span class="oke-w-ratingAverageModule-rating-stars"><div class="oke-stars"><!----><div class="oke-stars-background"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-empty"></use><use x="16.155555555555555" href="#oke-star-empty"></use><use x="32.31111111111111" href="#oke-star-empty"></use><use x="48.46666666666667" href="#oke-star-empty"></use><use x="64.62222222222222" href="#oke-star-empty"></use></svg></div><div class="oke-stars-foreground" style="width: 92.6283%;"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-filled"></use><use x="16.155555555555555" href="#oke-star-filled"></use><use x="32.31111111111111" href="#oke-star-filled"></use><use x="48.46666666666667" href="#oke-star-filled"></use><use x="64.62222222222222" href="#oke-star-filled"></use></svg></div><span class="oke-a11yText">Rated 4.6 out of 5 stars</span></div></span></div><div class="oke-w-ratingAverageModule-count"> Based on 98 reviews </div></div><!----><!----><!----><!----><!----><!----><!----><!----></div><div class="oke-w-header-content-module oke-w-header-content-module--center"><!----><div class="oke-w-breakdownModule oke-w-breakdownModule--contain"><div class="oke-w-breakdownModule-distribution"><div aria-hidden="true" class="oke-w-breakdownModule-distribution-label" style="grid-row: 1;"><span class="oke-w-breakdownModule-distribution-label-number"> 5 </span><span class="oke-w-breakdownModule-distribution-label-star"><div class="oke-stars"><svg height="12" viewBox="0 0 14.599999999999998 14" aria-hidden="true" style="overflow: visible;"><use href="#oke-star-filled"></use></svg><!----><span class="oke-a11yText">Rated out of 5 stars</span></div></span></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-bar" style="grid-row: 1; background-color: rgb(245, 245, 245);"><div class="oke-w-breakdownModule-distribution-bar-fill" style="width: 76.5306%; background-color: rgb(176, 176, 176);"></div></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-count" style="grid-row: 1;"> 75 </div><div tabindex="0" role="button" aria-label="Total 5 star reviews: 75. Filter by 5 star reviews" class="oke-w-breakdownModule-distribution-highlight oke-is-clickable" style="grid-row: 1;"></div><!----><div aria-hidden="true" class="oke-w-breakdownModule-distribution-label" style="grid-row: 2;"><span class="oke-w-breakdownModule-distribution-label-number"> 4 </span><span class="oke-w-breakdownModule-distribution-label-star"><div class="oke-stars"><svg height="12" viewBox="0 0 14.599999999999998 14" aria-hidden="true" style="overflow: visible;"><use href="#oke-star-filled"></use></svg><!----><span class="oke-a11yText">Rated out of 5 stars</span></div></span></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-bar" style="grid-row: 2; background-color: rgb(245, 245, 245);"><div class="oke-w-breakdownModule-distribution-bar-fill" style="width: 14.2857%; background-color: rgb(176, 176, 176);"></div></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-count" style="grid-row: 2;"> 14 </div><div tabindex="0" role="button" aria-label="Total 4 star reviews: 14. Filter by 4 star reviews" class="oke-w-breakdownModule-distribution-highlight oke-is-clickable" style="grid-row: 2;"></div><!----><div aria-hidden="true" class="oke-w-breakdownModule-distribution-label" style="grid-row: 3;"><span class="oke-w-breakdownModule-distribution-label-number"> 3 </span><span class="oke-w-breakdownModule-distribution-label-star"><div class="oke-stars"><svg height="12" viewBox="0 0 14.599999999999998 14" aria-hidden="true" style="overflow: visible;"><use href="#oke-star-filled"></use></svg><!----><span class="oke-a11yText">Rated out of 5 stars</span></div></span></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-bar" style="grid-row: 3; background-color: rgb(245, 245, 245);"><div class="oke-w-breakdownModule-distribution-bar-fill" style="width: 3.06122%; background-color: rgb(176, 176, 176);"></div></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-count" style="grid-row: 3;"> 3 </div><div tabindex="0" role="button" aria-label="Total 3 star reviews: 3. Filter by 3 star reviews" class="oke-w-breakdownModule-distribution-highlight oke-is-clickable" style="grid-row: 3;"></div><!----><div aria-hidden="true" class="oke-w-breakdownModule-distribution-label" style="grid-row: 4;"><span class="oke-w-breakdownModule-distribution-label-number"> 2 </span><span class="oke-w-breakdownModule-distribution-label-star"><div class="oke-stars"><svg height="12" viewBox="0 0 14.599999999999998 14" aria-hidden="true" style="overflow: visible;"><use href="#oke-star-filled"></use></svg><!----><span class="oke-a11yText">Rated out of 5 stars</span></div></span></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-bar" style="grid-row: 4; background-color: rgb(245, 245, 245);"><div class="oke-w-breakdownModule-distribution-bar-fill" style="width: 3.06122%; background-color: rgb(176, 176, 176);"></div></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-count" style="grid-row: 4;"> 3 </div><div tabindex="0" role="button" aria-label="Total 2 star reviews: 3. Filter by 2 star reviews" class="oke-w-breakdownModule-distribution-highlight oke-is-clickable" style="grid-row: 4;"></div><!----><div aria-hidden="true" class="oke-w-breakdownModule-distribution-label" style="grid-row: 5;"><span class="oke-w-breakdownModule-distribution-label-number"> 1 </span><span class="oke-w-breakdownModule-distribution-label-star"><div class="oke-stars"><svg height="12" viewBox="0 0 14.599999999999998 14" aria-hidden="true" style="overflow: visible;"><use href="#oke-star-filled"></use></svg><!----><span class="oke-a11yText">Rated out of 5 stars</span></div></span></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-bar" style="grid-row: 5; background-color: rgb(245, 245, 245);"><div class="oke-w-breakdownModule-distribution-bar-fill" style="width: 3.06122%; background-color: rgb(176, 176, 176);"></div></div><div aria-hidden="true" class="oke-w-breakdownModule-distribution-count" style="grid-row: 5;"> 3 </div><div tabindex="0" role="button" aria-label="Total 1 star reviews: 3. Filter by 1 star reviews" class="oke-w-breakdownModule-distribution-highlight oke-is-clickable" style="grid-row: 5;"></div><!----></div></div><!----><!----><!----><!----><!----><!----><!----></div></div><div class="oke-w-header-content-block oke-w-header-content-block--oneThird oke-w-header-content-block--left"><div class="oke-w-header-content-module oke-w-header-content-module--left"><!----><!----><div class="oke-w-recommendsModule"><strong class="oke-w-recommendsModule-value">91%</strong><span class="oke-w-recommendsModule-text">would recommend this product</span></div><!----><!----><!----><!----><!----><!----></div></div><div class="oke-w-header-content-block oke-w-header-content-block--oneThird oke-w-header-content-block--center"><div class="oke-w-header-content-module oke-w-header-content-module--center"><!----><!----><!----><!----><!----><!----><!----><!----><!----></div></div><div class="oke-w-header-content-block oke-w-header-content-block--full oke-w-header-content-block--center"><div class="oke-w-header-content-module oke-w-header-content-module--center"><!----><!----><!----><!----><!----><!----><!----><!----><!----></div><div class="oke-w-header-content-module oke-w-header-content-module--center"><!----><!----><!----><!----><!----><!----><div class="oke-w-reviewsKeywordsModule"><div class="oke-reviewsKeywords"><div role="heading" aria-level="2" class="oke-reviewsKeywords-heading"><!----><span class="oke-reviewsKeywords-heading-text"> Customers Talked About </span></div><ul role="menu" tabindex="-1" class="oke-reviewsKeywords-list"><li data-keyword-topic="Comfort" role="menuitem" tabindex="0" class="oke-reviewsKeywords-list-category"> Comfort </li><li data-keyword-topic="Accuracy" role="menuitem" tabindex="0" class="oke-reviewsKeywords-list-category"> Accuracy </li><li data-keyword-topic="Tracking" role="menuitem" tabindex="0" class="oke-reviewsKeywords-list-category"> Tracking </li><li data-keyword-topic="Usability" role="menuitem" tabindex="0" class="oke-reviewsKeywords-list-category"> Usability </li><li data-keyword-topic="Durability" role="menuitem" tabindex="0" class="oke-reviewsKeywords-list-category"> Durability </li></ul><!----><!----></div></div><!----><!----></div></div></div></div><!----><div class="oke-w-main"><div id="reviews-panel-d8be10a1-58da-44d4-be83-5e67ee70dfe2" aria-label="Reviews" role="tabpanel" class="oke-w-panel"><div class="oke-w-reviewsTab"><div class="oke-w-reviews"><div class="oke-w-reviews-head"><button aria-expanded="false" aria-controls="filter-options" id="filter-toggle" type="button" class="oke-button oke-w-reviews-filterToggle"><span class="oke-icon"></span><span class="oke-button-text"> Filters <!----></span></button><div id="filter-options" aria-labelledby="filter-toggle" role="region" class="oke-w-reviews-filters"><!----></div><div class="oke-w-reviews-writeReview"><a href="https://okendo.reviews/?subscriberId=d13d40f8-1056-4293-a1fc-3fc5c9f0c587&productId=shopify-7462086508694&locale=en&okeChannel=reviews-widget-write-review-button" target="_blank" rel="noopener" class="oke-w-writeReview oke-button"> Write a Review <span class="oke-a11yText">(Opens in a new window)</span></a></div></div><div class="oke-w-reviews-controls"><div class="oke-w-reviews-count"> 98 reviews </div><div class="oke-w-reviews-sort"><div class="oke-sortSelect" medialayout="featured"><label for="oke-sortSelect--reviews" class="oke-sortSelect-label"> Sort </label><select id="oke-sortSelect--reviews" aria-label="Sort" class="oke-sortSelect-sort oke-select"><!----><option value="date desc">Most Recent</option><option value="date asc">Oldest</option><option value="helpful desc">Most Helpful</option><option value="has_media desc">Photos & Videos</option><option value="rating desc" selected="true">Highest Rating</option><option value="rating asc">Lowest Rating</option><option value="unhelpful desc">Least Helpful</option></select></div></div></div><div class="oke-w-reviews-main oke-w-reviews-main--nav-divider"><div canloadmore="true"><div class="oke-w-reviews-listMasonry" style="padding-top: 16px;"><ul class="oke-w-reviews-masonryGrid" style="grid-template-columns: repeat(auto-fill, minmax(32.0578%, 1fr));"><li class="oke-w-reviews-masonryGrid-item" style="grid-row-end: span 336; opacity: 1;"><div class="oke-reviewCardFeaturedMedia masonryContent oke-w-reviews-js-masonryContent oke-reviewCardFeaturedMedia--above" showhelpfulvoting="true"><!----><div class="oke-reviewCardFeaturedMedia-container"><div class="oke-reviewCardFeaturedMedia-content"><div class="oke-reviewContainer"><div class="oke-reviewContent oke-is-truncated oke-reviewContent--left"><div class="oke-reviewContent-top"><div class="oke-reviewContent-stars"><div class="oke-stars"><!----><div class="oke-stars-background"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-empty"></use><use x="16.155555555555555" href="#oke-star-empty"></use><use x="32.31111111111111" href="#oke-star-empty"></use><use x="48.46666666666667" href="#oke-star-empty"></use><use x="64.62222222222222" href="#oke-star-empty"></use></svg></div><div class="oke-stars-foreground" style="width: 100%;"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-filled"></use><use x="16.155555555555555" href="#oke-star-filled"></use><use x="32.31111111111111" href="#oke-star-filled"></use><use x="48.46666666666667" href="#oke-star-filled"></use><use x="64.62222222222222" href="#oke-star-filled"></use></svg></div><span class="oke-a11yText">Rated 5 out of 5 stars</span></div></div><div class="oke-reviewContent-date"><span>2 months ago</span></div></div><div role="heading" aria-level="2" class="oke-reviewContent-title oke-title">Verified customer </div><div class="oke-reviewContent-body oke-bodyText" style="height: 105px;"><p>I've had the tech ring now for 7 months and have recorded my nocturnal erections.
4458</p><p>There rings are great I have all 3 of them and use them almost every day.</p><p>I give a doubles thumbs up to there rings!</p></div><!----><button type="button" class="oke-reviewContent-readMore oke-readMore"><span class="oke-reviewContent-readMore-text oke-bodyText">Read More</span><span class="oke-a11yText">Read more about this review</span><!----></button></div><!----></div><!----><!----></div><div class="oke-reviewCardFeaturedMedia-head"><div class="oke-reviewCardFeaturedMedia-reviewer"><div class="oke-w-reviewer"><div class="oke-w-reviewer-avatar"><div class="oke-avatar"><strong class="oke-avatar-placeholder"> AH </strong><!----><!----></div></div><div><div class="oke-w-reviewer-identity"><strong class="oke-w-reviewer-name"> Adelbert H. </strong><!----></div><div class="oke-w-reviewer-verified"> Verified Buyer <span class="oke-w-reviewer-verified-icon"></span></div><!----></div></div></div><!----></div><div class="oke-w-review-footer"><div class="oke-footerBadges"><!----><!----><!----></div><div class="oke-w-review-helpful"><div class="oke-helpful"><span class="oke-helpful-label">Was this helpful?</span><div class="oke-helpful-vote"><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--positive"><span id="oke-helpful-vote-counter-positive-3fe4e3d2-357b-4517-9a84-703e1e14e4c2" class="oke-helpful-vote-counter"><span class="oke-a11yText">Yes, this review from Adelbert H. was helpful.</span> 1 <span class="oke-a11yText">
4458person voted yes</span></span></button><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--negative"><span id="oke-helpful-vote-counter-negative-3fe4e3d2-357b-4517-9a84-703e1e14e4c2" class="oke-helpful-vote-counter"><span class="oke-a11yText">No, this review from Adelbert H. was not helpful.</span> 1 <span class="oke-a11yText">person voted no</span></span></button></div></div></div></div></div></div></li><li class="oke-w-reviews-masonryGrid-item" style="grid-row-end: span 256; opacity: 1;"><div class="oke-reviewCardFeaturedMedia masonryContent oke-w-reviews-js-masonryContent oke-reviewCardFeaturedMedia--above" showhelpfulvoting="true"><!----><div class="oke-reviewCardFeaturedMedia-container"><div class="oke-reviewCardFeaturedMedia-content"><div class="oke-reviewContainer"><div class="oke-reviewContent oke-reviewContent--left"><div class="oke-reviewContent-top"><div class="oke-reviewContent-stars"><div class="oke-stars"><!----><div class="oke-stars-background"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-empty"></use><use x="16.155555555555555" href="#oke-star-empty"></use><use x="32.31111111111111" href="#oke-star-empty"></use><use x="48.46666666666667" href="#oke-star-empty"></use><use x="64.62222222222222" href="#oke-star-empty"></use></svg></div><div class="oke-stars-foreground" style="width: 100%;"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-filled"></use><use x="16.155555555555555" href="#oke-star-filled"></use><use x="32.31111111111111" href="#oke-star-filled"></use><use x="48.46666666666667" href="#oke-star-filled"></use><use x="64.62222222222222" href="#oke-star-filled"></use></svg></div><span class="oke-a11yText">Rated 5 out of 5 stars</span></div></div><div class="oke-reviewContent-date"><span>2 months ago</span></div></div><div role="heading" aria-level="2" class="oke-reviewContent-title oke-title">excellent</div><div class="oke-reviewContent-body oke-bodyText"><p>For patient with ED , it is excellent and complimentary</p></div><!----><button type="button" class="oke-reviewContent-readMore oke-readMore"><span class="oke-reviewContent-readMore-text oke-bodyText">Read More</span><span class="oke-a11yText">Read more about this review</span><!----></button></div><!----></div><!----><!----></div><div class="oke-reviewCardFeaturedMedia-head"><div class="oke-reviewCardFeaturedMedia-reviewer"><div class="oke-w-reviewer"><div class="oke-w-reviewer-avatar"><div class="oke-avatar"><strong class="oke-avatar-placeholder"> JR </strong><!----><!----></div></div><div><div class="oke-w-reviewer-identity"><strong class="oke-w-reviewer-name"> Jamil R. </strong><!----></div><div class="oke-w-reviewer-verified"> Verified Buyer <span class="oke-w-reviewer-verified-icon"></span></div><!----></div></div></div><!----></div><div class="oke-w-review-footer"><div class="oke-footerBadges"><!----><!----><!----></div><div class="oke-w-review-helpful"><div class="oke-helpful"><span class="oke-helpful-label">Was this helpful?</span><div class="oke-helpful-vote"><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--positive"><span id="oke-helpful-vote-counter-positive-64629514-3fb9-4585-986a-81e3fea4d4f4" class="oke-helpful-vote-counter"><span class="oke-a11yText">Yes, this review from Jamil R. was helpful.</span> 3 <span class="oke-a11yText">people voted yes</span></span></button><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--negative"><span id="oke-helpful-vote-counter-negative-64629514-3fb9-4585-986a-81e3fea4d4f4" class="oke-helpful-vote-counter"><span class="oke-a11yText">No, this review from Jamil R. was not helpful.</span> 1 <span class="oke-a11yText">
4458person voted no</span></span></button></div></div></div></div></div></div></li><li class="oke-w-reviews-masonryGrid-item" style="grid-row-end: span 332; opacity: 1;"><div class="oke-reviewCardFeaturedMedia masonryContent oke-w-reviews-js-masonryContent oke-reviewCardFeaturedMedia--above" showhelpfulvoting="true"><!----><div class="oke-reviewCardFeaturedMedia-container"><div class="oke-reviewCardFeaturedMedia-content"><div class="oke-reviewContainer"><div class="oke-reviewContent oke-is-truncated oke-reviewContent--left"><div class="oke-reviewContent-top"><div class="oke-reviewContent-stars"><div class="oke-stars"><!----><div class="oke-stars-background"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-empty"></use><use x="16.155555555555555" href="#oke-star-empty"></use><use x="32.31111111111111" href="#oke-star-empty"></use><use x="48.46666666666667" href="#oke-star-empty"></use><use x="64.62222222222222" href="#oke-star-empty"></use></svg></div><div class="oke-stars-foreground" style="width: 100%;"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-filled"></use><use x="16.155555555555555" href="#oke-star-filled"></use><use x="32.31111111111111" href="#oke-star-filled"></use><use x="48.46666666666667" href="#oke-star-filled"></use><use x="64.62222222222222" href="#oke-star-filled"></use></svg></div><span class="oke-a11yText">Rated 5 out of 5 stars</span></div></div><div class="oke-reviewContent-date"><span>3 months ago</span></div></div><div role="heading" aria-level="2" class="oke-reviewContent-title oke-title">Tech Ring Performance </div><div class="oke-reviewContent-body oke-bodyText" style="height: 101px;"><p>The tech ring provides valuable information and helps to see trends over time with benchmark data to see where you stand relative to others in your age group (and others for that matter). You can see results from different influences, such as how many drinks you had that night and medication, if any, taken. Additionally it is very functional, effective and easy to use as a ânormalâ ring, but more comfortable and provides data on that activity as well. Wearing overnight takes some getting used to and I found it best to build up to that over time. Definitely works as intended in both the data collection and functionality. I also use the FirmTech non-tech rings on occasion as well and they are easy to use and effective. A lot of work went into this by Elliot and his team and you can tell! Very innovative.</p></div><!----><button type="button" class="oke-reviewContent-readMore oke-readMore"><span class="oke-reviewContent-readMore-text oke-bodyText">Read More</span><span class="oke-a11yText">Read more about this review</span><!----></button></div><!----></div><!----><!----></div><div class="oke-reviewCardFeaturedMedia-head"><div class="oke-reviewCardFeaturedMedia-reviewer"><div class="oke-w-reviewer"><div class="oke-w-reviewer-avatar"><div class="oke-avatar"><strong class="oke-avatar-placeholder"> G </strong><!----><!----></div></div><div><div class="oke-w-reviewer-identity"><strong class="oke-w-reviewer-name"> Go4it! </strong><!----></div><div class="oke-w-reviewer-verified"> Verified Buyer <span class="oke-w-reviewer-verified-icon"></span></div><!----></div></div></div><!----></div><div class="oke-w-review-footer"><div class="oke-footerBadges"><!----><!----><!----></div><div class="oke-w-review-helpful"><div class="oke-helpful"><span class="oke-helpful-label">Was this helpful?</span><div class="oke-helpful-vote"><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--positive"><span id="oke-helpful-vote-counter-positive-f7bc27ac-0734-4c66-92c5-66565bc7f427" class="oke-helpful-vote-counter"><span class="oke-a11yText">Yes, this review from Go4it! was helpful.</span> 2 <span class="oke-a11yText">people voted yes</span></span></button><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--negative"><span id="oke-helpful-vote-counter-negative-f7bc27ac-0734-4c66-92c5-66565bc7f427" class="oke-helpful-vote-counter"><span class="oke-a11yText">No, this review from Go4it! was not helpful.</span> 0 <span class="oke-a11yText">people voted no</span></span></button></div></div></div></div></div></div></li><li class="oke-w-reviews-masonryGrid-item" style="grid-row-end: span 332; opacity: 1;"><div class="oke-reviewCardFeaturedMedia masonryContent oke-w-reviews-js-masonryContent oke-reviewCardFeaturedMedia--above" showhelpfulvoting="true"><!----><div class="oke-reviewCardFeaturedMedia-container"><div class="oke-reviewCardFeaturedMedia-content"><div class="oke-reviewContainer"><div class="oke-reviewContent oke-is-truncated oke-reviewContent--left"><div class="oke-reviewContent-top"><div class="oke-reviewContent-stars"><div class="oke-stars"><!----><div class="oke-stars-background"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-empty"></use><use x="16.155555555555555" href="#oke-star-empty"></use><use x="32.31111111111111" href="#oke-star-empty"></use><use x="48.46666666666667" href="#oke-star-empty"></use><use x="64.62222222222222" href="#oke-star-empty"></use></svg></div><div class="oke-stars-foreground" style="width: 100%;"><svg height="18" viewBox="0 0 79.22222222222221 14" aria-hidden="true" role="none"><use x="0" href="#oke-star-filled"></use><use x="16.155555555555555" href="#oke-star-filled"></use><use x="32.31111111111111" href="#oke-star-filled"></use><use x="48.46666666666667" href="#oke-star-filled"></use><use x="64.62222222222222" href="#oke-star-filled"></use></svg></div><span class="oke-a11yText">Rated 5 out of 5 stars</span></div></div><div class="oke-reviewContent-date"><span>3 months ago</span></div></div><div role="heading" aria-level="2" class="oke-reviewContent-title oke-title">TechRing</div><div class="oke-reviewContent-body oke-bodyText" style="height: 101px;"><p>Iâve been impressed by the TechRing because it does something no other wearable has really tackled before: it focuses specifically on penile health. </p><p>What I like most is the idea of turning something that was previously based on guesswork into actual data. By tracking erectile health over time, the ring can help users better understand changes in their body and potentially identify issues earlier. It feels like a genuinely innovative use of wearable technology rather than just another fitness gadget.</p><p>For anyone interested in taking a more proactive approach to their sexual health, itâs a fascinating product worth considering.</p></div><!----><button type="button" class="oke-reviewContent-readMore oke-readMore"><span class="oke-reviewContent-readMore-text oke-bodyText">Read More</span><span class="oke-a11yText">Read more about this review</span><!----></button></div><!----></div><!----><!----></div><div class="oke-reviewCardFeaturedMedia-head"><div class="oke-reviewCardFeaturedMedia-reviewer"><div class="oke-w-reviewer"><div class="oke-w-reviewer-avatar"><div class="oke-avatar"><strong class="oke-avatar-placeholder"> AM </strong><!----><!----></div></div><div><div class="oke-w-reviewer-identity"><strong class="oke-w-reviewer-name"> Adrian M. </strong><!----></div><div class="oke-w-reviewer-verified"> Verified Buyer <span class="oke-w-reviewer-verified-icon"></span></div><!----></div></div></div><!----></div><div class="oke-w-review-footer"><div class="oke-footerBadges"><!----><!----><!----></div><div class="oke-w-review-helpful"><div class="oke-helpful"><span class="oke-helpful-label">Was this helpful?</span><div class="oke-helpful-vote"><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--positive"><span id="oke-helpful-vote-counter-positive-24dc0b3a-5825-4e31-bc56-c601278fa4e4" class="oke-helpful-vote-counter"><span class="oke-a11yText">Yes, this review from Adrian M. was helpful.</span> 3 <span class="oke-a11yText">people voted yes</span></span></button><button aria-pressed="false" type="button" tabindex="0" class="oke-helpful-vote-button oke-helpful-vote-button--negative"><span id="oke-helpful-vote-counter-negative-24dc0b3a-5825-4e31-bc56-c601278fa4e4" class="oke-helpful-vote-counter"><span class="oke-a11yText">No, this review from Adrian M. was not helpful.</span> 1 <span class="oke-a11yText">
4458person voted no</span></span></button></div></div></div></div></div></div></li></ul></div><span tabindex="-1" aria-hidden="true"></span></div><!----><div class="oke-w-reviews-alerts"><div aria-hidden="true" role="alert" aria-live="assertive" aria-atomic="true" class="oke-alert oke-alert--bottom"><div class="oke-alert-inner"> Loading... </div></div><div aria-hidden="true" role="alert" aria-live="assertive" aria-atomic="true" class="oke-alert oke-alert--top"><div class="oke-alert-inner"> Loading... </div></div></div></div><div class="oke-w-reviews-footer"><div class="oke-showMore"><a href="?okeReviewsNextUrl=https%253A%252F%252Fapi.okendo.io%252Fv1%252Fstores%252Fd13d40f8-1056-4293-a1fc-3fc5c9f0c587%252Fproducts%252Fshopify-7462086508694%252Freviews%253Flimit%253D5%2526orderBy%253Drating%252520desc%2526lastEvaluated%253D%25257B%252522reviewId%252522%25253A%25252224dc0b3a-5825-4e31-bc56-c601278fa4e4%252522%25252C%252522subscriberId%252522%25253A%252522d13d40f8-1056-4293-a1fc-3fc5c9f0c587%252522%25252C%252522_rating_dateCreated%252522%25253A%2525225%25253A2026-06-04T15%25253A53%25253A44.471Z%252522%25252C%252522subscriberId_productId%252522%25253A%252522d13d40f8-1056-4293-a1fc-3fc5c9f0c587%25253Ashopify-7462086508694%252522%25257D&okeReviewsPageNum=2" aria-label="Show more reviews" tabindex="0" class="oke-showMore-button oke-button"><span class="oke-showMore-button-text oke-button-text"> Show More </span></a></div></div><span role="status" aria-live="polite" class="oke-a11yText"></span></div></div><!----></div></div></div>
4458<script type="application/json" data-oke-metafield-data=""> {"areReviewsGrouped":false,"chatAssistant":{"reviewCount":98},"media":[],"productAttributes":[],"questionCount":0,"reviewAggregate":{"dateUpdated":"2026-09-14T20:03:53.072Z","mediaCount":2,"productId":"shopify-7462086508694","productName":"TechRing","ratingAndReviewCount":98,"ratingAndReviewCountByLevel":{"level1Count":3,"level2Count":3,"level3Count":3,"level4Count":14,"level5Count":75},"ratingAndReviewValuesTotal":449,"ratingCount":0,"ratingCountByLevel":{},"ratingValuesTotal":0,"recommendationCount":89,"replyCount":60,"replyWordsTotal":2209,"reviewCount":98,"reviewCountByLevel":{"level1Count":3,"level2Count":3,"level3Count":3,"level4Count":14,"level5Count":75},"reviewRatingValuesTotal":449,"reviewWordsTotal":6267,"subscriberId_productId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587:shopify-7462086508694","subscriberId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587"},"reviews":[{"subscriberId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587","reviewId":"3fe4e3d2-357b-4517-9a84-703e1e14e4c2","subscriberId_productId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587:shopify-7462086508694","productId":"shopify-7462086508694","body":"I've had the tech ring now for 7 months and have recorded my nocturnal erections.\nThere rings are great I have all 3 of them and use them almost every day.\nI give a doubles thumbs up to there rings!","dateCreated":"2026-07-11T04:26:24.429Z","dateUpdated":"2026-07-11T04:26:24.429Z","helpfulCount":1,"isRecommended":true,"languageCode":"en","productHandle":"the-tech-ring","productImageUrl":"https://cdn.shopify.com/s/files/1/0577/3177/6662/files/techring-2307333_x280.png?v=1777043127","productName":"TechRing","productUrl":"//myfirmtech.com/products/the-tech-ring","rating":5,"reply":{"body":"<p>Hi Adelbert, thanks so much for the great feedback! We're thrilled to hear you're enjoying the Tech Ring and all three rings. We truly appreciate your support and the double thumbs up!</p>","dateCreated":"2026-07-11T16:27:29.015Z","title":"FirmTech Inc"},"reviewer":{"displayName":"Adelbert H.","isVerified":true},"isIncentivized":false,"status":"approved","title":"Verified customer ","unhelpfulCount":1,"variantId":"41753911001238"},{"subscriberId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587","reviewId":"64629514-3fb9-4585-986a-81e3fea4d4f4","subscriberId_productId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587:shopify-7462086508694","productId":"shopify-7462086508694","body":"For patient with ED , it is excellent and complimentary","dateCreated":"2026-07-05T11:06:49.941Z","dateUpdated":"2026-07-05T11:06:49.941Z","helpfulCount":3,"isRecommended":true,"languageCode":"en","productHandle":"the-tech-ring","productImageUrl":"https://cdn.shopify.com/s/files/1/0577/3177/6662/files/techring-2307333_x280.png?v=1777043127","productName":"TechRing","productUrl":"//myfirmtech.com/products/the-tech-ring","rating":5,"reply":{"body":"<p>Hi Jamil, thanks for the great feedback! We're glad to hear it's been a helpful complement for you. We really appreciate your support!</p>","dateCreated":"2026-07-05T15:27:38.412Z","title":"FirmTech Inc"},"reviewer":{"displayName":"Jamil R.","isVerified":true},"isIncentivized":true,"status":"approved","title":"excellent","unhelpfulCount":1,"variantId":"41753911001238"},{"subscriberId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587","reviewId":"f7bc27ac-0734-4c66-92c5-66565bc7f427","subscriberId_productId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587:shopify-7462086508694","productId":"shopify-7462086508694","body":"The tech ring provides valuable information and helps to see trends over time with benchmark data to see where you stand relative to others in your age group (and others for that matter). You can see results from different influences, such as how many drinks you had that night and medication, if any, taken. Additionally it is very functional, effective and easy to use as a ânormalâ ring, but more comfortable and provides data on that activity as well. Wearing overnight takes some getting used to and I found it best to build up to that over time. Definitely works as intended in both the data collection and functionality. I also use the FirmTech non-tech rings on occasion as well and they are easy to use and effective. A lot of work went into this by Elliot and his team and you can tell! Very innovative.","dateCreated":"2026-06-12T13:19:23.312Z","dateUpdated":"2026-06-12T13:19:23.312Z","helpfulCount":2,"isRecommended":true,"languageCode":"en","productHandle":"the-tech-ring","productImageUrl":"https://cdn.shopify.com/s/files/1/0577/3177/6662/files/techring-2307333_x280.png?v=1777043127","productName":"TechRing","productUrl":"//myfirmtech.com/products/the-tech-ring","rating":5,"reply":{"body":"<p>Hi Go4it, thanks for the thoughtful feedback! Weâre really glad youâre finding value in the insights, comfort, and ease of use, and we appreciate you sharing your experience with both the Tech Ring and non-tech rings. Your support means a lot!</p>","dateCreated":"2026-06-12T16:03:00.330Z","title":"FirmTech Inc"},"reviewer":{"displayName":"Go4it!","isVerified":true},"isIncentivized":true,"status":"approved","title":"Tech Ring Performance ","unhelpfulCount":0,"variantId":"41753911001238"},{"subscriberId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587","reviewId":"24dc0b3a-5825-4e31-bc56-c601278fa4e4","subscriberId_productId":"d13d40f8-1056-4293-a1fc-3fc5c9f0c587:shopify-7462086508694","productId":"shopify-7462086508694","body":"Iâve been impressed by the TechRing because it does something no other wearable has really tackled before: it focuses specifically on penile health. \nWhat I like most is the idea of turning something that was previously based on guesswork into actual data. By tracking erectile health over time, the ring can help users better understand changes in their body and potentially identify issues earlier. It feels like a genuinely innovative use of wearable technology rather than just another fitness gadget.\nFor anyone interested in taking a more proactive approach to their sexual health, itâs a fascinating product worth considering.","dateCreated":"2026-06-04T15:53:44.471Z","dateUpdated":"2026-06-04T15:53:44.471Z","helpfulCount":3,"isRecommended":true,"languageCode":"en","productHandle":"the-tech-ring","productImageUrl":"https://cdn.shopify.com/s/files/1/0577/3177/6662/files/techring-2307333_x280.png?v=1777043127","productName":"TechRing","productUrl":"//myfirmtech.com/products/the-tech-ring","rating":5,"reply":{"body":"<p>Hi Adrian, thanks for sharing this thoughtful feedback; weâre really glad to hear you appreciate the focus on penile health and the value of tracking real data over time. It means a lot to know y
4458ou see it as a meaningful, innovative tool. We truly appreciate your support!</p>","dateCreated":"2026-06-04T18:02:46.979Z","title":"FirmTech Inc"},"reviewer":{"displayName":"Adrian M.","isVerified":true},"isIncentivized":true,"status":"approved","title":"TechRing","unhelpfulCount":1,"variantId":"41753911001238"}],"reviewsKeywords":{"keywordTopics":[{"keywords":[{"name":"comfort","occurrences":22},{"name":"fit","occurrences":7},{"name":"comfortable","occurrences":1},{"name":"overnight wear","occurrences":1},{"name":"ring tension","occurrences":1},{"name":"sizing","occurrences":1}],"topic":"Comfort"},{"keywords":[{"name":"effectiveness","occurrences":8},{"name":"accuracy","occurrences":6},{"name":"data quality","occurrences":3},{"name":"detection","occurrences":2},{"name":"measurement","occurrences":2},{"name":"data accuracy","occurrences":1},{"name":"reliability","occurrences":1},{"name":"sensitivity","occurrences":1}],"topic":"Accuracy"},{"keywords":[{"name":"tracking","occurrences":6},{"name":"data tracking","occurrences":3},{"name":"sleep tracking","occurrences":2},{"name":"night tracking","occurrences":1},{"name":"monitoring","occurrences":1},{"name":"sleep","occurrences":1}],"topic":"Tracking"},{"keywords":[{"name":"ease of use","occurrences":6},{"name":"app","occurrences":5},{"name":"functionality","occurrences":3},{"name":"insights","occurrences":3},{"name":"learning curve","occurrences":2},{"name":"connectivity","occurrences":1},{"name":"display","occurrences":1}],"topic":"Usability"},{"keywords":[{"name":"durability","occurrences":6},{"name":"quality","occurrences":4},{"name":"charging","occurrences":3},{"name":"hardware","occurrences":1},{"name":"material compatibility","occurrences":1}],"topic":"Durability"},{"keywords":[{"name":"recording","occurrences":4},{"name":"performance","occurrences":3},{"name":"device","occurrences":2},{"name":"sensor","occurrences":1},{"name":"results","occurrences":1}],"topic":"Performance"},{"keywords":[{"name":"price","occurrences":3},{"name":"support","occurrences":2},{"name":"usefulness","occurrences":1},{"name":"useful","occurrences":1}],"topic":"Value"}],"languageCode":"en"},"reviewsNextUrl":"https://api.okendo.io/v1/stores/d13d40f8-1056-4293-a1fc-3fc5c9f0c587/products/shopify-7462086508694/reviews?limit=5&orderBy=rating%20desc&lastEvaluated=%7B%22reviewId%22%3A%2224dc0b3a-5825-4e31-bc56-c601278fa4e4%22%2C%22subscriberId%22%3A%22d13d40f8-1056-4293-a1fc-3fc5c9f0c587%22%2C%22_rating_dateCreated%22%3A%225%3A2026-06-04T15%3A53%3A44.471Z%22%2C%22subscriberId_productId%22%3A%22d13d40f8-1056-4293-a1fc-3fc5c9f0c587%3Ashopify-7462086508694%22%7D","sort":{"defaultSort":"rating desc"}} </script>
4458</div>
4458<script id="oke-widget-resize">!(function() { const widgets = document.querySelectorAll('.js-oke-widgetSize'); if (widgets && widgets.length) { if (!window.okeSetWidgetSizes) { window.okeSetWidgetSizes = (allWidgets) => { if (allWidgets) { allWidgets.forEach(widget => { const width = widget.getBoundingClientRect().width; widget.classList.remove('oke-is-small', 'oke-is-medium', 'oke-is-large'); widget.classList.add(width > 960 ? 'oke-is-large' : width > 640 ? 'oke-is-medium' : 'oke-is-small'); }); } const gridItems = document.querySelectorAll(".oke-w-reviews-js-masonryContent"); gridItems.forEach(gridItem => { gridItem.parentElement.style.gridRowEnd = `span ${(gridItem.clientHeight + 10)}`; }); }; } if (!window.okeResizeObserver) { let okeMetafieldResizerTimer; window.okeResizeObserver = new ResizeObserver(entries => { if (entries && entries.length) { if (okeMetafieldResizerTimer) { clearTimeout(okeMetafieldResizerTimer); } okeMetafieldResizerTimer = window.setTimeout(() => { window.okeSetWidgetSizes(entries.map(e => e.target)); }, 100); } }); } window.okeSetWidgetSizes(document.querySelectorAll('.js-oke-widgetSize')); widgets.forEach((widget) => { window.okeResizeObserver.observe(widget); }); } })();</script>
4458 4459 </div> 4460 4461 4462</div></div> 4463</section><section id="shopify-section-template--17107273580694__scrolling_text_fa3ngy" class="shopify-section shopify-section--scrolling-text"><style> 4464 #shopify-section-template--17107273580694__scrolling_text_fa3ngy { 4465 --section-background-hash: 0; 4466 } 4467 4468 #shopify-section-template--17107273580694__scrolling_text_fa3ngy + * { 4469 --previous-section-background-hash: 0; 4470 }</style><style> 4471 #shopify-section-template--17107273580694__scrolling_text_fa3ngy { 4472 --section-spacing-inline: 0; 4473 --scrolling-text-font-size: 3.75rem; 4474 } 4475 4476 @media screen and (min-width: 700px) { 4477 #shopify-section-template--17107273580694__scrolling_text_fa3ngy { 4478 --scrolling-text-font-size: 5rem; 4479 } 4480 } 4481 </style><div class="section section-blends section-full text-custom"style="--text-color: 215 215 215;"><div class="scrolling-text scrolling-text--auto"><marquee-text scrolling-speed="10" class="scrolling-text__wrapper"><span class="scrolling-text__text heading " >Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span><span class="scrolling-text__text heading motion-reduce:hidden" aria-hidden="true">Discover Our Products Today</span></marquee-text></div> 4482 </div></section><div id="shopify-section-template--17107273580694__176599180264aa3172" class="shopify-section"> 4483 4484 4485<style data-shopify> 4486 .ai-popup-overlay-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4487 position: fixed; 4488 top: 0; 4489 left: 0; 4490 width: 100%; 4491 height: 100%; 4492 background-color: rgba(0, 0, 0, 0.5); 4493 z-index: 9998; 4494 opacity: 0; 4495 visibility: hidden; 4496 transition: opacity 0.3s ease, visibility 0.3s ease; 4497 display: block; 4498 } 4499 4500 .ai-popup-overlay-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m.active { 4501 opacity: 1; 4502 visibility: visible; 4503 } 4504 4505 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4506 position: fixed; 4507 z-index: 9999; 4508 opacity: 0; 4509 visibility: hidden; 4510 transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease; 4511 max-width: 500px; 4512 width: 90%; 4513 display: block; 4514 } 4515 4516 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m.active { 4517 opacity: 1; 4518 visibility: visible; 4519 } 4520 4521 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--top-left { 4522 top: 20px; 4523 left: 20px; 4524 transform: translateY(-20px); 4525 } 4526 4527 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--top-left.active { 4528 transform: translateY(0); 4529 } 4530 4531 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--top-center { 4532 top: 20px; 4533 left: 50%; 4534 transform: translate(-50%, -20px); 4535 } 4536 4537 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--top-center.active { 4538 transform: translate(-50%, 0); 4539 } 4540 4541 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--top-right { 4542 top: 20px; 4543 right: 20px; 4544 transform: translateY(-20px); 4545 } 4546 4547 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--top-right.active { 4548 transform: translateY(0); 4549 } 4550 4551 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--center { 4552 top: 50%; 4553 left: 50%; 4554 transform: translate(-50%, -50%) scale(0.9); 4555 } 4556 4557 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--center.active { 4558 transform: translate(-50%, -50%) scale(1); 4559 } 4560 4561 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--bottom-left { 4562 bottom: 20px; 4563 left: 20px; 4564 transform: translateY(20px); 4565 } 4566 4567 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--bottom-left.active { 4568 transform: translateY(0); 4569 } 4570 4571 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--bottom-center { 4572 bottom: 20px; 4573 left: 50%; 4574 transform: translate(-50%, 20px); 4575 } 4576 4577 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--bottom-center.active { 4578 transform: translate(-50%, 0); 4579 } 4580 4581 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--bottom-right { 4582 bottom: 20px; 4583 right: 20px; 4584 transform: translateY(20px); 4585 } 4586 4587 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--bottom-right.active { 4588 transform: translateY(0); 4589 } 4590 4591 .ai-popup-content-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4592 background-color: #ffffff; 4593 border-radius: 24px; 4594 padding: 40px; 4595 position: relative; 4596 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); 4597 } 4598 4599 .ai-popup-close-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4600 position: absolute; 4601 top: 12px; 4602 right: 12px; 4603 background: none; 4604 border: none; 4605 cursor: pointer; 4606 padding: 8px; 4607 color: #1a1a1a; 4608 opacity: 0.7; 4609 transition: opacity 0.2s ease; 4610 z-index: 1; 4611 } 4612 4613 .ai-popup-close-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m:hover { 4614 opacity: 1; 4615 } 4616 4617 .ai-popup-close-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m svg {
4618 width: 20px; 4619 height: 20px; 4620 } 4621 4622 .ai-popup-heading-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4623 color: #1a1a1a; 4624 font-size: 28px; 4625 margin: 0 0 12px; 4626 padding-right: 30px; 4627 } 4628 4629 .ai-popup-message-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4630 color: #1a1a1a; 4631 font-size: 16px; 4632 margin: 0 0 20px; 4633 line-height: 1.5; 4634 } 4635 4636 .ai-popup-button-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4637 display: inline-block; 4638 padding: 12px 24px; 4639 background-color: #eb243c; 4640 color: #ffffff; 4641 text-decoration: none; 4642 border-radius: 30px; 4643 font-size: 16px; 4644 transition: background-color 0.2s ease; 4645 border: none; 4646 cursor: pointer; 4647 } 4648 4649 .ai-popup-button-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m:hover { 4650 background-color: #ba181b; 4651 } 4652 4653 @media screen and (max-width: 749px) { 4654 .ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4655 max-width: calc(100% - 40px); 4656 } 4657 4658 .ai-popup-content-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4659 padding: 30.0px; 4660 } 4661 4662 .ai-popup-heading-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4663 font-size: 23.8px; 4664 } 4665 4666 .ai-popup-message-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m { 4667 font-size: 14.4px; 4668 } 4669 } 4670</style> 4671 4672<targeted-popup-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m 4673 class="ai-popup-wrapper-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m" 4674 data-delay="2" 4675 data-pages="product" 4676 data-countries="GB" 4677 4678> 4679 <div class="ai-popup-overlay-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m"></div> 4680 <div class="ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m--center"> 4681 <div class="ai-popup-content-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m"> 4682 <button 4683 class="ai-popup-close-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m" 4684 aria-label="Close popup" 4685 > 4686 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 4687 <line x1="18" y1="6" x2="6" y2="18"></line> 4688 <line x1="6" y1="6" x2="18" y2="18"></line> 4689 </svg> 4690 </button> 4691 4692 4693 <h2 class="ai-popup-heading-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m">FirmTech is not shipping to the UK, but we have a partner in the UK!</h2> 4694 4695 4696 4697 <div class="ai-popup-message-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m">Click the button below and visit Venn Health to get your FirmTech products in the UK.</div> 4698 4699 4700 4701 <a href="https://theurologyshop.co.uk/firmtech" class="ai-popup-button-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m"> 4702 Shop Venn Health 4703 </a> 4704 4705 </div> 4706 </div> 4707</targeted-popup-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m> 4708
4709<script> 4710 (function() { 4711 class TargetedPopupawexqugzvruzcnvhlvaigenblockb8ee950hutw8m extends HTMLElement { 4712 constructor() { 4713 super(); 4714 this.sessionKey = 'ai-popup-dismissed-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m'; 4715 this.overlay = this.querySelector('.ai-popup-overlay-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m'); 4716 this.container = this.querySelector('.ai-popup-container-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m'); 4717 this.closeButton = this.querySelector('.ai-popup-close-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m'); 4718 this.delay = parseInt(this.dataset.delay) * 1000; 4719 this.targetPages = this.dataset.pages.split(',').map(p => p.trim()).filter(p => p); 4720 this.targetCountries = this.dataset.countries.split(',').map(c => c.trim().toUpperCase()).filter(c => c); 4721 } 4722 4723 connectedCallback() { 4724 if (this.shouldShow()) { 4725 this.schedulePopup(); 4726 } 4727 this.setupEventListeners(); 4728 } 4729 4730 shouldShow() { 4731 if (sessionStorage.getItem(this.sessionKey)) { 4732 return false; 4733 } 4734 4735 if (!this.isTargetPage()) { 4736 return false; 4737 } 4738 4739 return true; 4740 } 4741 4742 isTargetPage() { 4743 if (this.targetPages.length === 0) { 4744 return true; 4745 } 4746 4747 const currentPath = window.location.pathname; 4748 4749 for (const page of this.targetPages) { 4750 if (page === 'home' && (currentPath === '/' || currentPath === '')) { 4751 return true; 4752 } 4753 if (page === 'product' && currentPath.includes('/products/')) { 4754 return true; 4755 } 4756 if (page === 'collection' && currentPath.includes('/collections/') && !currentPath.includes('/products/')) { 4757 return true; 4758 } 4759 if (page === 'cart' && currentPath.includes('/cart')) { 4760 return true; 4761 } 4762 if (page === 'all_pages') { 4763 return true; 4764 } 4765 } 4766 4767 return false; 4768 } 4769 4770 async checkCountryTarget() { 4771 if (this.targetCountries.length === 0) { 4772 return true; 4773 } 4774 4775 try { 4776 const response = await fetch('/browsing_context_suggestions.json'); 4777 const data = await response.json(); 4778 const userCountry = data.detected_values?.country?.handle?.toUpperCase(); 4779 4780 if (userCountry && this.targetCountries.includes(userCountry)) { 4781 return true; 4782 } 4783 4784 return false; 4785 } catch (error) { 4786 return true; 4787 } 4788 } 4789 4790 async schedulePopup() { 4791 const countryMatch = await this.checkCountryTarget(); 4792 4793 if (!countryMatch) { 4794 return; 4795 } 4796 4797 setTimeout(() => { 4798 this.showPopup(); 4799 }, this.delay); 4800 } 4801 4802 showPopup() { 4803 this.overlay.classList.add('active'); 4804 this.container.classList.add('active'); 4805 document.body.style.overflow = 'hidden'; 4806 } 4807 4808 hidePopup() { 4809 this.overlay.classList.remove('active'); 4810 this.container.classList.remove('active'); 4811 document.body.style.overflow = ''; 4812 sessionStorage.setItem(this.sessionKey, 'true'); 4813 } 4814 4815 setupEventListeners() { 4816 this.closeButton.addEventListener('click', () => { 4817 this.hidePopup(); 4818 }); 4819 4820 this.overlay.addEventListener('click', () => { 4821 this.hidePopup(); 4822 }); 4823 4824 document.addEventListener('keydown', (e) => { 4825 if (e.key === 'Escape' && this.container.classList.contains('active')) { 4826 this.hidePopup(); 4827 } 4828 }); 4829 } 4830 } 4831 4832 customElements.define('targeted-popup-awexqugzvruzcnvhlvaigenblockb8ee950hutw8m', TargetedPopupawexqugzvruzcnvhlvaigenblockb8ee950hutw8m); 4833 })(); 4834</script>
4834 4835 4836 4837 4838 4839</div><div id="shopify-section-template--17107273580694__17659969871da7bd70" class="shopify-section"> 4840 4841 4842<style data-shopify> 4843 .ai-geo-popup-overlay-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4844 position: fixed; 4845 top: 0; 4846 left: 0; 4847 width: 100%; 4848 height: 100%; 4849 background-color: rgba(0, 0, 0, 0.5); 4850 z-index: 9998; 4851 opacity: 0; 4852 visibility: hidden; 4853 transition: opacity 0.3s ease, visibility 0.3s ease; 4854 display: block; 4855 } 4856 4857 .ai-geo-popup-overlay-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky.active { 4858 opacity: 1; 4859 visibility: visible; 4860 } 4861 4862 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4863 position: fixed; 4864 z-index: 9999; 4865 background-color: #ffffff; 4866 border-radius: 24px; 4867 padding: 30px; 4868 max-width: 500px; 4869 width: 90%; 4870 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); 4871 opacity: 0; 4872 visibility: hidden; 4873 transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease; 4874 display: block; 4875 } 4876 4877 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky.active { 4878 opacity: 1; 4879 visibility: visible; 4880 } 4881 4882 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--center { 4883 top: 50%; 4884 left: 50%; 4885 transform: translate(-50%, -50%) scale(0.9); 4886 } 4887 4888 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--center.active { 4889 transform: translate(-50%, -50%) scale(1); 4890 } 4891 4892 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--top { 4893 top: 20px; 4894 left: 50%; 4895 transform: translate(-50%, -20px); 4896 } 4897 4898 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--top.active { 4899 transform: translate(-50%, 0); 4900 } 4901 4902 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--bottom { 4903 bottom: 20px; 4904 left: 50%; 4905 transform: translate(-50%, 20px); 4906 } 4907 4908 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--bottom.active { 4909 transform: translate(-50%, 0); 4910 } 4911 4912 .ai-geo-popup-close-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4913 position: absolute; 4914 top: 15px; 4915 right: 15px; 4916 background: none; 4917 border: none; 4918 cursor: pointer; 4919 padding: 5px; 4920 color: #677279; 4921 opacity: 0.7; 4922 transition: opacity 0.2s ease; 4923 line-height: 1; 4924 } 4925 4926 .ai-geo-popup-close-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky:hover { 4927 opacity: 1; 4928 } 4929 4930 .ai-geo-popup-close-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky svg { 4931 width: 24px; 4932 height: 24px; 4933 } 4934 4935 .ai-geo-popup-content-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4936 text-align: center; 4937 } 4938 4939 .ai-geo-popup-heading-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4940 color: #1a1a1a; 4941 font-size: 28px; 4942 margin: 0 0 15px; 4943 font-weight: 700; 4944 } 4945 4946 .ai-geo-popup-message-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4947 color: #677279; 4948 font-size: 16px; 4949 margin: 0 0 20px; 4950 line-height: 1.5; 4951 } 4952 4953 .ai-geo-popup-button-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4954 display: inline-block; 4955 padding: 12px 30px; 4956 background-color: #eb243c; 4957 color: #ffffff; 4958 text-decoration: none; 4959 border-radius: 30px; 4960 font-size: 16px; 4961 font-weight: 600; 4962 transition: background-color 0.3s ease; 4963 border: none; 4964 cursor: pointer; 4965 } 4966 4967 .ai-geo-popup-button-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky:hover { 4968 background-color: #ba181b; 4969 } 4970 4971 @media screen and (max-width: 749px) { 4972 .ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4973 padding: 20px; 4974 max-width: 95%; 4975 } 4976 4977 .ai-geo-popup-heading-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4978 font-size: calc(28px * 0.85); 4979 } 4980 4981 .ai-geo-popup-message-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky { 4982 font-size: calc(16px * 0.9); 4983 } 4984 } 4985</style> 4986 4987<geo-popup-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky 4988 class="ai-geo-popup-wrapper-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky" 4989 data-url-pattern="/products" 4990 data-countries="GB" 4991 data-delay="0" 4992 data-session-key="geo-popup-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky-dismissed" 4993 4994> 4995 <div class="ai-geo-popup-overlay-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky"></div> 4996 <div class="ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky--center"> 4997 <button 4998 class="ai-geo-popup-close-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky" 4999 aria-label="Close popup" 5000 > 5001 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 5002 <line x1="18" y1="6" x2="6" y2="18"></line> 5003 <line x1="6" y1="6" x2="18" y2="18"></line> 5004 </svg> 5005 </button> 5006 <div class="ai-geo-popup-content-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky"> 5007 5008 <h2 class="ai-geo-popup-heading-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky">FirmTech is not shipping to the UK, but we have a partner in the UK!</h2> 5009 5010 5011 <div class="ai-geo-popup-message-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky"><p>Click the button below and visit Venn Health to get your FirmTech products in the UK.</p></div> 5012 5013 5014 <a href="https://theurologyshop.co.uk/firmtech" class="ai-geo-popup-button-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky"> 5015 Shop Venn Health Now 5016 </a> 5017 5018 </div> 5019 </div> 5020</geo-popup-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky> 5021
5022<script> 5023 (function() { 5024 class GeoPopupav3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky extends HTMLElement { 5025 constructor() { 5026 super(); 5027 this.urlPattern = this.dataset.urlPattern || ''; 5028 this.targetCountries = this.dataset.countries || ''; 5029 this.delay = parseInt(this.dataset.delay) || 0; 5030 this.sessionKey = this.dataset.sessionKey; 5031 this.overlay = this.querySelector('.ai-geo-popup-overlay-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky'); 5032 this.container = this.querySelector('.ai-geo-popup-container-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky'); 5033 this.closeButton = this.querySelector('.ai-geo-popup-close-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky'); 5034 } 5035 5036 connectedCallback() { 5037 if (this.shouldShow()) { 5038 this.init(); 5039 } 5040 } 5041 5042 shouldShow() { 5043 if (sessionStorage.getItem(this.sessionKey)) { 5044 return false; 5045 } 5046 5047 if (this.urlPattern && !this.matchesUrlPattern()) { 5048 return false; 5049 } 5050 5051 return true; 5052 } 5053 5054 matchesUrlPattern() { 5055 const currentUrl = window.location.pathname + window.location.search; 5056 return currentUrl.includes(this.urlPattern); 5057 } 5058 5059 async init() { 5060 if (this.targetCountries) { 5061 const userCountry = await this.getUserCountry(); 5062 const targetCountryList = this.targetCountries.split(',').map(c => c.trim().toUpperCase()); 5063 5064 if (!targetCountryList.includes(userCountry)) { 5065 return; 5066 } 5067 } 5068 5069 setTimeout(() => { 5070 this.show(); 5071 }, this.delay); 5072 5073 this.setupEventListeners(); 5074 } 5075 5076 async getUserCountry() { 5077 try { 5078 const response = await fetch('/browsing_context_suggestions.json'); 5079 const data = await response.json(); 5080 return data.detected_values.country.handle.toUpperCase(); 5081 } catch (error) { 5082 console.error('Error fetching country:', error); 5083 return ''; 5084 } 5085 } 5086 5087 show() { 5088 this.overlay.classList.add('active'); 5089 this.container.classList.add('active'); 5090 document.body.style.overflow = 'hidden'; 5091 } 5092 5093 hide() { 5094 this.overlay.classList.remove('active'); 5095 this.container.classList.remove('active'); 5096 document.body.style.overflow = ''; 5097 sessionStorage.setItem(this.sessionKey, 'true'); 5098 } 5099 5100 setupEventListeners() { 5101 this.closeButton.addEventListener('click', () => this.hide()); 5102 this.overlay.addEventListener('click', () => this.hide()); 5103 5104 document.addEventListener('keydown', (e) => { 5105 if (e.key === 'Escape' && this.container.classList.contains('active')) { 5106 this.hide(); 5107 } 5108 }); 5109 } 5110 } 5111 5112 customElements.define('geo-popup-av3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky', GeoPopupav3ftqy8yl2ddovhceaigenblocka2c06e9dyyxky); 5113 })(); 5114</script>
5114 5115 5116 5117 5118 5119</div> 5120<!-- BEGIN sections: footer-group --> 5121<footer id="shopify-section-sections--17107269550230__footer" class="shopify-section shopify-section-group-footer-group shopify-section--footer"><style> 5122 @media screen and (min-width: 1000px) { 5123 #shopify-section-sections--17107269550230__footer {--footer-block-list-gap: var(--spacing-10);--footer-block-list-justify-content: space-between; 5124 } 5125 } 5126</style><div class="footer"> 5127 <div class="container"> 5128 <div class="footer__wrapper"><div class="footer__block-list empty:hidden"><div class="footer__block footer__block--newsletter" ><img src="//myfirmtech.com/cdn/shop/files/Group.png?v=1718386492&width=262" alt="" srcset="//myfirmtech.com/cdn/shop/files/Group.png?v=1718386492&width=150 150w, //myfirmtech.com/cdn/shop/files/Group.png?v=1718386492&width=262 262w" width="262" height="70" loading="lazy" style="max-width: 150px" sizes="150px"><div class="v-stack gap-6"><p class="h5">Subscribe To Mailing List For Health Tips, Product Launches, and More</p><form method="post" action="/contact#footer-newsletter" id="footer-newsletter" accept-charset="UTF-8" class="footer__newsletter-form form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="contact[tags]" value="newsletter"><div class="form-control" ><input id="input-sections--17107269550230__footer--contactemail" class="input is-floating" type="email" dir="ltr" name="contact[email]" placeholder=" " 5129 5130 5131 5132 5133 autocomplete="email" 5134 5135 enterkeyhint="send" 5136 required 5137 5138><label for="input-sections--17107269550230__footer--contactemail" class="floating-label">E-mail</label><div class="self-submit-button"> 5139 <button type="submit" class="circle-chevron hover:colors"> 5140 <span class="sr-only">Subscribe</span><svg role="presentation" focusable="false" width="5" height="8" class="icon icon-chevron-right-small reverse-icon" viewBox="0 0 5 8"> 5141 <path d="m.75 7 3-3-3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 5142 </svg></button> 5143 </div></div></form></div> 5144 </div><div class="footer__block footer__block--menu" ><p class="bold">Learn</p><ul class="v-stack gap-3" role="list"><li> 5145 <a href="/collections/firmtech" class="inline-block link-faded break-all">Shop</a> 5146 </li><li> 5147 <a href="/pages/health" class="inline-block link-faded break-all">Health</a> 5148 </li><li> 5149 <a href="/pages/pleasure" class="inline-block link-faded break-all">
5149Pleasure</a> 5150 </li><li> 5151 <a href="/pages/science" class="inline-block link-faded break-all">Science</a> 5152 </li><li> 5153 <a href="/blogs/news" class="inline-block link-faded break-all">Blog</a> 5154 </li><li> 5155 <a href="https://shassessment.myfirmtech.com/?utm_medium=organic&utm_source=assessment&utm_campaign=myfirmtech" class="inline-block link-faded break-all">Free Assessment</a> 5156 </li><li> 5157 <a href="/pages/press" class="inline-block link-faded break-all">Press</a> 5158 </li></ul> 5159 </div><div class="footer__block footer__block--menu" ><p class="bold">Support</p><ul class="v-stack gap-3" role="list"><li> 5160 <a href="/pages/contact" class="inline-block link-faded break-all">Contact</a> 5161 </li><li> 5162 <a href="https://myfirmtech.com/apps/redo/returns-portal/login" class="inline-block link-faded break-all">Returns</a> 5163 </li><li> 5164 <a href="https://myfirmtech.com/apps/redo/returns-portal/login" class="inline-block link-faded break-all">Shipping Claims</a> 5165 </li><li> 5166 <a href="https://myfirmtech.myshopify.com/apps/redo/returns-portal/login?withdraw=true" class="inline-block link-faded break-all">EU Withdrawal</a> 5167 </li><li> 5168 <a href="/pages/clinician" class="inline-block link-faded break-all">Clinicians</a> 5169 </li><li> 5170 <a href="/pages/dealers" class="inline-block link-faded break-all">Dealers</a> 5171 </li></ul> 5172 </div><div class="footer__block footer__block--menu" ><p class="bold">Account</p><ul class="v-stack gap-3" role="list"><li> 5173 <a href="/" class="inline-block link-faded break-all">Home</a> 5174 </li><li> 5175 <a href="https://myfirmtech.com/cart" class="inline-block link-faded break-all">Shopping Cart</a> 5176 </li><li> 5177 <a href="https://myfirmtech.com/account/register" class="inline-block link-faded break-all">Register</a> 5178 </li><li> 5179 <a href="https://myfirmtech.com/account/login" class="inline-block link-faded break-all">My Account</a> 5180 </li><li> 5181 <a href="/pages/affiliate" class="inline-block link-faded break-all">Become An Affiliate</a> 5182 </li><li> 5183 <a href="/pages/wholesale" class="inline-block link-faded break-all">Wholesale</a> 5184 </li><li> 5185 <a href="https://firmtech.customerdesk.io/" class="inline-block link-faded break-all">Help Center</a> 5186 </li></ul> 5187 </div><div class="footer__block footer__block--menu" ><p class="bold">Policies</p><ul class="v-stack gap-3" role="list"><li> 5188 <a href="/pages/privacy-policy" class="inline-block link-faded break-all">Privacy Policy</a> 5189 </li><li> 5190 <a href="/pages/returns" class="inline-block link-faded break-all">Returns Policy</a> 5191 </li><li> 5192 <a href="/pages/terms-conditions" class="inline-block link-faded break-all">Terms & Conditions</a> 5193 </li></ul> 5194 </div></div><div class="footer__aside empty:hidden"><div class="footer__aside-top"><ul class="social-media " role="list"><li> 5195 <a href="https://x.com/myfirmtech" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Twitter"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-twitter" viewBox="0 0 24 24"> 5196 <path d="M16.94 4h2.715l-5.93 6.777L20.7 20h-5.462l-4.278-5.593L6.065 20H3.35l6.342-7.25L3 4h5.6l3.868 5.113L16.94 4Zm-.952 14.375h1.504L7.784 5.54H6.17l9.818 12.836Z" fill="currentColor"/> 5197 </svg></a> 5198 </li><li> 5199 <a href="https://www.instagram.com/myfirmtech/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-instagram" viewBox="0 0 24 24"> 5200 <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.
5200047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/> 5201 </svg></a> 5202 </li><li> 5203 <a href="https://www.pinterest.com/MyFirmTech/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Pinterest"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-pinterest" viewBox="0 0 24 24"> 5204 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.765 2.401c3.59-.054 5.837 1.4 6.895 3.95.349.842.722 2.39.442 3.675-.112.512-.144 1.048-.295 1.53-.308.983-.708 1.853-1.238 2.603-.72 1.02-1.81 1.706-3.182 2.052-1.212.305-2.328-.152-2.976-.643-.206-.156-.483-.36-.56-.643h-.029c-.046.515-.244 1.062-.383 1.531-.193.65-.23 1.321-.472 1.929a12.345 12.345 0 0 1-.942 1.868c-.184.302-.692 1.335-1.061 1.347-.04-.078-.057-.108-.06-.245-.118-.19-.035-.508-.087-.766-.082-.4-.145-1.123-.06-1.53v-.643c.096-.442.092-.894.207-1.317.25-.92.39-1.895.648-2.848.249-.915.477-1.916.678-2.847.045-.21-.21-.815-.265-1.041-.174-.713-.042-1.7.176-2.236.275-.674 1.08-1.703 2.122-1.439.838.212 1.371 1.118 1.09 2.266-.295 1.205-.677 2.284-.943 3.49-.068.311.05.641.118.827.248.672 1 1.324 2.004 1.072 1.52-.383 2.193-1.76 2.652-3.246.124-.402.109-.781.206-1.225.204-.935.118-2.331-.177-3.061-.472-1.17-1.353-1.92-2.563-2.328L12.707 4.3c-.56-.128-1.626.064-2.004.183-1.69.535-2.737 1.427-3.388 3.032-.222.546-.344 1.1-.383 1.868l-.03.276c.13.686.144 1.14.413 1.653.132.252.447.451.5.765.032.185-.104.464-.147.613-.065.224-.041.48-.147.673-.192.349-.714.087-.943-.061-1.192-.77-2.175-2.995-1.62-5.144.085-.332.09-.62.206-.919.723-1.844 1.802-2.978 3.359-3.95.583-.364 1.37-.544 2.092-.734l1.149-.154Z" fill="currentColor"/> 5205 </svg></a> 5206 </li><li> 5207 <a href="https://www.youtube.com/channel/UC46J3ibyYyQNPBr5T58DpFg" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on YouTube"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-youtube" viewBox="0 0 24 24"> 5208 <path fill-rule="evenodd" clip-rule="evenodd" d="M20.44 5.243c.929.244 1.66.963 1.909 1.876.451 1.654.451 5.106.451 5.106s0 3.452-.451 5.106a2.681 2.681 0 0 1-1.91 1.876c-1.684.443-8.439.443-8.439.443s-6.754 0-8.439-.443a2.682 2.682 0 0 1-1.91-1.876c-.45-1.654-.45-5.106-.45-5.106s0-3.452.45-5.106a2.681 2.681 0 0 1 1.91-1.876c1.685-.443 8.44-.443 8.44-.443s6.754 0 8.438.443Zm-5.004 6.982L9.792 15.36V9.091l5.646 3.134Z" fill="currentColor"/> 5209 </svg></a> 5210 </li><li> 5211 <a href="https://www.linkedin.com/company/myfirmtech/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on LinkedIn"><svg role="presentation" focusable="false" width="27" height="27" class="icon icon-linkedin" viewBox="0 0 24 24"> 5212 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.349 5.478a1.875 1.875 0 1 0-3.749 0 1.875 1.875 0 1 0 3.749 0ZM7.092 19.2H3.857V8.78h3.235V19.2ZM12.22 8.78H9.121V19.2h3.228v-5.154c0-1.36.257-2.676 1.94-2.676 1.658 0 1.68 1.554 1.68 2.763V19.2H19.2v-5.715c0-2.806-.605-4.963-3.877-4.963-1.573 0-2.629.863-3.06 1.683h-.044V8.78Z" fill="currentColor"/> 5213 </svg></a> 5214 </li></ul><div class="h-stack gap-6"><link rel="stylesheet" href="//myfirmtech.com/cdn/shop/t/24/assets/country-flags.css?v=133253664215562886901772071395" media="print" onload="this.media='all'; this.onload = null"><div class="relative"> 5215 <button type="button" class="text-with-icon gap-2.5 group" aria-controls="popover-localization-form-country--sections--17107269550230__footer" aria-expanded="false"> 5216 <div class="h-stack gap-2"><span class="country-flags country-flags--US"></span><span class="bold text-sm">United States (USD $)</span> 5217 </div><svg role="presentation" focusable="false" width="10" height="7" class="icon icon-chevron-bottom" viewBox="0 0 10 7"> 5218 <path d="m1 1 4 4 4-4" fill="none" stroke="currentColor" stroke-width="2"></path> 5219 </svg></button> 5220 5221 <x-popover id="popover-localization-form-country--sections--17107269550230__footer" initial-focus="[aria-selected='true']" anchor-horizontal="end" anchor-vertical="start" class="popover"> 5222 <p class="h5" slot="title">Country</p><form method="post" action="/localization" id="localization-form-country--sections--17107269550230__footer" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/" /><x-listbox class="popover-listbox popover-listbox--sm" role="listbox"><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AF" >
5223 <span class="country-flags country-flags--AF"></span> 5224 <span>Afghanistan (USD $)</span> 5225 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AX" > 5226 <span class="country-flags country-flags--AX"></span> 5227 <span>Ã land Islands (USD $)</span> 5228 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AL" > 5229 <span class="country-flags country-flags--AL"></span> 5230 <span>Albania (USD $)</span> 5231 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DZ" > 5232 <span class="country-flags country-flags--DZ"></span> 5233 <span>Algeria (USD $)</span> 5234 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AD" > 5235 <span class="country-flags country-flags--AD"></span> 5236 <span>Andorra (USD $)</span> 5237 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AO" > 5238 <span class="country-flags country-flags--AO"></span> 5239 <span>Angola (USD $)</span> 5240 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AI" > 5241 <span class="country-flags country-flags--AI"></span> 5242 <span>Anguilla (USD $)</span> 5243 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AG" > 5244 <span class="country-flags country-flags--AG"></span> 5245 <span>Antigua & Barbuda (USD $)</span> 5246 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AR" > 5247 <span class="country-flags country-flags--AR"></span> 5248 <span>Argentina (USD $)</span> 5249 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AM" > 5250 <span class="country-flags country-flags--AM"></span> 5251 <span>Armenia (USD $)</span> 5252 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AW" > 5253 <span class="country-flags country-flags--AW"></span> 5254 <span>Aruba (USD $)</span> 5255 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AC" > 5256 <span class="country-flags country-flags--AC"></span> 5257 <span>Ascension Island (USD $)</span> 5258 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AU" > 5259 <span class="country-flags country-flags--AU"></span> 5260 <span>Australia (USD $)</span> 5261 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AT" > 5262 <span class="country-flags country-flags--AT"></span> 5263 <span>Austria (USD $)</span> 5264 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AZ" > 5265 <span class="country-flags country-flags--AZ"></span> 5266 <span>Azerbaijan (USD $)</span> 5267 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BS" > 5268 <span class="country-flags country-flags--BS"></span> 5269 <span>Bahamas (USD $)</span> 5270 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BH" > 5271 <span class="country-flags country-flags--BH"></span> 5272 <span>Bahrain (USD $)</span> 5273 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BD" >
5274 <span class="country-flags country-flags--BD"></span> 5275 <span>Bangladesh (USD $)</span> 5276 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BB" > 5277 <span class="country-flags country-flags--BB"></span> 5278 <span>Barbados (USD $)</span> 5279 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BY" > 5280 <span class="country-flags country-flags--BY"></span> 5281 <span>Belarus (USD $)</span> 5282 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BE" > 5283 <span class="country-flags country-flags--BE"></span> 5284 <span>Belgium (USD $)</span> 5285 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BZ" > 5286 <span class="country-flags country-flags--BZ"></span> 5287 <span>Belize (USD $)</span> 5288 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BJ" > 5289 <span class="country-flags country-flags--BJ"></span> 5290 <span>Benin (USD $)</span> 5291 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BM" > 5292 <span class="country-flags country-flags--BM"></span> 5293 <span>Bermuda (USD $)</span> 5294 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BT" > 5295 <span class="country-flags country-flags--BT"></span> 5296 <span>Bhutan (USD $)</span> 5297 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BO" > 5298 <span class="country-flags country-flags--BO"></span> 5299 <span>Bolivia (USD $)</span> 5300 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BA" > 5301 <span class="country-flags country-flags--BA"></span> 5302 <span>Bosnia & Herzegovina (USD $)</span> 5303 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BW" > 5304 <span class="country-flags country-flags--BW"></span> 5305 <span>Botswana (USD $)</span> 5306 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BR" > 5307 <span class="country-flags country-flags--BR"></span> 5308 <span>Brazil (USD $)</span> 5309 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IO" > 5310 <span class="country-flags country-flags--IO"></span> 5311 <span>British Indian Ocean Territory (USD $)</span> 5312 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VG" > 5313 <span class="country-flags country-flags--VG"></span> 5314 <span>British Virgin Islands (USD $)</span> 5315 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BN" > 5316 <span class="country-flags country-flags--BN"></span> 5317 <span>Brunei (USD $)</span> 5318 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BG" > 5319 <span class="country-flags country-flags--BG"></span> 5320 <span>Bulgaria (USD $)</span> 5321 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BF" > 5322 <span class="country-flags country-flags--BF"></span> 5323 <span>Burkina Faso (USD $)</span> 5324 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BI" >
5325 <span class="country-flags country-flags--BI"></span> 5326 <span>Burundi (USD $)</span> 5327 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KH" > 5328 <span class="country-flags country-flags--KH"></span> 5329 <span>Cambodia (USD $)</span> 5330 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CM" > 5331 <span class="country-flags country-flags--CM"></span> 5332 <span>Cameroon (USD $)</span> 5333 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CA" > 5334 <span class="country-flags country-flags--CA"></span> 5335 <span>Canada (USD $)</span> 5336 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CV" > 5337 <span class="country-flags country-flags--CV"></span> 5338 <span>Cape Verde (USD $)</span> 5339 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BQ" > 5340 <span class="country-flags country-flags--BQ"></span> 5341 <span>Caribbean Netherlands (USD $)</span> 5342 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KY" > 5343 <span class="country-flags country-flags--KY"></span> 5344 <span>Cayman Islands (USD $)</span> 5345 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CF" > 5346 <span class="country-flags country-flags--CF"></span> 5347 <span>Central African Republic (USD $)</span> 5348 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TD" > 5349 <span class="country-flags country-flags--TD"></span> 5350 <span>Chad (USD $)</span> 5351 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CL" > 5352 <span class="country-flags country-flags--CL"></span> 5353 <span>Chile (USD $)</span> 5354 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CN" > 5355 <span class="country-flags country-flags--CN"></span> 5356 <span>China (USD $)</span> 5357 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CX" > 5358 <span class="country-flags country-flags--CX"></span> 5359 <span>Christmas Island (USD $)</span> 5360 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CC" > 5361 <span class="country-flags country-flags--CC"></span> 5362 <span>Cocos (Keeling) Islands (USD $)</span> 5363 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CO" > 5364 <span class="country-flags country-flags--CO"></span> 5365 <span>Colombia (USD $)</span> 5366 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KM" > 5367 <span class="country-flags country-flags--KM"></span> 5368 <span>Comoros (USD $)</span> 5369 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CG" > 5370 <span class="country-flags country-flags--CG"></span> 5371 <span>Congo - Brazzaville (USD $)</span> 5372 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CD" > 5373 <span class="country-flags country-flags--CD"></span> 5374 <span>Congo - Kinshasa (USD $)</span> 5375 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CK" >
5376 <span class="country-flags country-flags--CK"></span> 5377 <span>Cook Islands (USD $)</span> 5378 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CR" > 5379 <span class="country-flags country-flags--CR"></span> 5380 <span>Costa Rica (USD $)</span> 5381 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CI" > 5382 <span class="country-flags country-flags--CI"></span> 5383 <span>Côte dâIvoire (USD $)</span> 5384 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HR" > 5385 <span class="country-flags country-flags--HR"></span> 5386 <span>Croatia (USD $)</span> 5387 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CW" > 5388 <span class="country-flags country-flags--CW"></span> 5389 <span>Curaçao (USD $)</span> 5390 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CY" > 5391 <span class="country-flags country-flags--CY"></span> 5392 <span>Cyprus (USD $)</span> 5393 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CZ" > 5394 <span class="country-flags country-flags--CZ"></span> 5395 <span>Czechia (USD $)</span> 5396 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DK" > 5397 <span class="country-flags country-flags--DK"></span> 5398 <span>Denmark (USD $)</span> 5399 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DJ" > 5400 <span class="country-flags country-flags--DJ"></span> 5401 <span>Djibouti (USD $)</span> 5402 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DM" > 5403 <span class="country-flags country-flags--DM"></span> 5404 <span>Dominica (USD $)</span> 5405 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DO" > 5406 <span class="country-flags country-flags--DO"></span> 5407 <span>Dominican Republic (USD $)</span> 5408 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EC" > 5409 <span class="country-flags country-flags--EC"></span> 5410 <span>Ecuador (USD $)</span> 5411 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EG" > 5412 <span class="country-flags country-flags--EG"></span> 5413 <span>Egypt (USD $)</span> 5414 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SV" > 5415 <span class="country-flags country-flags--SV"></span> 5416 <span>El Salvador (USD $)</span> 5417 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GQ" > 5418 <span class="country-flags country-flags--GQ"></span> 5419 <span>Equatorial Guinea (USD $)</span> 5420 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ER" > 5421 <span class="country-flags country-flags--ER"></span> 5422 <span>Eritrea (USD $)</span> 5423 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EE" > 5424 <span class="country-flags country-flags--EE"></span> 5425 <span>Estonia (USD $)</span> 5426 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SZ" >
5427 <span class="country-flags country-flags--SZ"></span> 5428 <span>Eswatini (USD $)</span> 5429 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ET" > 5430 <span class="country-flags country-flags--ET"></span> 5431 <span>Ethiopia (USD $)</span> 5432 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FK" > 5433 <span class="country-flags country-flags--FK"></span> 5434 <span>Falkland Islands (USD $)</span> 5435 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FO" > 5436 <span class="country-flags country-flags--FO"></span> 5437 <span>Faroe Islands (USD $)</span> 5438 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FJ" > 5439 <span class="country-flags country-flags--FJ"></span> 5440 <span>Fiji (USD $)</span> 5441 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FI" > 5442 <span class="country-flags country-flags--FI"></span> 5443 <span>Finland (USD $)</span> 5444 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="FR" > 5445 <span class="country-flags country-flags--FR"></span> 5446 <span>France (USD $)</span> 5447 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GF" > 5448 <span class="country-flags country-flags--GF"></span> 5449 <span>French Guiana (USD $)</span> 5450 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PF" > 5451 <span class="country-flags country-flags--PF"></span> 5452 <span>French Polynesia (USD $)</span> 5453 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TF" > 5454 <span class="country-flags country-flags--TF"></span> 5455 <span>French Southern Territories (USD $)</span> 5456 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GA" > 5457 <span class="country-flags country-flags--GA"></span> 5458 <span>Gabon (USD $)</span> 5459 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GM" > 5460 <span class="country-flags country-flags--GM"></span> 5461 <span>Gambia (USD $)</span> 5462 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GE" > 5463 <span class="country-flags country-flags--GE"></span> 5464 <span>Georgia (USD $)</span> 5465 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="DE" > 5466 <span class="country-flags country-flags--DE"></span> 5467 <span>Germany (USD $)</span> 5468 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GH" > 5469 <span class="country-flags country-flags--GH"></span> 5470 <span>Ghana (USD $)</span> 5471 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GI" > 5472 <span class="country-flags country-flags--GI"></span> 5473 <span>Gibraltar (USD $)</span> 5474 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GR" > 5475 <span class="country-flags country-flags--GR"></span> 5476 <span>Greece (USD $)</span> 5477 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GL" >
5478 <span class="country-flags country-flags--GL"></span> 5479 <span>Greenland (USD $)</span> 5480 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GD" > 5481 <span class="country-flags country-flags--GD"></span> 5482 <span>Grenada (USD $)</span> 5483 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GP" > 5484 <span class="country-flags country-flags--GP"></span> 5485 <span>Guadeloupe (USD $)</span> 5486 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GT" > 5487 <span class="country-flags country-flags--GT"></span> 5488 <span>Guatemala (USD $)</span> 5489 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GG" > 5490 <span class="country-flags country-flags--GG"></span> 5491 <span>Guernsey (USD $)</span> 5492 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GN" > 5493 <span class="country-flags country-flags--GN"></span> 5494 <span>Guinea (USD $)</span> 5495 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GW" > 5496 <span class="country-flags country-flags--GW"></span> 5497 <span>Guinea-Bissau (USD $)</span> 5498 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GY" > 5499 <span class="country-flags country-flags--GY"></span> 5500 <span>Guyana (USD $)</span> 5501 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HT" > 5502 <span class="country-flags country-flags--HT"></span> 5503 <span>Haiti (USD $)</span> 5504 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HN" > 5505 <span class="country-flags country-flags--HN"></span> 5506 <span>Honduras (USD $)</span> 5507 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HK" > 5508 <span class="country-flags country-flags--HK"></span> 5509 <span>Hong Kong SAR (USD $)</span> 5510 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="HU" > 5511 <span class="country-flags country-flags--HU"></span> 5512 <span>Hungary (USD $)</span> 5513 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IS" > 5514 <span class="country-flags country-flags--IS"></span> 5515 <span>Iceland (USD $)</span> 5516 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IN" > 5517 <span class="country-flags country-flags--IN"></span> 5518 <span>India (USD $)</span> 5519 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ID" > 5520 <span class="country-flags country-flags--ID"></span> 5521 <span>Indonesia (USD $)</span> 5522 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IQ" > 5523 <span class="country-flags country-flags--IQ"></span> 5524 <span>Iraq (USD $)</span> 5525 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IE" > 5526 <span class="country-flags country-flags--IE"></span> 5527 <span>Ireland (USD $)</span> 5528 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IM" >
5529 <span class="country-flags country-flags--IM"></span> 5530 <span>Isle of Man (USD $)</span> 5531 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IL" > 5532 <span class="country-flags country-flags--IL"></span> 5533 <span>Israel (USD $)</span> 5534 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="IT" > 5535 <span class="country-flags country-flags--IT"></span> 5536 <span>Italy (USD $)</span> 5537 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JM" > 5538 <span class="country-flags country-flags--JM"></span> 5539 <span>Jamaica (USD $)</span> 5540 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JP" > 5541 <span class="country-flags country-flags--JP"></span> 5542 <span>Japan (USD $)</span> 5543 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JE" > 5544 <span class="country-flags country-flags--JE"></span> 5545 <span>Jersey (USD $)</span> 5546 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="JO" > 5547 <span class="country-flags country-flags--JO"></span> 5548 <span>Jordan (USD $)</span> 5549 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KZ" > 5550 <span class="country-flags country-flags--KZ"></span> 5551 <span>Kazakhstan (USD $)</span> 5552 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KE" > 5553 <span class="country-flags country-flags--KE"></span> 5554 <span>Kenya (USD $)</span> 5555 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KI" > 5556 <span class="country-flags country-flags--KI"></span> 5557 <span>Kiribati (USD $)</span> 5558 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="XK" > 5559 <span class="country-flags country-flags--XK"></span> 5560 <span>Kosovo (USD $)</span> 5561 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KW" > 5562 <span class="country-flags country-flags--KW"></span> 5563 <span>Kuwait (USD $)</span> 5564 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KG" > 5565 <span class="country-flags country-flags--KG"></span> 5566 <span>Kyrgyzstan (USD $)</span> 5567 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LA" > 5568 <span class="country-flags country-flags--LA"></span> 5569 <span>Laos (USD $)</span> 5570 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LV" > 5571 <span class="country-flags country-flags--LV"></span> 5572 <span>Latvia (USD $)</span> 5573 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LB" > 5574 <span class="country-flags country-flags--LB"></span> 5575 <span>Lebanon (USD $)</span> 5576 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LS" > 5577 <span class="country-flags country-flags--LS"></span> 5578 <span>Lesotho (USD $)</span> 5579 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LR" > 5580 <span class="country-flags country-flags--LR"></span>
5581 <span>Liberia (USD $)</span> 5582 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LY" > 5583 <span class="country-flags country-flags--LY"></span> 5584 <span>Libya (USD $)</span> 5585 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LI" > 5586 <span class="country-flags country-flags--LI"></span> 5587 <span>Liechtenstein (USD $)</span> 5588 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LT" > 5589 <span class="country-flags country-flags--LT"></span> 5590 <span>Lithuania (USD $)</span> 5591 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LU" > 5592 <span class="country-flags country-flags--LU"></span> 5593 <span>Luxembourg (USD $)</span> 5594 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MO" > 5595 <span class="country-flags country-flags--MO"></span> 5596 <span>Macao SAR (USD $)</span> 5597 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MG" > 5598 <span class="country-flags country-flags--MG"></span> 5599 <span>Madagascar (USD $)</span> 5600 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MW" > 5601 <span class="country-flags country-flags--MW"></span> 5602 <span>Malawi (USD $)</span> 5603 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MY" > 5604 <span class="country-flags country-flags--MY"></span> 5605 <span>Malaysia (USD $)</span> 5606 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MV" > 5607 <span class="country-flags country-flags--MV"></span> 5608 <span>Maldives (USD $)</span> 5609 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ML" > 5610 <span class="country-flags country-flags--ML"></span> 5611 <span>Mali (USD $)</span> 5612 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MT" > 5613 <span class="country-flags country-flags--MT"></span> 5614 <span>Malta (USD $)</span> 5615 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MQ" > 5616 <span class="country-flags country-flags--MQ"></span> 5617 <span>Martinique (USD $)</span> 5618 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MR" > 5619 <span class="country-flags country-flags--MR"></span> 5620 <span>Mauritania (USD $)</span> 5621 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MU" > 5622 <span class="country-flags country-flags--MU"></span> 5623 <span>Mauritius (USD $)</span> 5624 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YT" > 5625 <span class="country-flags country-flags--YT"></span> 5626 <span>Mayotte (USD $)</span> 5627 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MX" > 5628 <span class="country-flags country-flags--MX"></span> 5629 <span>Mexico (USD $)</span> 5630 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MD" > 5631 <span class="country-flags country-flags--MD"></span>
5632 <span>Moldova (USD $)</span> 5633 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MC" > 5634 <span class="country-flags country-flags--MC"></span> 5635 <span>Monaco (USD $)</span> 5636 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MN" > 5637 <span class="country-flags country-flags--MN"></span> 5638 <span>Mongolia (USD $)</span> 5639 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ME" > 5640 <span class="country-flags country-flags--ME"></span> 5641 <span>Montenegro (USD $)</span> 5642 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MS" > 5643 <span class="country-flags country-flags--MS"></span> 5644 <span>Montserrat (USD $)</span> 5645 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MA" > 5646 <span class="country-flags country-flags--MA"></span> 5647 <span>Morocco (USD $)</span> 5648 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MZ" > 5649 <span class="country-flags country-flags--MZ"></span> 5650 <span>Mozambique (USD $)</span> 5651 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MM" > 5652 <span class="country-flags country-flags--MM"></span> 5653 <span>Myanmar (Burma) (USD $)</span> 5654 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NA" > 5655 <span class="country-flags country-flags--NA"></span> 5656 <span>Namibia (USD $)</span> 5657 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NR" > 5658 <span class="country-flags country-flags--NR"></span> 5659 <span>Nauru (USD $)</span> 5660 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NP" > 5661 <span class="country-flags country-flags--NP"></span> 5662 <span>Nepal (USD $)</span> 5663 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NL" > 5664 <span class="country-flags country-flags--NL"></span> 5665 <span>Netherlands (USD $)</span> 5666 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NC" > 5667 <span class="country-flags country-flags--NC"></span> 5668 <span>New Caledonia (USD $)</span> 5669 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NZ" > 5670 <span class="country-flags country-flags--NZ"></span> 5671 <span>New Zealand (USD $)</span> 5672 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NI" > 5673 <span class="country-flags country-flags--NI"></span> 5674 <span>Nicaragua (USD $)</span> 5675 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NE" > 5676 <span class="country-flags country-flags--NE"></span> 5677 <span>Niger (USD $)</span> 5678 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NG" > 5679 <span class="country-flags country-flags--NG"></span> 5680 <span>Nigeria (USD $)</span> 5681 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NU" > 5682 <span class="country-flags country-flags--NU"></span>
5683 <span>Niue (USD $)</span> 5684 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NF" > 5685 <span class="country-flags country-flags--NF"></span> 5686 <span>Norfolk Island (USD $)</span> 5687 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MK" > 5688 <span class="country-flags country-flags--MK"></span> 5689 <span>North Macedonia (USD $)</span> 5690 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="NO" > 5691 <span class="country-flags country-flags--NO"></span> 5692 <span>Norway (USD $)</span> 5693 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="OM" > 5694 <span class="country-flags country-flags--OM"></span> 5695 <span>Oman (USD $)</span> 5696 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PK" > 5697 <span class="country-flags country-flags--PK"></span> 5698 <span>Pakistan (USD $)</span> 5699 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PS" > 5700 <span class="country-flags country-flags--PS"></span> 5701 <span>Palestinian Territories (USD $)</span> 5702 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PA" > 5703 <span class="country-flags country-flags--PA"></span> 5704 <span>Panama (USD $)</span> 5705 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PG" > 5706 <span class="country-flags country-flags--PG"></span> 5707 <span>Papua New Guinea (USD $)</span> 5708 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PY" > 5709 <span class="country-flags country-flags--PY"></span> 5710 <span>Paraguay (USD $)</span> 5711 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PE" > 5712 <span class="country-flags country-flags--PE"></span> 5713 <span>Peru (USD $)</span> 5714 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PH" > 5715 <span class="country-flags country-flags--PH"></span> 5716 <span>Philippines (USD $)</span> 5717 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PN" > 5718 <span class="country-flags country-flags--PN"></span> 5719 <span>Pitcairn Islands (USD $)</span> 5720 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PL" > 5721 <span class="country-flags country-flags--PL"></span> 5722 <span>Poland (USD $)</span> 5723 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PT" > 5724 <span class="country-flags country-flags--PT"></span> 5725 <span>Portugal (USD $)</span> 5726 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="QA" > 5727 <span class="country-flags country-flags--QA"></span> 5728 <span>Qatar (USD $)</span> 5729 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RE" > 5730 <span class="country-flags country-flags--RE"></span> 5731 <span>Réunion (USD $)</span> 5732 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RO" > 5733 <span class="country-flags country-flags--RO"></span>
5734 <span>Romania (USD $)</span> 5735 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RU" > 5736 <span class="country-flags country-flags--RU"></span> 5737 <span>Russia (USD $)</span> 5738 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RW" > 5739 <span class="country-flags country-flags--RW"></span> 5740 <span>Rwanda (USD $)</span> 5741 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WS" > 5742 <span class="country-flags country-flags--WS"></span> 5743 <span>Samoa (USD $)</span> 5744 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SM" > 5745 <span class="country-flags country-flags--SM"></span> 5746 <span>San Marino (USD $)</span> 5747 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ST" > 5748 <span class="country-flags country-flags--ST"></span> 5749 <span>São Tomé & PrÃncipe (USD $)</span> 5750 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SA" > 5751 <span class="country-flags country-flags--SA"></span> 5752 <span>Saudi Arabia (USD $)</span> 5753 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SN" > 5754 <span class="country-flags country-flags--SN"></span> 5755 <span>Senegal (USD $)</span> 5756 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="RS" > 5757 <span class="country-flags country-flags--RS"></span> 5758 <span>Serbia (USD $)</span> 5759 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SC" > 5760 <span class="country-flags country-flags--SC"></span> 5761 <span>Seychelles (USD $)</span> 5762 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SL" > 5763 <span class="country-flags country-flags--SL"></span> 5764 <span>Sierra Leone (USD $)</span> 5765 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SG" > 5766 <span class="country-flags country-flags--SG"></span> 5767 <span>Singapore (USD $)</span> 5768 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SX" > 5769 <span class="country-flags country-flags--SX"></span> 5770 <span>Sint Maarten (USD $)</span> 5771 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SK" > 5772 <span class="country-flags country-flags--SK"></span> 5773 <span>Slovakia (USD $)</span> 5774 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SI" > 5775 <span class="country-flags country-flags--SI"></span> 5776 <span>Slovenia (USD $)</span> 5777 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SB" > 5778 <span class="country-flags country-flags--SB"></span> 5779 <span>Solomon Islands (USD $)</span> 5780 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SO" > 5781 <span class="country-flags country-flags--SO"></span> 5782 <span>Somalia (USD $)</span> 5783 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZA" > 5784 <span class="country-flags country-flags--ZA"></span>
5785 <span>South Africa (USD $)</span> 5786 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="GS" > 5787 <span class="country-flags country-flags--GS"></span> 5788 <span>South Georgia & South Sandwich Islands (USD $)</span> 5789 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KR" > 5790 <span class="country-flags country-flags--KR"></span> 5791 <span>South Korea (USD $)</span> 5792 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SS" > 5793 <span class="country-flags country-flags--SS"></span> 5794 <span>South Sudan (USD $)</span> 5795 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ES" > 5796 <span class="country-flags country-flags--ES"></span> 5797 <span>Spain (USD $)</span> 5798 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LK" > 5799 <span class="country-flags country-flags--LK"></span> 5800 <span>Sri Lanka (USD $)</span> 5801 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="BL" > 5802 <span class="country-flags country-flags--BL"></span> 5803 <span>St. Barthélemy (USD $)</span> 5804 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SH" > 5805 <span class="country-flags country-flags--SH"></span> 5806 <span>St. Helena (USD $)</span> 5807 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="KN" > 5808 <span class="country-flags country-flags--KN"></span> 5809 <span>St. Kitts & Nevis (USD $)</span> 5810 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="LC" > 5811 <span class="country-flags country-flags--LC"></span> 5812 <span>St. Lucia (USD $)</span> 5813 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="MF" > 5814 <span class="country-flags country-flags--MF"></span> 5815 <span>St. Martin (USD $)</span> 5816 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="PM" > 5817 <span class="country-flags country-flags--PM"></span> 5818 <span>St. Pierre & Miquelon (USD $)</span> 5819 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VC" > 5820 <span class="country-flags country-flags--VC"></span> 5821 <span>St. Vincent & Grenadines (USD $)</span> 5822 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SD" > 5823 <span class="country-flags country-flags--SD"></span> 5824 <span>Sudan (USD $)</span> 5825 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SR" > 5826 <span class="country-flags country-flags--SR"></span> 5827 <span>Suriname (USD $)</span> 5828 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SJ" > 5829 <span class="country-flags country-flags--SJ"></span> 5830 <span>Svalbard & Jan Mayen (USD $)</span> 5831 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="SE" > 5832 <span class="country-flags country-flags--SE"></span> 5833 <span>Sweden (USD $)</span> 5834 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="CH" >
5835 <span class="country-flags country-flags--CH"></span> 5836 <span>Switzerland (USD $)</span> 5837 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TW" > 5838 <span class="country-flags country-flags--TW"></span> 5839 <span>Taiwan (USD $)</span> 5840 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TJ" > 5841 <span class="country-flags country-flags--TJ"></span> 5842 <span>Tajikistan (USD $)</span> 5843 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TZ" > 5844 <span class="country-flags country-flags--TZ"></span> 5845 <span>Tanzania (USD $)</span> 5846 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TH" > 5847 <span class="country-flags country-flags--TH"></span> 5848 <span>Thailand (USD $)</span> 5849 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TL" > 5850 <span class="country-flags country-flags--TL"></span> 5851 <span>Timor-Leste (USD $)</span> 5852 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TG" > 5853 <span class="country-flags country-flags--TG"></span> 5854 <span>Togo (USD $)</span> 5855 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TK" > 5856 <span class="country-flags country-flags--TK"></span> 5857 <span>Tokelau (USD $)</span> 5858 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TO" > 5859 <span class="country-flags country-flags--TO"></span> 5860 <span>Tonga (USD $)</span> 5861 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TT" > 5862 <span class="country-flags country-flags--TT"></span> 5863 <span>Trinidad & Tobago (USD $)</span> 5864 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TA" > 5865 <span class="country-flags country-flags--TA"></span> 5866 <span>Tristan da Cunha (USD $)</span> 5867 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TN" > 5868 <span class="country-flags country-flags--TN"></span> 5869 <span>Tunisia (USD $)</span> 5870 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TR" > 5871 <span class="country-flags country-flags--TR"></span> 5872 <span>Türkiye (USD $)</span> 5873 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TM" > 5874 <span class="country-flags country-flags--TM"></span> 5875 <span>Turkmenistan (USD $)</span> 5876 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TC" > 5877 <span class="country-flags country-flags--TC"></span> 5878 <span>Turks & Caicos Islands (USD $)</span> 5879 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="TV" > 5880 <span class="country-flags country-flags--TV"></span> 5881 <span>Tuvalu (USD $)</span> 5882 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UM" > 5883 <span class="country-flags country-flags--UM"></span> 5884 <span>U.S. Outlying Islands (USD $)</span> 5885 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UG" >
5886 <span class="country-flags country-flags--UG"></span> 5887 <span>Uganda (USD $)</span> 5888 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UA" > 5889 <span class="country-flags country-flags--UA"></span> 5890 <span>Ukraine (USD $)</span> 5891 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="AE" > 5892 <span class="country-flags country-flags--AE"></span> 5893 <span>United Arab Emirates (USD $)</span> 5894 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="US" aria-selected="true"> 5895 <span class="country-flags country-flags--US"></span> 5896 <span>United States (USD $)</span> 5897 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UY" > 5898 <span class="country-flags country-flags--UY"></span> 5899 <span>Uruguay (USD $)</span> 5900 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="UZ" > 5901 <span class="country-flags country-flags--UZ"></span> 5902 <span>Uzbekistan (USD $)</span> 5903 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VU" > 5904 <span class="country-flags country-flags--VU"></span> 5905 <span>Vanuatu (USD $)</span> 5906 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VA" > 5907 <span class="country-flags country-flags--VA"></span> 5908 <span>Vatican City (USD $)</span> 5909 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VE" > 5910 <span class="country-flags country-flags--VE"></span> 5911 <span>Venezuela (USD $)</span> 5912 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="VN" > 5913 <span class="country-flags country-flags--VN"></span> 5914 <span>Vietnam (USD $)</span> 5915 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="WF" > 5916 <span class="country-flags country-flags--WF"></span> 5917 <span>Wallis & Futuna (USD $)</span> 5918 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="EH" > 5919 <span class="country-flags country-flags--EH"></span> 5920 <span>Western Sahara (USD $)</span> 5921 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="YE" > 5922 <span class="country-flags country-flags--YE"></span> 5923 <span>Yemen (USD $)</span> 5924 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZM" > 5925 <span class="country-flags country-flags--ZM"></span> 5926 <span>Zambia (USD $)</span> 5927 </button><button type="submit" class="popover-listbox__option" name="country_code" role="option" value="ZW" > 5928 <span class="country-flags country-flags--ZW"></span> 5929 <span>Zimbabwe (USD $)</span> 5930 </button></x-listbox></form></x-popover> 5931 </div></div></div><div class="footer__aside-bottom"><p class="footer__copyright text-sm text-subdued">© 2026, FirmTech Inc. <a href="https://contestudios.com" target="_blank" rel="noopener">Powered by Conte Studios</a></p></p> 5932 </div> 5933 </div> 5934 </div> 5935 </div> 5936</div> 5937 5938<style> #shopify-section-sections--17107269550230__footer .footer {background: linear-gradient(85deg, #780d0f, #261329);} #shopify-section-sections--17107269550230__footer #input-sections--17107269550230__footer--contactemail {background-color: #ffffff; color: #000000; border: 1px solid #ccc; padding: 10px; border-radius: 4px;} #shopify-section-sections--17107269550230__footer .self-submit-button button {background-color: #ffffff; color: #000000; border: 1px solid #000000; border-radius: 50%;} #shopify-section-sections--17107269550230__footer .self-submit-button button svg {stroke: #000000;} #shopify-section-sections--17107269550230__footer .floating-label {color: #000000;} </style></footer> 5939<!-- END sections: footer-group --></main> 5940 5941 5942 5943 5944<!-- BEGIN PLERDY CODE -->
5945<script type="text/javascript" defer data-plerdy_code="1"> 5946var _protocol = document.location.protocol === "https:" ? "https://" : "http://"; 5947var _site_hash_code = "b39a811dea955764a130be3085085b2d"; 5948var _suid = 55488; 5949var plerdyScript = document.createElement("script"); 5950plerdyScript.setAttribute("defer", ""); 5951plerdyScript.dataset.plerdymainscript = "plerdymainscript"; 5952plerdyScript.src = "https://a.plerdy.com/public/js/click/main.js?v=" + Math.random(); 5953var plerdymainscript = document.querySelector("[data-plerdymainscript='plerdymainscript']"); 5954if (plerdymainscript) { 5955 plerdymainscript.parentNode.removeChild(plerdymainscript); 5956} 5957try { 5958 document.head.appendChild(plerdyScript); 5959} catch (t) { 5960 console.log(t, "unable to add script tag"); 5961} 5962</script>
5962 5963<!-- END PLERDY CODE --> 5964<!-- END PLERDY CODE --> 5965 5966 5967 5968
5968<script> 5969 window.Samita = window.Samita || {} 5970 Samita.Wholesale = Samita.Wholesale || {} 5971 Samita.Wholesale.overrideOptions = Samita.Wholesale.overrideOptions || {} 5972 Samita.Wholesale.overrideOptions.selectors = Samita.Wholesale.overrideOptions.selectors || {} 5973 Samita.Wholesale.overrideOptions.selectors.product = { 5974 "element" : [".shopify-section--main-product"], 5975 "form": [ "[samitaWS-product-form]",".shopify-product-form"], 5976 "price": [ "price-list"], 5977 "unitPrice": "[samitaWS-product-unit-price], price-list" 5978 } 5979 Samita.Wholesale.overrideOptions.selectors.collection = { 5980 "productLink": "[samitaWS-collection-product-link], .product-card__figure > a", 5981 "price": ["[samitaWS-collection-product-price]","price-list"], 5982 "unitPrice": "[samitaWS-product-unit-price], price-list" 5983 } 5984 Samita.Wholesale.overrideOptions.selectors.cart = { 5985 "form": ["[samitaWS-checkout-form]",".shopify-section--main-cart"], 5986 "page": [{ 5987 "lineItem": { 5988 "key": ".cart-item", 5989 "quantity": { 5990 "wrapper": "[samitaWS-cart-line-item-qty-wrapper]", 5991 "input": "[samitaWS-cart-line-item-qty], .quantity__input", 5992 "decrease": "[samitaWS-cart-line-item-qty-decrease], [name=\"minus\"]", 5993 "increase": "[samitaWS-cart-line-item-qty-increase],[name=\"plus\"]", 5994 "removeButton": "[samitaWS-cart-line-item-remove-button]" 5995 }, 5996 "price": "[samitaWS-cart-product-main-price], .line-item price-list", 5997 "unitPrice": "[samitaWS-cart-line-item-unit-price], .line-item price-list", 5998 "priceEnd": "[samitaWS-cart-product-price-end], .cart-item-totals", 5999 "totalPrice": "[samitaWS-cart-line-item-total-price], .cart-item-totals" 6000 }, 6001 "subtotalPrice": "[samitaWS-cart-subtotal-price], .cart-subtotal-value", 6002 "checkoutBtn": "button[name=\"checkout\"]", 6003 }], 6004 "drawerForm": [ 6005 "[samitaWS-drawer-form]","#cart-drawer"], 6006 "drawer": [ 6007 { 6008 "lineItem": { 6009 "key": ".cart-drawer__line-items > .line-item", 6010 "quantity": { 6011 "wrapper": "[samitaWS-drawer-line-item-qty-wrapper], .cart-item__quantity", 6012 "input": "[samitaWS-drawer-line-item-qty], .quantity__input", 6013 "decrease": "[samitaWS-drawer-line-item-qty-decrease], [name=\"minus\"]", 6014 "increase": "[samitaWS-drawer-line-item-qty-increase], [name=\"plus\"]" 6015 }, 6016 "removeButton": "[samitaWS-drawer-line-item-remove-button], cart-remove-button button", 6017 "price": "[samitaWS-drawer-product-main-price], .cart-drawer__line-items price-list", 6018 "unitPrice": "[samitaWS-drawer-line-item-unit-price], .cart-drawer__line-items price-list", 6019 "priceEnd": "[samitaWS-cart-product-price-end], .cart-drawer__line-items price-list", 6020 "totalPrice": "[samitaWS-drawer-line-item-total-price], .cart-drawer__line-items price-list" 6021 }, 6022 "subtotalPrice": "[samitaWS-drawer-line-item-subtotal-price], .cart-subtotal-value", 6023 "checkoutBtn": "[samitaWS-drawer-checkout-btn], button[name=\"checkout\"]" 6024 } 6025 ] 6026 } 6027</script>
6027 6028 6029<style> .salepify-fg-advanced-temp-cart {display: none !important;} </style> 6030<div id="shopify-block-AcFN1M1hVN1RCVTB6Y__5057006142565981955" class="shopify-block shopify-app-block">
6030<script type="text/javascript"> 6031 const promoConfig = { 6032 fontSize: '16', 6033 logoType: 'logo', 6034 logoColor: 'blue', 6035 pageType: 'cart', 6036 textAlign: 'left' 6037 }; 6038 const drawerAppData = '{"theme_app_configuration"=>Metafields::MetafieldDrop}'; 6039 const drawerPromoAppConfig = (drawerAppData == '{}') ? {} : JSON.parse('{"region_public_keys":{"us":"MO1DC5JU5XARAQCX","ca":""}}') ; 6040 const drawerHasRegionKeys = drawerPromoAppConfig.hasOwnProperty('region_public_keys'); 6041 let drawerPublicKey = null; 6042 if (Shopify.country == 'US') 6043 drawerPublicKey = (drawerHasRegionKeys) ? drawerPromoAppConfig.region_public_keys.us : null; 6044 if (Shopify.country == 'CA') 6045 drawerPublicKey = (drawerHasRegionKeys) ? drawerPromoAppConfig.region_public_keys.ca : null; 6046 const affirmPublicApiKeyCartDrawer = ('') ? '' : drawerPublicKey; 6047 const customDrawerTotalSelector = ('') ? '' : null; 6048 const customAdjacentElementSelector = ('') ? '' : null; 6049 const customAddToCartSelector = ('') ? '' : null; 6050 const customCartDrawerSelector = ('') ? '' : null; 6051 const publicKeyEntered = ('') ? '' : null; 6052</script>
6052 6053 6054</div><div id="shopify-block-AVFIySTFEaVpmWUFPS__144831480468751239" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: vite-tag --> 6055 6056 6057
6057<script src="https://cdn.shopify.com/extensions/01a0ef01-233c-7292-b3f6-27cef5296cf1/essential-post-purchase-upsell-1723/assets/app-embed-BPe2qr_5.js" type="module" crossorigin="anonymous"></script>
6057 6058 <link rel="modulepreload" href="https://cdn.shopify.com/extensions/01a0ef01-233c-7292-b3f6-27cef5296cf1/essential-post-purchase-upsell-1723/assets/stylex-E6760mTB.js" crossorigin="anonymous"> 6059 <link href="//cdn.shopify.com/extensions/01a0ef01-233c-7292-b3f6-27cef5296cf1/essential-post-purchase-upsell-1723/assets/stylex-mm1DjMzv.css" rel="stylesheet" type="text/css" media="all" /> 6060 6061<!-- END app snippet --> 6062 6063<essential-upsell-app-embed 6064 upsell-app-data="{"funnels":[{"id":"5000c63b-33ef-4221-9ee9-0ffac31ae9a1","content":{"offerType":"CROSS_SELL","titleText":"Pairs Perfectly With...","buttonText":"Add"},"upsell":{"productsType":"SPECIFIC","discountType":"NONE","discountValue":null,"specificProducts":[{"shopifyId":"gid://shopify/Product/8343427645590","shopifyHandle":"sliquid"}]},"design":{"layoutType":"CAROUSEL","stackedProductsCount":null,"backgroundType":"MONOCHROME","monochromeBackgroundColor":"#ffffff","gradientBackgroundStartColor":null,"gradientBackgroundEndColor":null,"gradientBackgroundAngle":null,"borderRadius":8,"borderSize":1,"borderColor":"#c5c8d1","insideTopSpacing":10,"insideBottomSpacing":10,"outsideTopSpacing":20,"outsideBottomSpacing":20,"font":"INHERIT","titleSize":16,"titleColor":"#202223","productTitleSize":14,"productTitleColor":"#202223","productVariantSize":14,"productVariantColor":"#96a4b6","productPriceSize":14,"productPriceColor":"#96a4b6","discountedPriceSize":14,"discountedPriceColor":"#fa493d","buttonBackgroundColor":"#202223","buttonTextSize":14,"buttonTextColor":"#fafafa","buttonBorderRadius":4,"navigationIconColor":"#333333","checkboxIconColor":null,"checkboxBackgroundColor":null,"checkboxBorderColor":null},"placement":{"type":"PRODUCT_PAGE","triggerType":"SPECIFIC_PRODUCTS","cartPagePositionType":null,"specificProducts":[{"shopifyId":"gid://shopify/Product/7810371420310","shopifyHandle":"maxpr"},{"shopifyId":"gid://shopify/Product/7037087580310","shopifyHandle":"firmtech-performance-ring"},{"shopifyId":"gid://shopify/Product/7462086508694","shopifyHandle":"the-tech-ring"},{"shopifyId":"gid://shopify/Product/7916956385430","shopifyHandle":"techring-and-maxpr"},{"shopifyId":"gid://shopify/Product/7942637944982","shopifyHandle":"techring-and-performance-ring"}],"specificCollections":[]}}]}"upsell-app-config-data='{"analyticsBaseUrl":null,"sfk":"","baseUrl":null}' 6065 product-page-product="null"product-page-selling-plan-groups="null" 6066 selling-plan-translations="[]" 6067 product-page-collection-ids="[]" 6068 first-shop-product-id="8646964641942" 6069 shop-money-format="${{amount}}" 6070 market-handle="us" 6071 presentment-currency="USD" 6072 customer-tags="null" 6073 cart-items=' 6074[]' 6075></essential-upsell-app-embed> 6076 6077 6078</div><div id="shopify-block-AK0h3cTVsZkRtSWZvY__back-in-stock-restock-alerts-4bb73be2-b7c2-4870-949f-c528145452a3" class="shopify-block shopify-app-block"><link rel="preconnect" href="https://app.restockrocket.io" crossorigin><!-- Config and setup JS -->
6079<script id="RestockRocketConfig"> 6080 window._RestockRocketConfig = window._RestockRocketConfig || {} 6081 window._RestockRocket = window._RestockRocket || {} 6082 window._Stoq = window._RestockRocket 6083 window._StoqConfig = window._RestockRocketConfig 6084 try { window._RestockRocket.inlineRanAt = performance.now(); } catch (e) { } 6085 function normalizeLocale(locale) { 6086 if (!locale || locale.trim() === '') { 6087 return ''; 6088 } 6089 return locale.toString().toLowerCase().replace(/-/g, '_'); 6090 } 6091 6092 window._RestockRocketConfig.locale = 'en'; 6093 window._RestockRocketConfig.normalizedLocale = normalizeLocale('en'); 6094 window._RestockRocketConfig.shop = 'myfirmtech.myshopify.com'; 6095 window._RestockRocketConfig.pageType = 'index'; 6096 window._RestockRocketConfig.liquidRenderedAt = 1791067573;window._RestockRocketConfig.marketId = 2485813398;window._RestockRocketConfig.countryName = 'United States'; 6097 window._RestockRocketConfig.countryIsoCode = 'US';window._RestockRocketConfig.languageIsoCode = 'en';window._RestockRocketConfig.cartInventoryQuantity = {}; 6098 if (!window._RestockRocketConfig.cartToken) { 6099 try { 6100 const m = document.cookie.match(/(?:^|;\s*)cart=([^;]+)/); 6101 if (m && m[1]) window._RestockRocketConfig.cartToken = decodeURIComponent(m[1]); 6102 } catch (e) { } 6103 } 6104window._RestockRocketConfig.cachedSettings = {"id":21600,"shop_id":21444,"currency":"USD","created_at":"2024-12-31T15:02:03.080Z","updated_at":"2026-10-01T04:44:58.793Z","enable_app":true,"enable_signup_widget":true,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":false,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{"preorderAddToCartButtonChildSelector":"div","disableDebugLoggingForNonPreorderItem":false},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":null,"collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too","show_button_on_collection":false,"sms_default_country":"us","sms_allowed_countries":[],"sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_custom_domain_enabled":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":".product-info__buy-buttons .shopify-product-form","insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"Preorders must be purchased
6104separately from regular items. Please complete your current order first, or clear your cart to continue.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":".product-card__info","push_enabled":false,"push_allowed":true,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":".product-card__info","show_button_on_page":false,"insert_button_after_selector_search":".product-card__info","show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection_link_selector":"[href*=\"/products/\"]","index_link_selector":"[href*=\"/products/\"]","page_link_selector":"[href*=\"/products/\"]","search_link_selector":"[href*=\"/products/\"]","collection_check_link_visibility":true,"collection_buttons_container":".product-list","index_buttons_container":".product-list","page_buttons_container":".product-list","search_buttons_container":".product-list","extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified when itâs restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":"shopify-buy-it-now-button","preorder_add_to_cart_button_selector":"buy-buttons .button.button--xl.button--secondary","preorder_badge_selector":".price-list","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"[enctype=\"multipart/form-data\"]","preorder_collection_enabled":true,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":".product-card__image","preorder_index_badge_selector":".product-card__image","preorder_page_badge_selector":".product-card__image","preorder_search_badge_selector":".product-card__image","preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"div","preorder_button_disclaimer_insert_selector":".product-info__buy-buttons .shopify-product-form","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":"price-list","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"sale-price","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":".product-info__buy-buttons .shopify-product-form","inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":"","preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":"","countdown_timer_insert_selector_type":"afterend","configure_notify_me_enabled":false,"restock_note_insert_selector":null,"restock_note_insert_selector_type":"afterend","restock_note_background_color":"#f3f4f6","restock_note_text_color":"#202223","restock_note_border_radius":4,"preorder_modal_continue_button_text":"Continue","preorder_modal_cancel_button_text":"Cancel","meta_pixel_enabled":false,"meta_pixel_id":null,"cache":true,"cached_at":"2026-10-01T04:44:58.816Z","multi_language_enabled":false,"translation_locale":"en","disable_refresh_on_stale_liquid":false,"api_host":"https://ext.stoqapp.com"}; 6105 window._RestockRocketConfig.metafieldNamespace = 'restockrocket_production'; 6106 window._RestockRocketConfig.storefrontApiVersion = '2026-07';window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[],"updated_at":"2026-10-03T22:32:42Z","market_locations_enabled":false,"market_id":2485813398,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null,"bulk_operation":true};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-10-03T22:30:58Z","shopify_market_id":2485813398,"market_locations_enabled":false}; 6107 window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_2485813398";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-10-03T22:30:59Z","shopify_market_id":2485813398,"market_locations_enabled":false}; 6108 window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_2485813398"; 6109window._RestockRocketConfig.sellingPlans = [];(function() { 6110 const cachedData = {"plans":[{"shopify_selling_plan_group_id":2110816406,"shopify_selling_plan_id":5145985174,"enabled":true,"variant_ids":[],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder item. Shipping Next Week","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":7,"delivery_at":"2024-12-31T15:04:13.479Z","delivery_type":"unknown","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":false,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: First two weeks of February ","shipping_applies_to_all_products":true,"shipping_text":"Shipping Mid October. ","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":"50.0","pricing_percentage":"10.0","discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":true,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":false,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":false,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#8700d3","preorder_button_colors_enabled":false,"markets_enabled":false,"market_id":2485846166,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2024-12-31T15:04:13.473Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":"50.0","pricing_percentage":"10.0","billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":5145985174,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","disable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2026-03-16T15:46:00.000Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased
6110separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}],"disabled_plan_ids":[],"cached_at":"2026-03-18T14:59:04Z"}; 6111 6112 if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { 6113 window._RestockRocketConfig.readFlags = cachedData.read_flags || {}; 6114 const oldPlans = window._RestockRocketConfig.sellingPlans; 6115 const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 6116 ? oldPlans.reduce(function(max, plan) { 6117 if (plan.updated_at) { 6118 const planDate = new Date(plan.updated_at); 6119 const maxDate = max ? new Date(max) : null; 6120 return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max; 6121 } 6122 return max; 6123 }, '') 6124 : null; 6125 const cachedDate = new Date(cachedData.cached_at); 6126 const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null; 6127 const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate)); 6128 6129 if (useCached) { 6130 if (Array.isArray(cachedData.plans)) { 6131 window._RestockRocketConfig.sellingPlans = cachedData.plans; 6132 window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || []; 6133 console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')'); 6134 } 6135 } else { 6136 window._RestockRocketConfig.disabledSellingPlanIds = []; 6137 console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); 6138 } 6139 } 6140 })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [{"id":"bf5cdb59-5b52-4310-bcf4-2085cb3599e6","shop_id":21444,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"enableXHRHijack":true,"enableFetchHijack":true},"type":"hijack","css_config":null,"js_config":null,"created_at":"2024-12-31T15:02:04.065Z","updated_at":"2025-06-07T10:12:25.359Z"}]; 6141 try { 6142 var _sqCfg = window._RestockRocketConfig; 6143 var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) && 6144 _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; }); 6145 var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds && 6146 _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length; 6147 _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount); 6148 } catch (e) { } 6149 try { 6150 var _sqc = window._RestockRocketConfig; 6151 var _sqOn = !(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout === false); 6152 var _sqPre = (_sqc.cachedPreorderVariantIds && 6153 _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; 6154 var _sqArm = false; 6155 if (_sqOn && _sqc.preordersConfigured) { 6156 if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { 6157 _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1; }); 6158 } else { 6159 _sqArm = (_sqc.integrations || []).some(function (i) { 6160 return i && i.type === 'featured_product' && i.enabled && 6161 Array.isArray(i.page_types) && i.page_types.indexOf(_sqc.pageType) !== -1; 6162 }); 6163 } 6164 } 6165 if (_sqArm && document.documentElement) { 6166 _sqc.acceleratedGateArmed = true; 6167 document.documentElement.classList.add('stoq-buy-now-pending'); 6168 setTimeout(function () { 6169 document.documentElement.classList.remove('stoq-buy-now-pending'); 6170 }, 6000); 6171 } 6172 } catch (e) { } 6173 6174 window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-product.js' 6175 window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-collection.js' 6176 window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-product-bis.js' 6177 window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-collection-bis.js' 6178 window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) 6179 window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io' 6180 try { 6181 const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:assets\/?)?$/); 6182 window._RestockRocketConfig.appVersion = (_stoqVersionMatch && _stoqVersionMatch[1]) || ''; 6183 } catch (e) { 6184 window._RestockRocketConfig.appVersion = ''; 6185 } 6186 const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; 6187 const LIQUID_CACHE_MAX_AGE = 15 * 60; 6188 const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; 6189 if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { 6190 console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); 6191 window._RestockRocketConfig.isLiquidCacheFresh = true; 6192 window._RestockRocketConfig.liquidCacheAge = null; 6193 } else { 6194 const now = Math.floor(Date.now() / 1000);
6195 const liquidCacheAge = now - liquidRenderedAt; 6196 window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge); 6197 if (liquidCacheAge < 0) { 6198 console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`); 6199 window._RestockRocketConfig.isLiquidCacheFresh = true; 6200 } else if (liquidCacheAge <= LIQUID_CACHE_MAX_AGE) { 6201 console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); 6202 window._RestockRocketConfig.isLiquidCacheFresh = true; 6203 } else { 6204 console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); 6205 window._RestockRocketConfig.isLiquidCacheFresh = false; 6206 } 6207 } 6208 6209 function checkSettingsExpiry(settings) { 6210 try { 6211 if (!settings || !settings.updated_at) { 6212 console.debug('STOQ - Invalid settings data structure'); 6213 return null; 6214 } 6215 6216 if (!settings.cache) { 6217 console.debug('STOQ - settings caching disabled'); 6218 return null; 6219 } 6220 if (settings.multi_language_enabled) { 6221 if (!settings.translations) { 6222 console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); 6223 return null; 6224 } 6225 if (window._RestockRocketConfig.normalizedLocale && 6226 !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { 6227 console.debug('STOQ - locale not explicitly translated, will use default language from cache'); 6228 } 6229 } 6230 6231 const updatedAt = new Date(settings.updated_at); 6232 if (isNaN(updatedAt.getTime())) { 6233 console.debug('STOQ - Invalid updated_at date format in settings'); 6234 return null; 6235 } 6236 6237 const age = Date.now() - updatedAt.getTime(); 6238 if (age < SETTINGS_CACHE_DURATION) { 6239 console.debug('STOQ - settings changed recently, skipping cache'); 6240 return null; 6241 } 6242 6243 return settings; 6244 } catch (error) { 6245 console.debug('STOQ - Error checking settings cache:', error); 6246 return null; 6247 } 6248 } 6249 6250 function createRestockRocketContainer() { 6251 const restockRocketContainer = document.createElement('div'); 6252 restockRocketContainer.id = 'restock-rocket'; 6253 document.body.appendChild(restockRocketContainer); 6254 } 6255 6256 function createRestockRocketScript(scriptUrl) { 6257 const restockRocketScriptElement = document.createElement('script'); 6258 restockRocketScriptElement.setAttribute('defer', 'defer'); 6259 restockRocketScriptElement.src = scriptUrl; 6260 document.body.appendChild(restockRocketScriptElement); 6261 } 6262 6263 createRestockRocketContainer() 6264 6265 console.debug('STOQ - extension activated') 6266 try { 6267 const _stoqInitConfig = window._RestockRocketConfig; 6268 const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)
6268) 6269 ? _stoqInitConfig.product.variants.map(function(v) { return v.id }) 6270 : []; 6271 const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id; 6272 var _stoqPageSeq = 0; 6273 try { 6274 _stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1; 6275 window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq)); 6276 } catch (e) { } 6277 Shopify?.analytics?.publish?.('stoq_initialized', { 6278 cart_token: _stoqInitConfig.cartToken || '', 6279 page_url: window.location.href, 6280 page_type: _stoqInitConfig.pageType || '', 6281 shop_domain: _stoqInitConfig.shop || '', 6282 market_id: _stoqInitConfig.marketId || '', 6283 country_code: _stoqInitConfig.countryIsoCode || '', 6284 detected_variant_ids: _stoqDetectedVariantIds, 6285 selected_variant_id: _stoqSelectedVariantId || '', 6286 page_load_seq: _stoqPageSeq, 6287 liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, 6288 app_version: _stoqInitConfig.appVersion || '', 6289 liquid_cache_age: _stoqInitConfig.liquidCacheAge, 6290 inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', 6291 inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], 6292 }); 6293 } catch (e) { 6294 console.debug('STOQ - stoq_initialized publish failed:', e); 6295 } 6296 try { 6297 var _sqTrack = window._RestockRocketConfig; 6298 if (_sqTrack.preordersConfigured) { 6299 document.addEventListener('click', function (e) { 6300 try { 6301 var t = e.target; 6302 if (!t || !t.closest) return; 6303 var host = t.closest('.shopify-payment-button, shopify-payment-terms'); 6304 if (!host) return; 6305 var channel = host.matches && host.matches('shopify-payment-terms') 6306 ? 'shop_pay_installments' : 'buy_now'; 6307 var form = host.closest('form'); 6308 var vidEl = form && form.querySelector('[name="id"]'); 6309 var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; 6310 var _sqVidNum = Number(variantId); 6311 var _sqPlan = null; 6312 var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; 6313 var _sqMktId = Number(_sqTrack.marketId); 6314 var _sqForVariant = function (pl) { 6315 return pl && pl.enabled && Array.isArray(pl.variant_ids) && 6316 pl.variant_ids.indexOf(_sqVidNum) !== -1; 6317 }; 6318 _sqPlans.forEach(function (pl) { 6319 if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled && 6320 Array.isArray(pl.shopify_market_ids) && 6321 pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; } 6322 }); 6323 if (!_sqPlan) { 6324 _sqPlans.forEach(function (pl) { 6325 if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; } 6326 }); 6327 } 6328 Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { 6329 variant_id: variantId, 6330 product_id: (_sqTrack.product && _sqTrack.product.id) || '', 6331 channel: channel, 6332 market_id: _sqTrack.marketId || '', 6333 country_code: _sqTrack.countryIsoCode || '', 6334 page_type: _sqTrack.pageType || '', 6335 cart_token: _sqTrack.cartToken || '', 6336 page_url: (window.location && window.location.href) || '', 6337 properties: { 6338 is_preorder_variant: (function () { 6339 var vid = Number(variantId); 6340 var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; }; 6341 return has(_sqTrack.preorderVariantIds) || 6342 has(_sqTrack.cachedPreorderVariantIds && 6343 _sqTrack.cachedPreorderVariantIds.preorder_variant_ids); 6344 })(), 6345 in_enabled_plan: !!_sqPlan, 6346 is_instock_variant: (function () { 6347 var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; 6348 return has(_sqTrack.inStockVariantIds) || 6349 has(_sqTrack.cachedInStockVariantIds && 6350 _sqTrack.cachedInStockVariantIds.in_stock_variant_ids); 6351 })(), 6352 enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '', 6353 enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '', 6354 block_enabled: !(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout === false), 6355 gate_armed: !!_sqTrack.acceleratedGateArmed, 6356 gate_active_at_click: !!(document.documentElement && 6357 document.documentElement.classList.contains('stoq-buy-now-pending')), 6358 blocked: (function () { 6359 try { 6360 var rr = window._RestockRocket; 6361 return !!(rr && typeof rr.willBlockAcceleratedCl
6361ick === 'function' && 6362 rr.willBlockAcceleratedClick(e)); 6363 } catch (err) { return false; } 6364 })(), 6365 }, 6366 }); 6367 } catch (err) { } 6368 }, true); 6369 } 6370 } catch (e) { } 6371 function applyTranslations(settings) { 6372 try { 6373 if (!settings || !settings.multi_language_enabled) { 6374 return settings; 6375 } 6376 6377 if (!settings.translations) { 6378 console.debug('STOQ - No translations found, skipping translation'); 6379 return settings; 6380 } 6381 6382 const normalizedLocale = window._RestockRocketConfig.normalizedLocale; 6383 const translations = settings.translations; 6384 6385 if (!normalizedLocale) { 6386 console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); 6387 delete settings.translations; 6388 return settings; 6389 } 6390 6391 console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); 6392 6393 const translatedFields = translations[normalizedLocale]; 6394 if (translatedFields && typeof translatedFields === 'object') { 6395 Object.keys(translatedFields).forEach(function(key) { 6396 const value = translatedFields[key]; 6397 if (value !== null && value !== undefined && value !== '') { 6398 settings[key] = value; 6399 } 6400 }); 6401 } else { 6402 console.debug('STOQ - No translated fields found for locale:', normalizedLocale); 6403 } 6404 6405 delete settings.translations; 6406 return settings; 6407 } catch (e) { 6408 console.debug('STOQ - error applying translations:', e); 6409 return settings; 6410 } 6411 } 6412 function setupCartSellingPlanUpdater(settings) { 6413 window.addEventListener('stoq:inventory-data-loaded', function(event) { 6414 console.debug('STOQ - Inventory data loaded, updating cart selling plans'); 6415 if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { 6416 window._RestockRocket.updateCartSellingPlans() 6417 .then(hasUpdates => { 6418 if (hasUpdates) { 6419 console.debug('STOQ - cart selling plans updated successfully'); 6420 } else { 6421 console.debug('STOQ - no cart selling plan updates needed'); 6422 } 6423 }) 6424 .catch(error => { 6425 console.error('STOQ - error updating cart selling plans:', error); 6426 }); 6427 } 6428 }); 6429 } 6430 function storefrontGraphql(query, variables) { 6431 const cfg = window._RestockRocketConfig; 6432 if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) { 6433 return Promise.reject(new Error('Storefront API unavailable')); 6434 } 6435 return fetch( 6436 `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, 6437 { 6438 method: 'POST', 6439 headers: { 6440 'Content-Type': 'application/json', 6441 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, 6442 }, 6443 body: JSON.stringify({ query: query, variables: variables }), 6444 } 6445 ) 6446 .then(function(response) { 6447 if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } 6448 return response.json(); 6449 }) 6450 .then(function(body) { 6451 if (body && body.errors && body.errors.length) { 6452 throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); 6453 } 6454 return body && body.data; 6455 }); 6456 } 6457 function fetchStorefrontShopMetafield(key) { 6458 const cfg = window._RestockRocketConfig; 6459 const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }'; 6460 return storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key }) 6461 .then(function(data) { 6462 const value = data && data.shop && data.shop.metafield && data.shop.metafield.value; 6463 if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } 6464 return JSON.parse(value); 6465 }); 6466 } 6467 (function loadStorefrontSettings() { 6468 const cfg = window._RestockRocketConfig; 6469 if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) return; 6470 function run() { 6471 // The live-settings read is one more shop-level metafield fetch, so it 6472 // shares fetchStorefrontShopMetafield with the integrations/selling_plans 6473 // reads rather than re-issuing the same query + parse. 6474 fetchStorefrontShopMetafield('settings') 6475 .then(function(settings) { 6476 cfg.storefrontSettings = settings; 6477 console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings'); 6478 }) 6479 .catch(function(e) { 6480 console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message); 6481 }); 6482 } 6483 6484 if (typeof window.requestIdleCallback === 'function') { 6485 window.requestIdleCallback(run, { timeout: 5000 }); 6486 } else { 6487 setTimeout(run, 0); 6488 } 6489 })(); 6490 const cachedSettings = window._RestockRocketConfig.cachedSettings; 6491 const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; 6492 6493 if (validCachedSettings) { 6494 console.debug('STOQ - using cached settings'); 6495 initializeScripts(validCachedSettings); 6496 } else { 6497 console.debug('STOQ - fetching fresh settings'); 6498 const headers = { 6499 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 6500 'ngrok-skip-browser-warning': 'skip' 6501 }; 6502 6503 if (window.Shopify?.theme?.role === 'main') { 6504 headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; 6505 headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; 6506 headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; 6507 } 6508 6509 fetch( 6510 `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, 6511 { headers } 6512 ) 6513 .then(function(response) { 6514 if (!response.ok) { 6515 throw new Error('Network response was not ok'); 6516 } 6517 return response.json(); 6518 }) 6519 .then(function(settings) { 6520 initializeScripts(settings); 6521 }) 6522 .catch(function(error) { 6523 if (cachedSettings) { 6524 console.debug('STOQ - using expired cached settings as fallback'); 6525 initializeScripts(cachedSettings); 6526 } else { 6527 console.error('STOQ - failed to load settings:', error); 6528 } 6529 }) 6530 .catch(function(e) { 6531 console.error(e) 6532 }) 6533 } 6534 6535 function fetchEmbedConfig(endpoint, apply) { 6536 return fetch( 6537 `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, 6538 { 6539 headers: { 6540 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 6541 'ngrok-skip-browser-warning': 'skip' 6542 } 6543 } 6544 ) 6545 .then(function(response) { 6546 if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); 6547 return response.json(); 6548 }) 6549 .then(function(data) {
6550 try { 6551 apply(data); 6552 } catch (applyError) { 6553 console.error('STOQ - apply failed for ' + endpoint + ':', applyError); 6554 throw applyError; 6555 } 6556 }) 6557 .catch(function(error) { 6558 console.debug(`STOQ - using cached ${endpoint}:`, error.message); 6559 }); 6560 } 6561 function refreshShopConfig(source) { 6562 const cfg = window._RestockRocketConfig; 6563 const viaEmbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); }; 6564 const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; 6565 if (!flagOn || source.embedOnly === true) { return viaEmbed(); } 6566 6567 return fetchStorefrontShopMetafield(source.metafieldKey) 6568 .then(function(value) { 6569 if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } 6570 source.apply(value); 6571 console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); 6572 }) 6573 .catch(function(error) { 6574 console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); 6575 return viaEmbed(); 6576 }); 6577 } 6578 function refreshIntegrations() { 6579 const cfg = window._RestockRocketConfig; 6580 return refreshShopConfig({ 6581 endpoint: 'integrations', 6582 metafieldKey: 'integrations', 6583 flag: 'enable_storefront_integrations_read', 6584 isValid: function(value) { return Array.isArray(value); }, 6585 apply: function(data) { 6586 cfg.integrations = data; 6587 } 6588 }); 6589 } 6590 function refreshSellingPlans(embedOnly) { 6591 const cfg = window._RestockRocketConfig; 6592 return refreshShopConfig({ 6593 embedOnly: embedOnly === true, 6594 endpoint: 'selling_plans', 6595 metafieldKey: 'cachedSellingPlans', 6596 flag: 'enable_storefront_selling_plans_read', 6597 isValid: function(value) { return !!value && Array.isArray(value.plans); }, 6598 apply: function(data) { 6599 cfg.sellingPlans = data.plans; 6600 cfg.disabledSellingPlanIds = data.disabled_plan_ids || []; 6601 if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) { 6602 cfg.readFlags = data.read_flags; 6603 } 6604 } 6605 }); 6606 } 6607 6608 function initializeScripts(settings) { 6609 settings = applyTranslations(settings); 6610 window._RestockRocketConfig.settings = settings; 6611 console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); 6612 const forceEmbedSellingPlans = settings.force_embed_selling_plans === true; 6613 const staleRefresh = !window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid; 6614 if (forceEmbedSellingPlans || staleRefresh) { 6615 console.debug('STOQ - refreshing selling_plans' + (staleRefresh ? ' + integrations (Liquid cache stale)' : ' (force_embed_selling_plans)')); 6616 const refreshes = [refreshSellingPlans(forceEmbedSellingPlans)]; 6617 if (staleRefresh) { refreshes.push(refreshIntegrations()); } 6618 Promise.race([ 6619 Promise.all(refreshes), 6620 new Promise(function(resolve) { setTimeout(resolve, 1000); }) 6621 ]).then(function() { loadScripts(settings); }); 6622 return; 6623 } 6624 6625 loadScripts(settings); 6626 } 6627 6628 function loadScripts(settings) { 6629 setupCartSellingPlanUpdater(settings); 6630 6631 if(settings.enable_app) { 6632 const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { 6633 return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); 6634 }) 6635 const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) 6636 && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; }); 6637 const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds) 6638 && window._RestockRocketConfig.disabledSellingPlanIds.length > 0; 6639 const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds; 6640 6641 const collectionScriptUrl = usePreorderBuild 6642 ? window._RestockRocketConfig.scriptUrlCollection 6643 : window._RestockRocketConfig.scriptUrlCollectionBis; 6644 const productScriptUrl = usePreorderBuild 6645 ? window._RestockRocketConfig.scriptUrlProduct 6646 : window._RestockRocketConfig.scriptUrlProductBis; 6647 6648 const pageType = window._RestockRocketConfig.pageType; 6649 const collectionPageTypes = ['collection', 'index', 'search', 'page']; 6650
6651 if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { 6652 createRestockRocketScript(collectionScriptUrl); 6653 } else if(pageType === 'product') { 6654 createRestockRocketScript(productScriptUrl); 6655 } else if(hijackIntegration) { 6656 createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); 6657 } else if(usePreorderBuild) { 6658 createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); 6659 } else { 6660 console.debug(`STOQ - no scripts enabled for ${pageType}`); 6661 } 6662 const appLoadedEvent = new CustomEvent('stoq:loaded', { 6663 detail: { 6664 pageType: window._RestockRocketConfig.pageType, 6665 enabled: settings.enable_app, 6666 settings: settings, 6667 preorderEnabled: settings.preorder_enabled 6668 } 6669 }); 6670 console.debug('STOQ - dispatching app loaded event'); 6671 window.dispatchEvent(appLoadedEvent); 6672 } 6673 } 6674</script>
6674<style id="RestockRocketStyle">html.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}</style> 6675 6676 6677</div><div id="shopify-block-AZTI3VUE3SFNzM3F6d__2912608901741945173" class="shopify-block shopify-app-block"> 6678</div><div id="shopify-block-ARExFU25Wa0dyOGZGU__6251270934270006384" class="shopify-block shopify-app-block">
6678<script> 6679 console.log("Stape gtm: 1.0.4"); 6680 window.lsData = {}; 6681 window.dataLayer = window.dataLayer || []; 6682 window.addEventListener("message", (event) => { 6683 if (event.data?.event) { 6684 window.dataLayer.push(event.data); 6685 } 6686 }); 6687 window.dataShopStape = { 6688 shop: "myfirmtech.com", 6689 shopId: "57731776662", 6690 } 6691</script>
6691 6692 6693 6694 6695 6696 6697 6698
6698<script> 6699 console.log("â ï¸ User not logged in"); 6700 window.localStorage.removeItem('customerShopStape'); 6701 </script>
6701 6702 6703 6704 6705
6706<script> 6707 window.currentShopifyMarketStapeId = null; 6708 window.currentShopifyMarketStapeCode = null; 6709 try { 6710 window.currentShopifyMarketStapeId = "2485813398"; 6711 window.currentShopifyMarketStapeCode = "US"; 6712 // Checkout doesn't render theme app extension blocks, so this is the 6713 // only place the market/country code is ever set. Persisting it here 6714 // lets checkout-side field mapping (country_market_code) fall back to 6715 // the last known value instead of coming up empty. 6716 localStorage.setItem('marketShopStape', JSON.stringify({ 6717 id: window.currentShopifyMarketStapeId, 6718 code: window.currentShopifyMarketStapeCode 6719 })); 6720 } catch (error) { 6721 console.error("â Stape Error:", error); 6722 } 6723</script>
6723 6724 6725 6726 6727 6728 6729</div>
6729<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
6729 6730</body> 6731</html> 6732
6733<script> 6734 // Force reload metafield data if accessed via back button or cached 6735 window.addEventListener('pageshow', function (event) { 6736 if (event.persisted || (window.performance && window.performance.navigation.type === 2)) { 6737 window.location.reload(); 6738 } 6739 }); 6740</script>
6740 6741 6742 6743<!--
6743<script> 6744 document.addEventListener("DOMContentLoaded", function () { 6745 const urlParams = new URLSearchParams(window.location.search); 6746 const firstName = urlParams.get('first_name'); 6747 6748 if (firstName) { 6749 console.log("First Name:", firstName); // This will show in the console if it's working 6750 } else { 6751 console.log("No 'first_name' parameter found"); 6752 } 6753 }); 6754</script>
6754 --> 6755
6756<script> 6757 function toSentenceCase(str) { 6758 return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); 6759} 6760 6761document.querySelectorAll('.sentence-case').forEach(el => { 6762 el.textContent = toSentenceCase(el.textContent); 6763}); 6764</script>
6764 6765 6766 6767<div id="result-container"></div>
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.