1<!doctype html> 2<html class="min-h-[100vh]" lang="en"> 3 <head> 4<!--LOOMI SDK--> 5<!--DO NOT EDIT--> 6<!--Start - Anti Flicker--> 7<style id="vslyAntiFlickerStyle-AE29"> 8 body { 9 opacity: 0!important; 10 } 11</style> 12<style id="vslyAntiFlickerStyle-BC82"> 13 body { 14 15 animation: vslyAntiFlickerFadeIn 0.1s linear; 16 -moz-animation: vslyAntiFlickerFadeIn 0.1s linear; 17 -o-animation: vslyAntiFlickerFadeIn 0.1s linear; 18 -webkit-animation: vslyAntiFlickerFadeIn 0.1s linear; 19 20 animation-fill-mode: forwards; 21 -moz-animation-fill-mode: forwards; 22 -o-animation-fill-mode: forwards; 23 -webkit-animation-fill-mode: forwards; 24 25 animation-delay: 500ms; 26 -moz-animation-delay: 500ms; 27 -o-animation-delay: 500ms; 28 -webkit-animation-delay: 500ms; 29 } 30 31 @keyframes vslyAntiFlickerFadeIn { 32 to { 33 opacity: 1; 34 } 35 } 36</style>
37<script id="vslyAntiFlickerScript-OJ93" data-em-disable> 38 console.debug('vsly-anti-flicker', 'Anti Flicker Script Loaded'); 39 let fallbackTimer = -1; 40 let retryTimer = -1; 41 let retries = 0; 42 43 function _vslyAntiFlickerRevealInner() { 44 try { 45 console.debug('vsly-anti-flicker', 'Revealing'); 46 const hideElem = document.querySelector('#vslyAntiFlickerStyle-AE29'); 47 if (hideElem) { 48 hideElem.remove(); 49 } 50 clearTimeout(fallbackTimer); 51 console.debug('vsly-anti-flicker', 'Revealing done'); 52 } catch (ex) { 53 console.error('vsly-anti-flicker', ex); 54 if (retries > 15) { 55 setTimeout(window.vslyAntiFlickerReveal, 10); 56 retries += 1; 57 } 58 } 59 } 60 61 window.vslyAntiFlickerReveal = function () { 62 setTimeout(_vslyAntiFlickerRevealInner, 10); 63 } 64 65 fallbackTimer = setTimeout(() => { 66 console.debug('vsly-anti-flicker', 'Falling back after timeout'); 67 window._vslyAntiFlickerRevealInner() 68 clearTimeout(retryTimer) 69 }, 500) 70</script>
70 71<!--End - Anti Flicker--> 72<link rel="preconnect" href="https://live.visually-io.com" crossorigin data-em-disable> 73<link rel="dns-prefetch" href="https://live.visually-io.com" data-em-disable>
74<script type="text/javascript" data-em-disable data-vsly> 75 (()=> { 76 const env = 2; 77 var store = "seattlecoffeegear.myshopify.com"; 78 var alias = store.replace(".myshopify.com", "").replaceAll("-", "_").toUpperCase(); 79 var jitsuKey = "js.83175735603"; 80 var themeId = 161449935155; 81 var role = "main"; 82 window.loomi_ctx = {...(window.loomi_ctx || {}),storeAlias:alias,jitsuKey,env,themeId,role}; 83 84 85 86 87 88 window.loomi_ctx.blockingConcent = false; 89 loomi_ctx.ttl=1792858858; 90 loomi_ctx.embeddedTests=[]; 91 })() 92</script>
vendor: 1 bytes, line 92
92
93<script type="text/javascript" data-em-disable> 94 !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=()=>!!_(()=>C()()),C=()=>_(()=>window.Shopify.customerPrivacy.analyticsProcessingAllowed)||_(()=>window.Shopify.customerPrivacy.userCanBeTracked)||_(()=>window.visually.analyticsProcessingAllowed);function x(){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;
94o++)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";
94const 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(Ce())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=>{const t=Re();return t.searchParams.append("preview_theme_id",`${e||""}`),t},be=()=>{const e="vsly-tts";if($e(e))return;ke();const t=Ie("");t.searchParams.append(e,"1"),document.body.style.opacity=0,location.replace(t.href)},Ce=()=>
94{const e="vsly_disableThemeTest",t=$e("disableThemeTest")||!!sessionStorage.getItem(e);return t&&sessionStorage.setItem(e,"1"),ie()||t},xe=()=>!me("allow-embed-redirect-tests")||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="data-rid",Ue="data-alchemy-element-root";let Me,qe=0;function Fe(e){return e.hasAttribute(De)||e.hasAttribute(Ue)}const Be=function(e,t){try{return Promise.resolve(v(()=>!!document&&!!document.body&&!!document.querySelector,50,200)).then(function(){!function(){if("undefined"==typeof document)return;Je||(Je=new MutationObserver(Ve)),Ve();const e="spa"===_(()=>window.vslyIntegrationType,"static")?document:document.body;Je.observe(e,{childList:!0,subtree:!0,characterData:!0,attributes:!1})}(),e&&(k=e),t&&(T=t)})}catch(e){return Promise.reject(e)}};let Je;function Ve(){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,Ve,100,10);if($.has(e.id))return;if(function(e,t){if(e&&(void 0===Me&&(Me=!!document.querySelector(`[${Ue}],[${De}]`)),Me)&&function(e){return["replace","appendBefore","appendAfter","compound","widget","moveElem"].includes(e.kind)}(t))for(let t=e;t;t=t.parentElement)if(Fe(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===qe&&(qe=Date.now());const n=Date.now()-qe,r=window.vslyHydrationGrace||500;return t&&n>r}())return;const n=He(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)}}),ze()}function He(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}";\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}}
94(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,He(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=()=>
94{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=[];
94return 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
94h((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 Ge=!1;function ze(){Ge||(Ge=!0,requestAnimationFrame(Ke))}function Ke(){$.forEach(e=>{try{e.isApplied()?e.redoIfNeeded():e.do()}catch(t){F("failed to apply mutation command with exception:",t,e)}}),Ge=!1}function We(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),ze(),r}catch(e){return}var t}function Qe(e){return"div"===e.selector&&(e.selector="body div"),L.push(e),Ve(),{revert:()=>We(e.id),mutationId:e.id}}function Ye(){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 Ze;!function(e){e.CART_CHANGE="CART_CHANGE",e.LOYALTY_CHANGE="LOYALTY_CHANGE"}(Ze||(Ze={}));const Xe=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),et=()=>window.loomi_ctx.session.id;function tt(e){return _(()=>e.items.map(e=>_(()=>e.selling_plan_allocation.selling_plan.name.toLowerCase())).filter(e=>!!e),[])}function nt(){return JSON.parse(localStorage.getItem("loomi-cart-history")||"[]")}function rt(){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 ot(e){return JSON.parse(localStorage.getItem(e)||"[]")}function it(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 st(){return JSON.parse(localStorage.getItem("loomi_purchased_products")||"[]")}const ct="vsly_params_history",at="vsly_visited_pages",ut=function(e){try{const t=e.matches?ft.MOBILE:ft.DESKTOP,n=function(){if(lt!=t){q("device-listener",`device changed to ${t} from ${lt}`),window.loomi_ctx.deviceOverride=t===ft.MOBILE?"m":"d",lt=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 lt;function dt(){a()?function(){try{return Promise.resolve(v(()=>c,1e3,10)).then(function(){return mt(),Promise.resolve()})}catch(e){return Promise.reject(e)}}().catch(console.error):mt()}function mt(){let e=_(()=>window.vslyDesktopBreakpoint)||960;e<=0&&(e=960);const t=window.matchMedia(`(max-width: ${e}px)`);t.removeEventListener("change",ut),t.addEventListener("change",ut)}var ft;!function(e){e.MOBILE="MOBILE",e.DESKTOP="DESKTOP"}(ft||(ft={}));const ht=()=>edgetag("getUserId");function pt(){const e="vsly_edgetag";return P(()=>(ht()&&localStorage.setItem(e,ht()),!0)),_(ht)||localStorage.getItem(e)}const vt="lmi_type",wt="lmi_from",yt="lmi_class",gt="lmi_utm_data",_t={utm_source:"source",utm_medium:"medium",utm_campaign:"campaign",utm_term:"term",utm_content:"content"},St=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},Et=function(e){void 0===e&&(e=window.location.search);const t={utm:{},lmi_params:{}};return _(()=>
94new URLSearchParams(e)).forEach((e,n)=>{if(e){const r=_t[n],o=St(e);r?t.utm[r]=o:function(e){return _(()=>[yt,wt,vt].includes(e))}(n)&&(t.lmi_params[n]=o)}}),t};function Pt(){const e=function(e){let t=[];const n=localStorage.getItem(gt);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}(_(()=>Et().utm)));return localStorage.setItem(gt,JSON.stringify(e)),e}function At(){const e=_(()=>Pt(),[]);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 It=function(e){return Promise.resolve(bt()).then(function(t){return new Promise((n,r)=>{const o=t.transaction([xt],"readonly").objectStore(xt).get(e);o.onerror=e=>{r("IDB e:r"+e.target.error)},o.onsuccess=e=>{n(e.target.result)}})})},bt=function(){try{const e=function(){if(!kt)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=>{kt=t.target.result,e(kt)},n.onupgradeneeded=e=>{e.target.result.createObjectStore(xt,{keyPath:"id"}).createIndex("id","id",{unique:!0})}})).then(function(){})}();return Promise.resolve(e&&e.then?e.then(function(){return kt}):kt)}catch(e){return Promise.reject(e)}},Ct="VISUALLY_IO",xt=Ct;let kt=null;function Tt(){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 Nt(){return _(()=>Ye().items.map(e=>({variantId:e.variant_id||0,quantity:e.quantity||0,productId:e.product_id||0,price:e.price||0})))||[]}const Ot=function(e){return void 0===e&&(e=Ye()),_(()=>(("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 jt(){const e=new URL(window.location.href);return e.protocol+"//"+e.hostname+e.pathname}const Lt=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 $t(){const e=_(()=>this.cart.items);if(e&&e.length>0){const t=et(),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!!_(()=>nt().find(e=>!!e.sid&&r.includes(`${e.variant_id}`)&&`${e.sid}`!=t))}return!1}function Rt(e){return Ot(this.cart).includes(e)}function Dt(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 Ut(){return tt(this.cart)}function Mt(e){const t=this.cart;return!!_(()=>t.items.find(t=>t.handle===e))}function qt(e){const t=this.cart;return!!_(()=>t.items.find(t=>!!t.tags&&t.tags.includes(e)))}function Ft(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 Bt(e){const t=this.cart;return!!_(()=>t.items.find(t=>!!t.collections&&t.collections.includes(e)))}function Jt(){return!0===_(()=>window.loomi_ctx.loyalty.isMember,!1)}function Vt(){return _(()=>window.loomi_ctx.loyalty.pointsBalance,0)}function Ht(){return _(()=>window.loomi_ctx.loyalty.earnedPoints,0)}const Gt="__eventn_id";function zt(){const{id:e,firstSeen:t}=function(e){const t=function(e){try{const t=S(e),{firstSeen:n,id:r}=Qt(t);if(t)return{id:r,firstSeen:n||Zt()}}catch(e){}}(e),n=function(e){const t=window.localStorage.getItem(e),{id:n,firstSeen:r}=Qt(t);if(t)return{id:n,firstSeen:r||Zt()}}(e);if(!t&&!n){const{newId:t,newEpoch:n}=function(){const e=Math.random().toString(36).substring(2,12),t=Zt();return{newId:e,newEpoch:t,value:Yt(e,t)}}();return Kt(t,n,e),{id:t,firstSeen:n}}if(!n&&t)return Kt(t.id,t.firstSeen,e),t;if(!t&&n)return Kt(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 Wt(t,n)&&(o=t.id<=n.id?t.id:n.id),n.id==t.id&&n.firstSeen==t.firstSeen||Kt(o,r,e),{id:o,firstSeen:r}}(Gt);return{id:e,firstSession:Xt(t),firstSeen:t}}function Kt(e,t,n){void 0===n&&(n=Gt);const r=Yt(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 Wt=(e,t)=>e.firstSeen===t.firstSeen&&e.id!==t.id;function Qt(e){return{firstSeen:_(()=>parseInt(e.split(".")[1]),null),id:_(()=>e.split(".")[0])}}function Yt(e,t){return`${e}.${t}`}function Zt(){return Math.trunc((new Date).getTime()/1e3)}const Xt=e=>(new Date).getTime()/1e3-e<=7200,en="vsly_vid",tn="lmi_debug";function nn(e){return _(()=>new URL(window.location.href).searchParams.get(e)||void 0)}const rn=["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 on(e){try{(function(e){const t=e.flatMap(e=>_(()=>e.code)).filter(e=>!!e).filter(e=>"widget"===e.kind).map(e=>sn(e.value.env)),n=new Map;
94return 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=>{cn(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;cn(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 Qe(N("appendFont","div",JSON.stringify({family:e,weights:t})))}(t,n)})}catch(e){F("failed to install custom fonts",e)}}function sn(e){const t={};for(const n in e)if("object"!=typeof e[n]||Array.isArray(e[n]))t[n]=e[n];else{const r=sn(e[n]);for(const e in r)t[`${n}.${e}`]=r[e]}return t}function cn(e,t,n){if(!t)return;const r=t.replaceAll("'","").replaceAll('"',"");if(!function(e){return rn.includes(e)}(r))return;e.has(r)||e.set(r,new Set);const o=e.get(r);
94o.add(400),n.forEach(e=>{o.add(e)})}const an=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)}},un=function(e){try{let n;function t(t){return n?t:e.map(e=>{const t=String(e.id),n=dn.get(pn(e.id))||r[t];return n?{...e,variants:Array.isArray(e.variants)?e.variants.map(e=>{const t=vn(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}=wn(e),i=function(){if(o.length>0)return function(t,n){try{var o=Promise.resolve(ln(e)).then(function(e){r=e,Object.entries(r).forEach(e=>{let[t,n]=e;return dn.set(pn(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)}},ln=function(e){try{return Promise.resolve(fetch(`https://${fn()}/api/2025-10/graphql.json`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:mn(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=hn(r.id);t[o]={variants:{}}
94,r.variants.edges.forEach(e=>{const n=hn(e.node.id);t[o].variants[n]={price:e.node.price,compareAtPrice:e.node.compareAtPrice}})}return t})})}catch(e){return Promise.reject(e)}},dn=new class extends H{constructor(e,t){super(new z(e),t)}}("p",18e5);function mn(e){const{productIdsToFetch:t,maxVariantsPerProduct:n}=wn(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 fn=()=>window.loomi_ctx.storeAlias.toLowerCase().replaceAll("_","-")+".myshopify.com";function hn(e){const t=e.match(/\/(\d+)$/);return t?t[1]:e}const pn=e=>String(e)+se(),vn=(e,t)=>{let n=String(e.variant_id);const r=Object.keys(t.variants);return 1==r.length&&(n=r[0]),t.variants[n]},wn=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])})(dn.get(pn(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}},yn=new K("recs_cache",300001),gn=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}=Tt();(t||n)&&(e.productId={productId:t,variantId:n})}(r),r.cartItems=(o=Nt(),_(()=>o.filter(e=>!!e.productId).map(e=>({productId:`${e.productId}`,variantId:`${e.variantId}`,quantity:e.quantity||1})))),r.currency=_(()=>Ye().currency||"USD","USD"),r.cart_total=_(()=>Ye().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=>_n(r,e))&&(r.recentlyViewed=rt().filter(e=>!!e.productId).map(e=>({productId:`${e.productId}`,variantId:`${e.variantId||""}`,...e.ts?{ts:e.ts}:{}})));const i=st();return i.length>0&&(r.pastPurchases=i),(_n(r,"CART_ITEMS")||function(e){return _(()=>!!e.layeredRuling.find(e=>"latest_added"==e.ruleCond.itemSelection))}(r))&&(r.cartHistory=In()),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(An(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 _n(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 Sn(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 En(){return`https://${A(window.loomi_ctx.env)}/api/recommendations/web/public/v2/recommend`}const Pn=new Map,An=function(e){try{function t(){return _(()=>o.products)}const n=g(e),r=W(n);let o=yn.get(r);const i=function(){if(!o){let e=!0;return me("kill-locale-currency")&&(e=!1),Promise.resolve(((e,t,n)=>{if(Pn.has(e))return Pn.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(un(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(En(),{method:"POST",headers:{"Content-Type":"text/plain"},body:t})).then(function(e){o=e}):Promise.resolve(r(`${En()}?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(Pn.delete(e),t)throw n;return n}))}catch(e){return Promise.reject(e)}}();return Pn.set(e,o),o})(r,n,e)).then(function(e){o=e,_(()=>
94[Sn,window.loomi_api.onRecsResp].forEach(e=>e&&e(o))),yn.set(r,o)})}}();return Promise.resolve(i&&i.then?i.then(t):t())}catch(s){return Promise.reject(s)}},In=()=>nt().map(e=>{const t={...e};return delete t.sid,t});function bn(e){return`vsly_pi_${e}`}function Cn(e){return`vsly_hbt_${e}`}function xn(e){return`vsly_hbc_${e}`}function kn(e){return Array(e).fill(0).map(()=>Math.floor(10*Math.random())).join("")}function Tn(){try{const e=_(()=>window.vslyAntiFlickerReveal,void 0);e&&e()}catch(e){}}const Nn=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})),`${En()}?${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)}},On=function(e){try{try{const t=g(e),n=window.loomi_ctx.storeAlias,r=W(`${n}_${t}_${se()}`),o=Ln.get(r);if(o)return Promise.resolve(o);if($n.has(r))return Promise.resolve($n.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(En());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 Sn(t),t.products}(r),Promise.resolve(jn(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 Ln.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($n.delete(r),e)throw t;return t}))}catch(e){return Promise.reject(e)}}();return $n.set(r,i),Promise.resolve(i)}catch(e){return F("queryProducts setup failed:",e),Promise.resolve({results:{}})}}catch(e){return Promise.reject(e)}},jn=function(e){try{return me("kill-locale-currency")||_(()=>!Array.isArray(e[0].variants))?Promise.resolve(e):Promise.resolve(un(e))}catch(e){return Promise.reject(e)}},Ln=new K("ai_recs_cache",300001),$n=new Map,Rn=function(e,t,n){try{const o=zt(),i=function(e,t,n){const r=function(){const e=Nt(),t={path:window.location.pathname,host:window.location.hostname};_(()=>e.length)>0&&(t.cartItems=e);const n=_(()=>Ye().token);n&&(t.cartToken=n);const r=Pt();r&&(t.trafficSources=r),t.productsSeenInSession=rt(),t.isCustomer=!!E(),t.query=window.location.search||"",t.hash=window.location.hash||"";const o=Ot();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=!!_(()=>tt(Ye()).length>0);const s=pt();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=ot(ct),u=function(){const e=ot(at);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 It(at).then(r=>{const o={ts:new Date,name:jt(),search:_(n,"")},i=!!o.search,s=(_(()=>r.visits)||e||[]).filter(e=>!i||!(e.name===o.name&&!e.search)).filter(e=>
94!(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:at,visits:s},Promise.resolve(bt()).then(function(e){return new Promise((t,n)=>{const r=e.transaction([xt],"readwrite").objectStore(xt).put(c);r.onerror=e=>{n("IDB e:w"+e.target.error)},r.onsuccess=()=>{t("")}})})).catch()}).catch(),it([{ts:f(),name:jt()}],e,e=>t=>e.name===t.name,at)}(),l=st(),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"))||_(()=>Ye().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=Tt().productId;return Number.isFinite(Number(e))?e.toString():""},"");const e=1*i.variantId;Number.isFinite(e)&&(r.vid=e)}const y=_(et);"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,en].map(e=>{const t=nn(e);t&&sessionStorage.setItem(e,t)});const e=sessionStorage.getItem(r),t=sessionStorage.getItem(en);return{previewKey:e,debugAllocator:nn(tn),previewVariantId:t}}();let i=new URL(e);return t&&i.searchParams.append(r,t),n&&i.searchParams.append(tn,"true"),o&&i.searchParams.append(en,o),i}(qn(e).cfgUrl);o.searchParams.append("q",n);const i=W(o.href),s=window.vslyNativeFetch||window.fetch,c=Un.has(i)?Un.get(i):s(o.href,{priority:"high"}).finally(()=>Un.delete(i));return Un.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),it(e.queryHistory,i.queryHistory,e=>t=>t.v===e.v&&t.k===e.k,ct),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)}},Dn="vslyb",Un=new Map;function Mn(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(qn(o).cfgUrl.replace("/allocate","/match"));i.searchParams.append("q",r),fetch(i)}}function qn(e){let t="/api/allocator/web/public/v2/allocate";return Bn(e)&&(t="/allocate"),{cfgUrl:`${Fn(e)}${t}`}}function Fn(e){return Bn(e)?"http://localhost:8080":`https://${A()}`}function Bn(e){return[n.TEST,n.LOCAL].includes(e)}function Jn(e){window.visually={..._(()=>window.visually)||{},flags:e},localStorage.setItem("loomi-flags",JSON.stringify(e))}function Vn(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 Hn(e){return`${e.name}-${e.variant}`}function Gn(e){return`${e.name}-${e.variant}-${e.version||0}`}function zn(e){$.forEach(t=>{e&&!e(t)||(t.undo(),t.do())})}const Kn=(e,t)=>!!_(()=>e.audiences.includes(t)),Wn=e=>{const t={},n=Kn(e,"d"),r=Kn(e,"m");return n||r?(_(()=>e.experiments.filter(e=>
94!!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},Qn=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 Yn(e,t,n,r){const[o,i]=t.split(",");return new Promise(t=>{It(at).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||rr(e)){if(Xn(s,e))return void t(!0)}else if(Zn(s,e))return void t(!0);t(!1)})})}function Zn(e,t){return!![er(e),nr(er(e))].find(e=>e.includes(t))}function Xn(e,t){const n=e.search||"",r=er(e)+n;return!![r,nr(r)].find(e=>e.includes(tr(t)))}function er(e){return tr(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("/")),tr(t.href)}(e.name))}function tr(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 nr(e){return e.includes("/products/")&&e.includes("/collections/")?e.replace(/\/collections\/[^/]+/,""):e}function rr(e){return _(()=>!!new URL(e).search)}const or=function(e){try{return yr(),hr(e.clientTargetingFormula)&&(ar[lr(e)]=e),Promise.resolve(wr(e)).then(function(t){return t?(mr(e),!0):(q(`exp: ${e.gaName} not run client targeting: ${e.clientTargetingFormula} => false`),!1)})}catch(e){return Promise.reject(e)}},ir=function(e){try{const t=Object.entries(ar).map(t=>{let[n,r]=t;return hr(r.clientTargetingFormula)&&(ar[lr(r)]=r),{exp:r,shouldBeApplied:sr(r.clientTargetingFormula,e,r.name),hasBeenApplied:()=>!!ur[lr(r)]}});return Promise.resolve(pr(t)).then(function(e){!function(e){e.filter(e=>e.hasBeenApplied()&&!e.shouldBeApplied).flatMap(e=>{const t=_(()=>ur[lr(e.exp)]);return t&&delete ur[lr(e.exp)],t}).forEach(e=>{_(e.revert)})}(e),function(e){e.filter(e=>e.shouldBeApplied&&!e.hasBeenApplied()).forEach(e=>{var t,n,r;mr(e.exp),t=e.exp,n=fr,void 0===r&&(r=x()),n.has(t.variant)||(Pr(r,t),n.add(t.variant),Mn(t))})}(e)})}catch(e){return Promise.reject(e)}},sr=function(e,t,n){void 0===n&&(n="");try{if(void 0===t&&(t=dr()),hr(e)){t.Total=Lt,t.CartHasSubs=Dt,t.CartSubs=Ut,t.CartHasItem=Mt,t.CartItemHasTag=qt,t.AllCartItemsHasTag=Ft,t.CartItemHasCollection=Bt,t.IsLoyaltyCustomer=Jt,t.LoyaltyPointsBalance=Vt,t.LoyaltyPointsEarned=Ht,t.PageVisit=Yn,t.CustomerTag=gr,t.IsGuest=_r,t.AbandonedCart=$t,t.CartAttrName=Rt,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 cr=!1;const ar={},ur={},lr=e=>`${e.name}-${e.variant}`;function dr(){return{cart:Ye(),Total:Lt,CartHasSubs:Dt,CartSubs:Ut,CartHasItem:Mt,CartItemHasTag:qt,AllCartItemsHasTag:Ft,CartItemHasCollection:Bt,IsLoyaltyCustomer:Jt,LoyaltyPointsBalance:Vt,LoyaltyPointsEarned:Ht,PageVisit:Yn,CustomerTag:gr,IsGuest:_r,AbandonedCart:$t,CartAttrName:Rt}}function mr(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=Qe(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);
94n&&Object.entries(t).forEach(e=>{let[t,r]=e;return n[t]=r})}(n,r);const o=Qe(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,Qe(n)}if(["moveElem","automation","visualEdit"].includes(e.kind)){const n=N(e.kind,e.selector,"");n.options=t,n.block=e;const r=Qe(n);return r.htmlId=n.id,r}const n=N(e.kind,e.selector,e.value);return n.options=t,Qe(n)}(e,t)}catch(e){}}).filter(e=>!!e),[]),ur[lr(e)]=n}const fr=new Set;function hr(e){return!!e&&""!==e}const pr=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)}},vr=e=>{const t=_(()=>e.key),n=_(()=>e.value),r=dr();t===Ze.CART_CHANGE?(ir({...r,cart:n}),_(()=>window.loomi_ctx.maintainCartAttributes(n))):t===Ze.LOYALTY_CHANGE&&ir(r)};function wr(e){return sr(e.clientTargetingFormula,void 0,e.name)}function yr(){cr||s(()=>document).then(()=>{document.addEventListener(Q,vr),cr=!0})}function gr(e,t){void 0===t&&(t="");const n=["!","not in"].some(e=>t.includes(e)),r=_(()=>window.loomi_ctx.ctags.includes(e))||!1;return n?!r:r}function _r(){return Promise.resolve(_(()=>!window.loomi_ctx.clientId))}function Sr(e){const t=lr(e),n=ur[t];n&&(n.forEach(e=>_(e.revert)),delete ur[t]),delete ar[t]}const Er=function(e,t,n){try{let r;return Promise.resolve(n()).then(function(n){n?(Pr(t,e),(hr(e.clientTargetingFormula)||function(e){return!!me("trigger-delayed-allocation")&&_(()=>["jsFunction","jsCondition"].includes(e.trigger.type))}(e))&&Mn(e)):r=1})}catch(e){return Promise.reject(e)}};function Pr(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 Ar=new Set,Ir=new Set,br=new Set,Cr=new Set;let xr;function kr(e){void 0===xr&&(xr=new MutationObserver(Tr(e)),xr.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1}))}function Tr(e){return()=>{Nr(Ar,br,(t,n)=>{Er(n,e,()=>(t.add(Or(n.trigger.selector,n)),or(n)))}),Nr(Ir,Cr,(t,n,r)=>{const o=n.trigger;t.add(Or(o.selector,n)),r.addEventListener(o.name,()=>Er(n,e,()=>or(n)),{once:void 0!==o.once&&o.once})})}}function Nr(e,t,n){e.forEach(e=>{_(()=>{const r=e.trigger.selector;document.body.querySelectorAll(r).forEach(o=>{t.has(Or(r,e))||n(t,e,o)})})})}function Or(e,t){return`${e}-${t.name}`}function jr(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 Lr(e){const t=jr(e);return Ur(t),v(()=>new Function(e.code)(window),e.timeoutMillis,e.retries,()=>void 0===Mr(t))}function $r(e){return JSON.parse(localStorage.getItem(e)||"[]")}let Rr=[];const Dr=function(e,t,n){_(()=>t.experiments.forEach(t=>{n&&n.matches(t)?n.onSubscribeCall(t):Br(t,e)}))},Ur=(e,t)=>{Rr.push({handler:e,experienceKey:t})},Mr=e=>Rr.find(t=>t.handler===e),qr=function(e){Rr.filter(t=>t.experienceKey===e).forEach(e=>{try{"number"!=typeof e.handler&&e.handler()}catch(e){}}),Rr=Rr.filter(t=>t.experienceKey!==e)};function Fr(e,t){Br(e,t)}function Br(t,n){switch(_(()=>t.trigger.type)){case e.PageLoad:!function(e,t){Er(e,t,()=>or(e))}(t,n);break;case e.Timeout:!function(e,t){const n=setTimeout(()=>{Er(e,t,()=>or(e))},e.trigger.timeoutMillis);Ur(()=>{n&&clearTimeout(n)})}(t,n);break;case e.Inactivity:!function(e,t){const n=e.trigger.timeoutMillis;let r;function o(){clearTimeout(r),r=setTimeout(()=>{Er(e,t,function(){try{return Promise.resolve(wr(e)).then(function(t){return t&&or(e),t})}catch(e){return Promise.reject(e)}})},n)}o();const c=["mousemove","keypress","scroll","touchstart","touchmove"];Ur(()=>{clearTimeout(r),i(()=>document).then(()=>c.forEach(e=>document.removeEventListener(e,o)))}),s(()=>document,!0).then(()=>
94{c.forEach(e=>document.addEventListener(e,o,{passive:!0}))})}(t,n);break;case e.Selector:!function(e,t){kr(e),Ar.add(t),Tr(e)()}(n,t);break;case e.ExitIntent:!function(e,t){const n=r=>{_(()=>!r.toElement&&!r.relatedTarget)&&Er(e,t,()=>{const t=or(e);return i(()=>document).then(()=>{document.removeEventListener("mouseout",n)}),t})};s(()=>document,!0).then(()=>{document.addEventListener("mouseout",n,{passive:!0})}),Ur(()=>{i(()=>document).then(()=>{document.removeEventListener("mouseout",n)})})}(t,n);break;case e.JSCondition:!function(e,t){Lr(e.trigger).then(()=>{Er(e,t,()=>or(e))}).catch(()=>{})}(t,n);break;case e.JSFunction:!function(e,t){!function(n){try{const r=new Function(`return async function() { ${n.code} }`)()(),o=jr(n);Ur(o),r.then(()=>void 0!==Mr(o)&&void Er(e,t,()=>or(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&&Er(e,t,()=>or(e))}const c=e=>{let t;try{t=new Function(n.jsEvent.matchCode)(e),localStorage.setItem(r,JSON.stringify([...$r(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 _(()=>!!$r(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)}),Ur(()=>{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;Lr(e.jsCond).then(()=>{Br({...t,trigger:e.condition},n)}).catch(()=>{})}}(t,n);break;case e.ElementEvent:!function(e,t){kr(t),Ir.add(e),Tr(t)()}(t,n)}}const Jr=["vsly-backdrop-container","__loomi_crosshair_container"];function Vr(e){let t=_(()=>e.target),n=!1;for(;t;){if(Jr.includes(_(()=>t.id))){n=!0;break}t=_(()=>t.parentElement)}n&&(q("vsly","about to stop propagation of event",e),_(()=>e.stopImmediatePropagation()),_(()=>e.stopPropagation()))}function Hr(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(Kr()){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=Gr(s,c,n),o.format(c)}const Gr=(e,t,n)=>1!==e&&me("exchange-round")||Kr()?(_(()=>window.visually.priceRound)||Math.round)(t,n):t;function zr(){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 Kr=()=>!me("op-locale-currency-no-round");let Wr=window.location.href;const Qr=()=>{requestAnimationFrame(()=>{Wr!==window.location.href&&(Wr=window.location.href,window.dispatchEvent(new CustomEvent("vslyUrlChanged",{detail:{prev:Wr,curr:window.location.href}})))})};var Yr;!function(e){e.NONE="none",e.YOTPO="yotpo"}(Yr||(Yr={}));const Zr={isMember:!1,provider:Yr.NONE};function Xr(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}const eo="vsly-loyalty-ctx",to=(()=>{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:Yr.YOTPO}:Zr},r=e=>{_(()=>"vsly:loyalty-changed"===e.type)&&_(()=>window.swellAPI.refreshCustomerDetails()),t(n())};return{provide:n,onChange:function(n){try{t=n;const o=Xr(function(){return Promise.resolve(v(()=>
94!!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=Xr(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 no(e){Xe(Ze.LOYALTY_CHANGE,e),sessionStorage.setItem(eo,JSON.stringify({ts:(new Date).getTime(),ctx:e})),window.loomi_ctx={...window.loomi_ctx||{},loyalty:e}}const ro="vsly_session";function oo(e){return St((e||"").replace("+"," "))}function io(){const e=window.loomi_ctx.storeAlias,t={id:W(e+window.loomi_ctx.userId+f()+At()+ao()),utm_campaign:At(),last_interaction:new Date,landing_page:_(()=>location.href,""),start_at:new Date};return so(t),t}function so(e){const t=JSON.stringify(e);localStorage.setItem(ro,t),window.loomi_ctx.session=e}function co(){const e=function(){window.loomi_ctx=window.loomi_ctx||{};let e=window.loomi_ctx.session||_(()=>{const e=JSON.parse(localStorage.getItem(ro));return e.last_interaction=new Date(e.last_interaction),e.start_at=new Date(e.start_at),e})||io();return function(e){const t=new Date,n=e.last_interaction;return(t.valueOf()-n.valueOf())/6e4>30||oo(At())!==oo(e.utm_campaign)||e.last_interaction.getDate()!==t.getDate()}(e)&&(e=io()),window.loomi_ctx.session=e,e}();e.last_interaction=new Date,so(e)}const ao=()=>Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);function uo(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 lo=function(e,t,r){void 0===r&&(r=1e3);try{return mo?(console.debug("vsly-sdk","cannot reload since another reload is in progress"),Promise.resolve()):(mo=!0,Promise.resolve(uo(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(ur)),c=x();n.forEach(e=>r.set(Hn(e),e)),o.forEach(e=>i.set(Hn(e),e)),(e=>{window.loomi={..._(()=>window.loomi)||{},conf:e},window.visually={..._(()=>window.visually)||{},flags:e.flags,recsPerVariant:Wn(e)},Jn(e.flags)})(t),((e,t,n)=>{e.forEach((e,r)=>{t.has(r)||(n.has(r)&&Sr(e),qr(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?Gn(i)!==Gn(e)&&(r.has(o)&&Sr(i),qr(o),on([e]),Fr(e,n)):(on([e]),Fr(e,n))})})(i,r,c,s)})}catch(e){return Promise.reject(e)}}(e,t,fo)).then(function(){}):Promise.resolve(function(){try{return cr&&i(()=>document).then(()=>{document.removeEventListener(Q,vr),cr=!1}),Rr.forEach(e=>{try{"number"!=typeof e.handler&&e.handler()}catch(e){}}),Rr=[],Array.from($.keys()).forEach(e=>{We(e)}),Je&&Je.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(uo(function(){return function(r,o){try{var i=(function(){if(window.vsly_blocked)throw Tn(),new Error(Dn)}(),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(ho(t,e,void 0)).then(function(n){let{configuration:r,tracking:o}=n;return po(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(Be()).then(function(){on(o.experiments),Dr(r,o),Vn(e,t,lo),dt()})}))}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){_(()=>e.message)!==Dn&&F("failed initialising sdk",e)})},function(e,t){if(Tn(),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(mo=!1,e)throw t;return t})))}catch(e){return Promise.reject(e)}};let mo=!1;const fo=function(e,t,n){try{return m(),Promise.resolve(Rn(e,t,n))}catch(e){return Promise.reject(e)}},ho=function(e,t,n){try{return _(co),m(),Promise.resolve(Rn(e,t,n))}catch(e){return Promise.reject(e)}},po=function(e,t,n,r){try{return Jn(e.flags),function(e,t,n,r,o,i){yr(),window.loomi_ctx={..._(()=>window.loomi_ctx)||{},env:t,storeAlias:e,apply:e=>{on([e]),or(e)},shouldApply:sr};const s=_(()=>
94o.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:Wn(n),sdk_api:{addToCart:an,recommendProducts:gn,getProductsMetafields:Nn,fetchRecs:An},reAllocate:i,rerender:zn,reload:function(){try{return Promise.resolve(r(t,e,1e3)).then(function(){})}catch(e){return Promise.reject(e)}}}}(t,n,e,lo,Tt(),fo),function(e){try{if(e.noActiveThemeTests){if(Pe(0))return;be()}else(e=>!(e.experiments||[]).find(e=>e.isThemeTest)&&_(xe)&&!![localStorage,sessionStorage].find(je))(e)&&be()}catch(e){}}(e),Promise.resolve(yo()).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=On,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=bn(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=Cn(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=xn(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=`${kn(4)}${t}${kn(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=qn(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(bn(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(xn(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(Cn(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=Qn,_(()=>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,Hr,zr),a=e.first_seen,(c=e.uid)!==(l=r.id)&&c&&a>0?(window.loomi_ctx.userId=c,Kt(c,a)):window.loomi_ctx.userId=l,function(e,t){try{return _(()=>window.loomi_ctx.cc)&&v(b,1e3,120).then(()=>Kt(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",Vr,{capture:!0,passive:!0}),document.addEventListener("mousedown",Vr,{capture:!0,passive:!0}),document.addEventListener("touchstart",Vr,{capture:!0,passive:!0}),document.addEventListener("touchend",Vr,{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")?wo!==window.location.href:new URL(wo).pathname!==new URL(window.location.href).pathname)&&(wo=window.location.href,n(),vo(e,t,10))})})||Qr,o=["click","touchend","pdpresp"];return s(()=>document.body,!0).then(()=>
94{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(){no(function(){const e=sessionStorage.getItem(eo);if(e){const t=_(()=>JSON.parse(e));if(t&&t.ts>(new Date).getTime()-3e5)return t.ctx}}()||Zr);const e=_(()=>!0===window.visually.flags["loyalty-targeting"]),t=function(){if(e)return Promise.resolve(function(e){try{return e.onChange(e=>{no(e)}),Promise.resolve(e.connect()).then(function(){const t=e.provide();return no(t),{ctx:t,disconnect:e.disconnect}})}catch(e){return Promise.reject(e)}}(to)).then(function(){const e=document.querySelectorAll('[href*="/account/logout"]');e&&Array.from(e).forEach(e=>{e.addEventListener("click",()=>(sessionStorage.removeItem(eo),!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=x();return{configuration:e,jitsu:d}})}catch(e){return Promise.reject(e)}},vo=u(lo,10);let wo=window.location.href;const yo=function(){try{return Promise.resolve(function(){if(me("block-do-not-track"))return Promise.resolve(C()).then(function(e){if(!e)throw new Error(Dn)})}())}catch(e){return Promise.reject(e)}};function go(e){return e.startsWith("https://")?e.substring(8):e}function _o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch{return""}}var So;!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"}(So||(So={}));let Eo=[];const Po=function(e,t){if(void 0===t&&(t=0),0===Eo.length)return;const n=Eo;Eo=[];const r=Io(n),o=Ao(n);e({bulk:o,shared:r},!0).catch(()=>{const r=n.concat(Eo);r.length<100&&(Eo=r,t<2&&setTimeout(()=>Po(e,t+1),500*Math.pow(2,t)))})};u(Po,100);const Ao=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}),Io=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},{})},bo=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(qn(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&&x().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)}},Co="vsly_analytics_queue";
94function xo(e,t,n){void 0===n&&(n=!1);try{const r=window.loomi_ctx,o=r.storeAlias,i=r.jitsuKey,s=Et(),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=ko();a.push(c),To(a)}catch(e){console.error("vsly: Failed to queue analytics event",e)}}function ko(){try{const e=localStorage.getItem(Co);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 To(e){try{localStorage.setItem(Co,JSON.stringify(e))}catch(e){console.error("vsly: Failed to save analytics queue",e)}}const No=(e,t)=>{try{localStorage.setItem(e,JSON.stringify({variant:t.experiment.variant,version:t.experiment.version||0}))}catch(e){}},Oo=(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},jo=e=>`vsly_redirect_test_${e[0].experiment.name}`,Lo=(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},$o=function(e){void 0===e&&(e=!0);const t=window.loomi_ctx.consent;t.allowed=e,t.fin||(t.fin=Ro())},Ro=()=>(new Date).getTime(),Do=()=>window.Shopify.customerPrivacy,Uo=["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"],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=()=>Promise.resolve(),Jo=()=>(window.loomi_ctx=window.loomi_ctx||{},window.loomi_ctx.performanceMetrics=window.loomi_ctx.performanceMetrics||{},window.loomi_ctx.performanceMetrics);function Vo(){try{const e=Jo().as;if(void 0===e)return;const t=performance.now();Object.assign(Jo(),{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(Jo(),{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 Ho(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}function Go(){return _(co),zt(),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=jo(e);let n=Oo(t,e);if(n=Lo(n,e),!n)return;if(!n.experiment)return;No(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});xo(i,zt(),_(()=>!!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=go(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=go(o.split("?")[0]).toLowerCase(),d="",m=u;if(d=(new URL(o).host+i).toLowerCase(),n){const e=r?_o(r.substring(1)):"";if(e&&(l+="?"+e,d+="?"+e),a){const e=_o(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)}
94(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=jo(t);let r=Oo(n,t);if(r=Lo(r,t),!r)return;if(!r.experiment)return;No(n,r);const o=r.experiment,i=ne({experienceId:o.name,variantId:o.variant,version:o.version,gaExperienceName:o.gaName,gaVariantName:o.gaVariant});xo(i,zt(),_(()=>!!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 zo=()=>window.loomi_ctx.blockingConcent;(function(){try{let t;function e(e){if(t)return e;(function(){const e=ko();e.length>0&&Promise.allSettled(e.map(bo)).then(t=>{To(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&&!Uo.includes(e)};return new Promise((t,n)=>{const r=window.loomi_ctx.consent||={};r.init=qo(),(se()?Bo():v(se,50,200)).then(()=>{e()&&(Mo(),t())}),(_(()=>Fo().analyticsProcessingAllowed)?Bo():v(()=>_(()=>Fo().analyticsProcessingAllowed),50,200)).then(()=>{const r=Fo().analyticsProcessingAllowed()||e();Mo(r),r?t():n()}),r.ccListener||(document.addEventListener("visitorConsentCollected",r=>{const o=r.detail.analyticsAllowed||e();Mo(o),o?t():n()}),r.ccListener=!0)})})().catch(),function(){try{Jo().as=performance.now()}catch(e){}}();const s=ho(o,i);return s.then(Vo),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()})(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(Ho(function(){return Promise.resolve(po(e,n,r,t)).then(function(e){let{jitsu:t,configuration:o}=e;if(!_(()=>o.flags["kill-switch"]))return Promise.resolve(Be()).then(function(){on(o.experiments),Dr(t,o),Vn(r,n,lo),dt()})})},function(e){_(()=>e.message)!==Dn&&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(Tn)}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.163";const{storeAlias:o,env:i}=window.loomi_ctx;if(!zo()&&Go())return Promise.resolve();const s=function(){if(zo()){function e(e){return t?e:window.loomi_ctx.consent.allowed?void(Go()&&(t=1)):(Tn(),void(t=1))}const n=Ho(function(){return Promise.resolve((console.log("consent api init"),new Promise((e,t)=>{const n=window.loomi_ctx.consent||={};n.init=Ro(),(_(()=>Do().analyticsProcessingAllowed)?Promise.resolve():v(()=>_(()=>Do().analyticsProcessingAllowed),50,200)).then(()=>{const n=window.Shopify.customerPrivacy.analyticsProcessingAllowed();console.log("consent api",n),$o(n),n?e():t()}),n.ccListener||(document.addEventListener("visitorConsentCollected",()=>{const n=window.Shopify.customerPrivacy.analyticsProcessingAllowed();console.log("visitorConsentCollected",n),$o(n),n?e():t()}),n.ccListener=!0)}))).then(function(){})},function(){Tn(),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"))}(); 95 96</script>
vendor: 1 bytes, line 96
96
97<script data-vsly="preact2" type="text/javascript" data-em-disable> 98 // Preact 99!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}
99if(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)}
99_.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
99ise.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}); 100// Preact Hooks 101!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)}]}}); 102// Preact Compat 103!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&&
103(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]}
103,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}); 104// Goober 105!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);
105s[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}}}); 106 107</script>
107 108<!--LOOMI SDK--> 109 110 111 <!-- 112 113--> 114<meta http-equiv="Content-Security-Policy" content=" 115 default-src 'self' https: data:; 116 script-src 'self' 'unsafe-inline' 'unsafe-eval' https: data: blob:; 117 script-src-elem 'self' 'unsafe-inline' https: blob:; 118 connect-src 'self' https: wss: ws: data: blob:; 119 img-src 'self' https: data: blob:; 120 style-src 'self' 'unsafe-inline' https:; 121 font-src 'self' https: data:; 122 frame-src 'self' https:; 123 worker-src 'self' blob: https:; 124 object-src 'none'; 125 base-uri 'self'; 126 form-action 'self' https:; 127 upgrade-insecure-requests; 128"> 129 <!-- 130 Permissions Policy - Documents browser feature restrictions 131 132 The 'unload' event is deprecated because it blocks Back/Forward Cache (bfcache). 133 Modern browsers enforce this by default. We explicitly document it here. 134 Note: This warning typically comes from Shopify's own scripts or third-party apps, 135 not your theme code. The browser handles it gracefully by ignoring the listener. 136--> 137<meta http-equiv="Permissions-Policy" content="unload=()"> 138 <!-- snippets/theme__meta.liquid --> 139 140 141<meta charset="utf-8"> 142<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"><title>Espresso Machine and Coffee How-To Articles, News, and Resources | Seattle Coffee Gear</title> 143 144 145 146 147 148 149 <link href="https://www.seattlecoffeegear.com/pages/learn-articles" rel="canonical"> 150 151 152 153 <link href="//www.seattlecoffeegear.com/cdn/shop/files/SCG-Logo-Icon-Red.png?crop=center&height=180&v=1766179016&width=180" rel="apple-touch-icon" sizes="180x180"> 154 <link href="//www.seattlecoffeegear.com/cdn/shop/files/SCG-Logo-Icon-Red.png?crop=center&height=32&v=1766179016&width=32" rel="icon" type="image/png" sizes="32x32"> 155 156<meta name="msapplication-TileColor" content="#ffffff"> 157<meta name="theme-color" content="#282828"> 158<meta name="description" content="See The Best Espresso Machine Reviews And Coffee News And The Latest from the coffee experts at Seattle Coffee Gear here!"> 159 160<meta property="og:url" content="https://www.seattlecoffeegear.com/pages/learn-articles"> 161<meta property="og:site_name" content="Seattle Coffee Gear"> 162<meta property="og:type" content="article"> 163<meta property="og:title" content="Espresso Machine and Coffee How-To Articles, News, and Resources"> 164<meta property="og:description" content="See The Best Espresso Machine Reviews And Coffee News And The Latest from the coffee experts at Seattle Coffee Gear here!"><meta property="og:image" content="http://www.seattlecoffeegear.com/cdn/shop/files/ShopifySocial_Image.jpg?v=1771609577"> 165 <meta property="og:image:secure_url" content="https://www.seattlecoffeegear.com/cdn/shop/files/ShopifySocial_Image.jpg?v=1771609577"> 166 <meta property="og:image:width" content="2400"> 167 <meta property="og:image:height" content="1256"><meta name="twitter:title" content="Espresso Machine and Coffee How-To Articles, News, and Resources"> 168<meta name="twitter:site" content="seacoffeegear"> 169<meta name="twitter:description" content="See The Best Espresso Machine Reviews And Coffee News And The Latest from the coffee experts at Seattle Coffee Gear here!"> 170<meta name="twitter:card" content="summary_large_image"> 171 172<meta name="google-site-verification" content="btQGHYqYHcIsiFKx1fnqowGQjkdmJPtArYl3xlcnhh4"> 173<meta name="google-site-verification" content="X2_qWSIj1AyuLWbDQGMkbFl-ucnd0fBz3zY87o2ZxAM"> 174<meta name="p:domain_verify" content="VjegNAxdBVr4AmoTxSZgskgBOLAtEZ9L"> 175<meta name="facebook-domain-verification" content="8zqajx721zcxjkhjbbcha7x8qpr00y"> 176<meta name="facebook-domain-verification" content="oor0zb0pifll2pvm8b6j0lzgraihzv"> 177 178 179 <link 180 rel="preconnect" 181 href="https://cdn.shopify.com" 182 crossorigin><link 183 rel="preconnect" 184 href="https://fonts.shopifycdn.com" 185 crossorigin><!-- Pandectes -->
186<script id="pandectes-rules">� /* PANDECTES-GDPR: DO NOT MODIFY AUTO GENERATED CODE OF THIS SCRIPT */� � window.PandectesSettings = {"store":{"id":83175735603,"plan":"enterprise","theme":"scg-shopify/main","primaryLocale":"en","adminMode":false,"headless":false,"storefrontRootDomain":"","checkoutRootDomain":"","storefrontAccessToken":""},"tsPublished":1715810986,"declaration":{"showPurpose":false,"showProvider":false,"declIntroText":"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.","showDateGenerated":true},"language":{"languageMode":"Single","fallbackLanguage":"en","languageDetection":"browser","languagesSupported":[]},"texts":{"managed":{"headerText":{"en":"We respect your privacy"},"consentText":{"en":"This website uses cookies to ensure you get the best experience."},"dismissButtonText":{"en":"Ok"},"linkText":{"en":"Learn more"},"imprintText":{"en":"Imprint"},"preferencesButtonText":{"en":"Preferences"},"allowButtonText":{"en":"Accept"},"denyButtonText":{"en":"Decline"},"leaveSiteButtonText":{"en":"Leave this site"},"cookiePolicyText":{"en":"Cookie policy"},"preferencesPopupTitleText":{"en":"Manage consent preferences"},"preferencesPopupIntroText":{"en":"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."},"preferencesPopupCloseButtonText":{"en":"Close"},"preferencesPopupAcceptAllButtonText":{"en":"Accept all"},"preferencesPopupRejectAllButtonText":{"en":"Reject all"},"preferencesPopupSaveButtonText":{"en":"Save preferences"},"accessSectionTitleText":{"en":"Data portability"},"accessSectionParagraphText":{"en":"You have the right to request access to your data at any time."},"rectificationSectionTitleText":{"en":"Data Rectification"},"rectificationSectionParagraphText":{"en":"You have the right to request your data to be updated whenever you think it is appropriate."},"erasureSectionTitleText":{"en":"Right to be forgotten"},"erasureSectionParagraphText":{"en":"You have the right to ask all your data to be erased. After that, you will no longer be able to access your account."},"declIntroText":{"en":"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."}}
186,"categories":{"strictlyNecessaryCookiesTitleText":{"en":"Strictly necessary cookies"},"functionalityCookiesTitleText":{"en":"Functional cookies"},"performanceCookiesTitleText":{"en":"Performance cookies"},"targetingCookiesTitleText":{"en":"Targeting cookies"},"unclassifiedCookiesTitleText":{"en":"Unclassified cookies"},"strictlyNecessaryCookiesDescriptionText":{"en":"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."},"functionalityCookiesDescriptionText":{"en":"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."},"performanceCookiesDescriptionText":{"en":"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."},"targetingCookiesDescriptionText":{"en":"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."},"unclassifiedCookiesDescriptionText":{"en":"Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies."}},"auto":{"declName":{"en":"Name"},"declPath":{"en":"Path"},"declType":{"en":"Type"},"declDomain":{"en":"Domain"},"declPurpose":{"en":"Purpose"},"declProvider":{"en":"Provider"},"declRetention":{"en":"Retention"},"declFirstParty":{"en":"First-party"},"declThirdParty":{"en":"Third-party"},"declSeconds":{"en":"seconds"},"declMinutes":{"en":"minutes"},"declHours":{"en":"hours"},"declDays":{"en":"days"},"declMonths":{"en":"months"},"declYears":{"en":"years"},"declSession":{"en":"Session"},"cookiesDetailsText":{"en":"Cookies details"},"preferencesPopupAlwaysAllowedText":{"en":"Always allowed"},"submitButton":{"en":"Submit"},"submittingButton":{"en":"Submitting..."},"cancelButton":{"en":"Cancel"},"guestsSupportInfoText":{"en":"Please login with your customer account to further proceed."},"guestsSupportEmailPlaceholder":{"en":"E-mail address"},"guestsSupportEmailValidationError":{"en":"Email is not valid"},"guestsSupportEmailSuccessTitle":{"en":"Thank you for your request"},"guestsSupportEmailFailureTitle":{"en":"A problem occurred"},"guestsSupportEmailSuccessMessage":{"en":"If you are registered as a customer of this store, you will soon receive an email with instructions on how to proceed."},"guestsSupportEmailFailureMessage":{"en":"Your request was not submitted. Please try again and if problem persists, contact store owner for assistance."},"confirmationSuccessTitle":{"en":"Your request is verified"},"confirmationFailureTitle":{"en":"A problem occurred"},"confirmationSuccessMessage":{"en":"We will soon get back to you as to your request."},"confirmationFailureMessage":{"en":"Your request was not verified. Please try again and if problem persists, contact store owner for assistance"},"consentSectionTitleText":{"en":"Your cookie consent"},"consentSectionNoConsentText":{"en":"You have not consented to the cookies policy of this website."},"consentSectionConsentedText":{"en":"You consented to the cookies policy of this website on"},"consentStatus":{"en":"Consent preference"},"consentDate":{"en":"Consent date"},"consentId":{"en":"Consent ID"},"consentSectionChangeConsentActionText":{"en":"Change consent preference"},"accessSectionGDPRRequestsActionText":{"en":"Data subject requests"},"accessSectionAccountInfoActionText":{"en":"Personal data"},"accessSectionOrdersRecordsActionText":{"en":"Orders"},"accessSectionDownloadReportActionText":{"en":"Request export"},"rectificationCommentPlaceholder":{"en":"Describe what you want to be updated"},"rectificationCommentValidationError":{"en":"Comment is required"},"rectificationSectionEditAccountActionText":{"en":"Request an update"}
186,"erasureSectionRequestDeletionActionText":{"en":"Request personal data deletion"}}},"library":{"previewMode":false,"fadeInTimeout":0,"defaultBlocked":0,"showLink":true,"showImprintLink":false,"enabled":true,"cookie":{"name":"_pandectes_gdpr","expiryDays":365,"secure":true,"domain":""},"dismissOnScroll":200,"dismissOnWindowClick":true,"dismissOnTimeout":false,"palette":{"popup":{"background":"#FFFFFF","backgroundForCalculations":{"a":1,"b":255,"g":255,"r":255},"text":"#000000"},"button":{"background":"#4E535A","backgroundForCalculations":{"a":1,"b":90,"g":83,"r":78},"text":"#FFFFFF","textForCalculation":{"a":1,"b":255,"g":255,"r":255},"border":"transparent"}},"content":{"href":"https://seattlecoffeegear.myshopify.com/policies/privacy-policy","imprintHref":"/","close":"✕","target":"_blank","logo":""},"window":"<div role=\"dialog\" aria-live=\"polite\" aria-label=\"cookieconsent\" aria-describedby=\"cookieconsent:desc\" id=\"pandectes-banner\" class=\"cc-window-wrapper cc-bottom-center-wrapper\"><div class=\"pd-cookie-banner-window cc-window {{classes}}\"><!--googleoff: all-->{{children}}<!--googleon: all--></div></div>","compliance":{"custom":"<div class=\"cc-compliance cc-highlight\">{{preferences}}{{dismiss}}</div>"},"type":"custom","layouts":{"basic":"{{messagelink}}{{compliance}}{{close}}"},"position":"bottom-center","theme":"classic","revokable":false,"animateRevokable":false,"revokableReset":false,"revokableLogoUrl":"https://cdn.shopify.com/s/files/1/0831/7573/5603/t/4/assets/pandectes-reopen-logo.png?v=1712168356","revokablePlacement":"bottom-left","revokableMarginHorizontal":15,"revokableMarginVertical":15,"static":false,"autoAttach":true,"hasTransition":true,"blacklistPage":[""]},"geolocation":{"brOnly":false,"caOnly":false,"chOnly":false,"euOnly":false,"jpOnly":false,"thOnly":false,"zaOnly":false,"canadaOnly":false,"globalVisibility":true},"dsr":{"guestsSupport":true,"accessSectionDownloadReportAuto":false},"banner":{"resetTs":1711657414,"extraCss":" .cc-banner-logo {max-width: 24em!important;} @media(min-width: 768px) {.cc-window.cc-floating{max-width: 24em!important;width: 24em!important;}} .cc-message, .pd-cookie-banner-window .cc-header, .cc-logo {text-align: center} .cc-window-wrapper{z-index: 2147483647;} .cc-window{z-index: 2147483647;font-size: 14px!important;font-family: inherit;} .pd-cookie-banner-window .cc-header{font-size: 14px!important;font-family: inherit;} .pd-cp-ui{font-family: inherit; background-color: #FFFFFF;color:#000000;} button.pd-cp-btn, a.pd-cp-btn{background-color:#4E535A;color:#FFFFFF!important;} input + .pd-cp-preferences-slider{background-color: rgba(0, 0, 0, 0.3)} .pd-cp-scrolling-section::-webkit-scrollbar{background-color: rgba(0, 0, 0, 0.3)} input:checked + .pd-cp-preferences-slider{background-color: rgba(0, 0, 0, 1)} .pd-cp-scrolling-section::-webkit-scrollbar-thumb {background-color: rgba(0, 0, 0, 1)} .pd-cp-ui-close{color:#000000;} .pd-cp-preferences-slider:before{background-color: #FFFFFF} .pd-cp-title:before {border-color: #000000!important} .pd-cp-preferences-slider{background-color:#000000} .pd-cp-toggle{color:#000000!important} @media(max-width:699px) {.pd-cp-ui-close-top svg {fill: #000000}} .pd-cp-toggle:hover,.pd-cp-toggle:visited,.pd-cp-toggle:active{color:#000000!important} .pd-cookie-banner-window {box-shadow: 0 0 18px rgb(0 0 0 / 20%);} ","customJavascript":null,"showPoweredBy":false,"revokableTrigger":false,"hybridStrict":false,"cookiesBlockedByDefault":"0","isActive":true,"implicitSavePreferences":false,"cookieIcon":false,"blockBots":false,"showCookiesDetails":true,"hasTransition":true,"blockingPage":false,"showOnlyLandingPage":false,"leaveSiteUrl":"https://www.google.com","linkRespectStoreLang":false},"cookies":{"0":[{"name":"keep_alive","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"30 minute(s)","expires":30,"unit":"declMinutes","purpose":{"en":"Used in connection with buyer localization."}},{"name":"secure_customer_sig","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","expires":1,"unit":"declYears","purpose":{"en":"Used in connection with customer login."}},{"name":"localization","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","expires":1,"unit":"declYears","purpose":{"en":"Shopify store localization"}},{"name":"cart_currency","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"2 ","expires":2,"unit":"declSession","purpose":{"en":"The cookie is necessary for the secure checkout and payment function on the website. This function is provided by shopify.com."}},{"name":"_cmp_a","domain":".seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","expires":1,"unit":"declDays","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_tracking_consent","domain":".seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","expires":1,"unit":"declYears","purpose":{"en":"Tracking preferences."}},{"name":"shopify_pay_redirect","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 hour(s)","expires":1,"unit":"declHours","purpose":{"en":"The cookie is necessary for the secure checkout and payment function on the website. This function is provided by shopify.com."}}],"1":[],"2":[],"4":[{"name":"pixlee_analytics_cookie_legacy","domain":".seattlecoffeegear.myshopify.com","path":"/","provider":"Pixlee","firstParty":true,"retention":"1 month(s)","expires":1,"unit":"declMonths","purpose":{"en":""}}],"8":[]},"blocker":{"isActive":false,"googleConsentMode":{"id":"","analyticsId":"","adwordsId":"","isActive":false,"adStorageCategory":4,"analyticsStorageCategory":2,"personalizationStorageCategory":1,"functionalityStorageCategory":1,"customEvent":false,"securityStorageCategory":0,"redactData":false,"urlPassthrough":false,"dataLayerProperty":"dataLayer","waitForUpdate":0,"useNativeChannel":false},"facebookPixel":{"id":"","isActive":false,"ldu":false},"rakuten":{"isActive":false,"cmp":false,"ccpa":false},"klaviyoIsActive":false,"gpcIsActive":false,"defaultBlocked":0,"patterns":{"whiteList":[],"blackList":{"1":[],"2":[],"4":[],"8":[]},"iframesWhiteList":[],"iframesBlackList":{"1":[],"2":[],"4":[],"8":[]},"beaconsWhiteList":[],"beaconsBlackList":{"1":[],"2":[],"4":[],"8":[]}}}}� � !function(){"use strict";window.PandectesRules=window.PandectesRules||{},window.PandectesRules.manualBlacklist={1:[],2:[],4:[]},window.PandectesRules.blacklistedIFrames={1:[],2:[],4:[]},window.PandectesRules.blacklistedCss={1:[],2:[],4:[]},window.PandectesRules.blacklistedBeacons={1:[],2:[],4:[]};var e="javascript/blocked";function t(e){return new RegExp(e.replace(/[/\\.+?$()]/g,"\\$&").replace("*","(.*)"))}var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"log";new URLSearchParams(window.location.search).get("log")&&console[t]("PandectesRules: ".concat(e))};function a(e){var t=document.createElement("script");t.async=!0,t.src=e,document.head.appendChild(t)}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};
186t%2?r(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t,n){return(t=i(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,i,s=[],c=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){l=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw r}}return s}}(e,t)||d(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}var p=window.PandectesRulesSettings||window.PandectesSettings,g=!(void 0===window.dataLayer||!Array.isArray(window.dataLayer)||!window.dataLayer.some((function(e){return"pandectes_full_scan"===e.event}))),y=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"_pandectes_gdpr",n=("; "+document.cookie).split("; "+t+"=");if(n.length<2)e={};else{var a=n.pop().split(";");e=window.atob(a.shift())}var r=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e);return!1!==r?r:e}(),h=p.banner.isActive,v=p.blocker,w=v.defaultBlocked,m=v.patterns,b=y&&null!==y.preferences&&void 0!==y.preferences?y.preferences:null,k=g?0:h?null===b?w:b:0,_={1:0==(1&k),2:0==(2&k),4:0==(4&k)},L=m.blackList,S=m.whiteList,C=m.iframesBlackList,P=m.iframesWhiteList,A=m.beaconsBlackList,O=m.beaconsWhiteList,j={blackList:[],whiteList:[],iframesBlackList:{1:[],2:[],4:[],8:[]},iframesWhiteList:[],beaconsBlackList:{1:[],2:[],4:[],8:[]},beaconsWhiteList:[]};[1,2,4].map((function(e){var n;_[e]||((n=j.blackList).push.apply(n,u(L[e].length?L[e].map(t):[])),j.iframesBlackList[e]=C[e].length?C[e].map(t):[],j.beaconsBlackList[e]=A[e].length?A[e].map(t):[])})),j.whiteList=S.length?S.map(t):[],j.iframesWhiteList=P.length?P.map(t):[],j.beaconsWhiteList=O.length?O.map(t):[];var E={scripts:[],iframes:{1:[],2:[],4:[]},beacons:{1:[],2:[],4:[]},css:{1:[],2:[],4:[]}},B=function(t,n){return t&&(!n||n!==e)&&(!j.blackList||j.blackList.some((function(e){return e.test(t)})))&&(!j.whiteList||j.whiteList.every((function(e){return!e.test(t)})))},I=function(e){var t=e.getAttribute("src");return j.blackList&&j.blackList.every((function(e){return!e.test(t)}))||j.whiteList&&j.whiteList.some((function(e){return e.test(t)}))},R=function(e,t){var n=j.iframesBlackList[t],a=j.iframesWhiteList;return e&&(!n||n.some((function(t){return t.test(e)})))&&(!a||a.every((function(t){return!t.test(e)})))},T=function(e,t){var n=j.beaconsBlackList[t],a=j.beaconsWhiteList;return e&&(!n||n.some((function(t){return t.test(e)})))&&(!a||a.every((function(t){return!t.test(e)})))},N=new MutationObserver((function(e){for(var t=0;t<e.length;t++)for(var n=e[t].addedNodes,a=0;a<n.length;a++){var r=n[a],o=r.dataset&&r.dataset.cookiecategory;if(1===r.nodeType&&"LINK"===r.tagName){var i=r.dataset&&r.dataset.href;if(i&&o)switch(o){case"functionality":case"C0001":E.css[1].push(i);break;case"performance":case"C0002":E.css[2].push(i);break;case"targeting":case"C0003":E.css[4].push(i)}}}})),x=new MutationObserver((function(t){for(var n=0;n<t.length;n++)for(var a=t[n].addedNodes,r=function(){var t=a[o],n=t.src||t.dataset&&t.dataset.src,r=t.dataset&&t.dataset.cookiecategory;if(1===t.nodeType&&"IFRAME"===t.tagName){if(n){var i=!1;R(n,1)||"functionality"===r||"C0001"===r?(i=!0,E.iframes[1].push(n)):R(n,2)||"performance"===r||"C0002"===r?(i=!0,E.iframes[2].push(n)):(R(n,4)||"targeting"===r||"C0003"===r)&&(i=!0,E.iframes[4].push(n)),i&&(t.removeAttribute("src"),t.setAttribute("data-src",n))}}else if(1===t.nodeType&&"IMG"===t.tagName){if(n){var s=!1;T(n,1)?(s=!0,E.beacons[1].push(n)):T(n,2)?(s=!0,E.beacons[2].push(n)):T(n,4)&&(s=!0,E.beacons[4].push(n)),s&&(t.removeAttribute("src"),t.setAttribute("data-src",n))}}else if(1===t.nodeType&&"LINK"===t.tagName){var c=t.dataset&&t.dataset.href;if(c&&r)switch(r){case"functionality":case"C0001":E.css[1].push(c);break;case"performance":case"C0002":E.css[2].push(c);break;case"targeting":case"C0003":E.css[4].push(c)}}
186else if(1===t.nodeType&&"SCRIPT"===t.tagName){var l=t.type,u=!1;if(B(n,l))u=!0;else if(n&&r)switch(r){case"functionality":case"C0001":u=!0,window.PandectesRules.manualBlacklist[1].push(n);break;case"performance":case"C0002":u=!0,window.PandectesRules.manualBlacklist[2].push(n);break;case"targeting":case"C0003":u=!0,window.PandectesRules.manualBlacklist[4].push(n)}if(u){E.scripts.push([t,l]),t.type=e;t.addEventListener("beforescriptexecute",(function n(a){t.getAttribute("type")===e&&a.preventDefault(),t.removeEventListener("beforescriptexecute",n)})),t.parentElement&&t.parentElement.removeChild(t)}}},o=0;o<a.length;o++)r()})),D=document.createElement,M={src:Object.getOwnPropertyDescriptor(HTMLScriptElement.prototype,"src"),type:Object.getOwnPropertyDescriptor(HTMLScriptElement.prototype,"type")};window.PandectesRules.unblockCss=function(e){var t=E.css[e]||[];t.length&&n("Unblocking CSS for ".concat(e)),t.forEach((function(e){var t=document.querySelector('link[data-href^="'.concat(e,'"]'));t.removeAttribute("data-href"),t.href=e})),E.css[e]=[]},window.PandectesRules.unblockIFrames=function(e){var t=E.iframes[e]||[];t.length&&n("Unblocking IFrames for ".concat(e)),j.iframesBlackList[e]=[],t.forEach((function(e){var t=document.querySelector('iframe[data-src^="'.concat(e,'"]'));t.removeAttribute("data-src"),t.src=e})),E.iframes[e]=[]},window.PandectesRules.unblockBeacons=function(e){var t=E.beacons[e]||[];t.length&&n("Unblocking Beacons for ".concat(e)),j.beaconsBlackList[e]=[],t.forEach((function(e){var t=document.querySelector('img[data-src^="'.concat(e,'"]'));t.removeAttribute("data-src"),t.src=e})),E.beacons[e]=[]},window.PandectesRules.unblockInlineScripts=function(e){var t=1===e?"functionality":2===e?"performance":"targeting";document.querySelectorAll('script[type="javascript/blocked"][data-cookiecategory="'.concat(t,'"]')).forEach((function(e){var t=e.textContent;e.parentNode.removeChild(e);var n=document.createElement("script");n.type="text/javascript",n.textContent=t,document.body.appendChild(n)}))},window.PandectesRules.unblock=function(a){a.length<1?(j.blackList=[],j.whiteList=[],j.iframesBlackList=[],j.iframesWhiteList=[]):(j.blackList&&(j.blackList=j.blackList.filter((function(e){return a.every((function(t){return"string"==typeof t?!e.test(t):t instanceof RegExp?e.toString()!==t.toString():void 0}))}))),j.whiteList&&(j.whiteList=[].concat(u(j.whiteList),u(a.map((function(e){if("string"==typeof e){var n=".*"+t(e)+".*";if(j.whiteList.every((function(e){return e.toString()!==n.toString()})))return new RegExp(n)}else if(e instanceof RegExp&&j.whiteList.every((function(t){return t.toString()!==e.toString()})))return e;return null})).filter(Boolean)))));for(var r=document.querySelectorAll('script[type="'.concat(e,'"]')),o=0;o<r.length;o++){var i=r[o];I(i)&&(E.scripts.push([i,"application/javascript"]),i.parentElement.removeChild(i))}var s=0;u(E.scripts).forEach((function(e,t){var n=l(e,2),a=n[0],r=n[1];if(I(a)){for(var o=document.createElement("script"),i=0;i<a.attributes.length;i++){var c=a.attributes[i];"src"!==c.name&&"type"!==c.name&&o.setAttribute(c.name,a.attributes[i].value)}o.setAttribute("src",a.src),o.setAttribute("type",r||"application/javascript"),document.head.appendChild(o),E.scripts.splice(t-s,1),s++}})),0==j.blackList.length&&0===j.iframesBlackList[1].length&&0===j.iframesBlackList[2].length&&0===j.iframesBlackList[4].length&&0===j.beaconsBlackList[1].length&&0===j.beaconsBlackList[2].length&&0===j.beaconsBlackList[4].length&&(n("Disconnecting observers"),x.disconnect(),N.disconnect())};var z,W,F=p.store.adminMode,U=p.banner.isActive,q=p.blocker,J=q.defaultBlocked;U&&(z=function(){!function(){var e=window.Shopify.trackingConsent;if(!1!==e.shouldShowBanner()||null!==b||7!==J)try{var t=F&&!(window.Shopify&&window.Shopify.AdminBarInjector),a={preferences:0==(1&k)||g||t,analytics:0==(2&k)||g||t,marketing:0==(4&k)||g||t};e.firstPartyMarketingAllowed()===a.marketing&&e.analyticsProcessingAllowed()===a.analytics&&e.preferencesProcessingAllowed()===a.preferences||(a.sale_of_data=a.marketing,e.setTrackingConsent(a,(function(e){e&&e.error?n("Shopify.customerPrivacy API - failed to setTrackingConsent"):n("setTrackingConsent(".concat(JSON.stringify(a),")"))})))}catch(e){n("Shopify.customerPrivacy API - exception")}}(),function(){var e=window.Shopify.trackingConsent,t=e.currentVisitorConsent();if(q.gpcIsActive&&"CCPA"===e.getRegulation()&&"no"===t.gpc&&"yes"!==t.sale_of_data){var a={sale_of_data:!1};e.setTrackingConsent(a,(function(e){e&&e.error?n("Shopify.customerPrivacy API - failed to setTrackingConsent({".concat(JSON.stringify(a),")")):n("setTrackingConsent(".concat(JSON.stringify(a),")"))}))}}()},W=null,window.Shopify&&window.Shopify.loadFeatures&&window.Shopify.trackingConsent?z():W=setInterval((function(){window.Shopify&&window.Shopify.loadFeatures&&(clearInterval(W),window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],(function(e){e?n("Shopify.customerPrivacy API - failed to load"):(n("shouldShowBanner() -> ".concat(window.Shopify.trackingConsent.shouldShowBanner()," | saleOfDataRegion() -> ").concat(window.Shopify.trackingConsent.saleOfDataRegion())),z())})))}),10));var G=p.banner.isActive,H=p.blocker.googleConsentMode,$=H.isActive,K=H.customEvent,V=H.id,Q=void 0===V?"":V,X=H.analyticsId,Y=void 0===X?"":X,Z=H.adwordsId,ee=void 0===Z?"":Z,te=H.redactData,ne=H.urlPassthrough,ae=H.adStorageCategory,re=H.analyticsStorageCategory,oe=H.functionalityStorageCategory,ie=H.personalizationStorageCategory,se=H.securityStorageCategory,ce=H.dataLayerProperty,le=void 0===ce?"dataLayer":ce,ue=H.waitForUpdate,de=void 0===ue?0:ue,fe=H.useNativeChannel,pe=void 0!==fe&&fe;function ge(){window[le].push(arguments)}window[le]=window[le]||[];var ye,he,ve={hasInitialized:!1,useNativeChannel:!1,ads_data_redaction:!1,url_passthrough:!1,data_layer_property:"dataLayer",storage:{ad_storage:"granted",ad_user_data:"granted",ad_personalization:"granted",analytics_storage:"granted",functionality_storage:"granted",personalization_storage:"granted",security_storage:"granted"}};if(G&&$){var we=0==(k&ae)?"granted":"denied",me=0==(k&re)?"granted":"denied",be=0==(k&oe)?"granted":"denied",ke=0==(k&ie)?"granted":"denied",_e=0==(k&se)?"granted":"denied";ve.hasInitialized=!0,ve.useNativeChannel=pe,ve.ads_data_redaction="denied"===we&&te,ve.url_passthrough=ne,ve.storage.ad_storage=we,ve.storage.ad_user_data=we,ve.storage.ad_personalization=we,ve.storage.analytics_storage=me,ve.storage.functionality_storage=be,ve.storage.personalization_storage=ke,ve.storage.security_storage=_e,de&&(ve.storage.wait_for_update="denied"===me||"denied"===we?de:0),ve.data_layer_property=le||"dataLayer",ve.ads_data_redaction&&ge("set","ads_data_redaction",ve.ads_data_redaction),ve.url_passthrough&&ge("set","url_passthrough",ve.url_passthrough),ve.useNativeChannel&&(window[le].push=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(t&&t[0]){var a=t[0][0],r=t[0][1],o=t[0][2],i=o&&"object"===s(o)&&4===Object.values(o).length&&o.ad_storage&&o.analytics_storage&&o.ad_user_data&&o.ad_personalization;if("consent"===a&&i)if("default"===r)o.functionality_storage=ve.storage.functionality_storage,o.personalization_storage=ve.storage.personalization_storage,o.security_storage="granted",ve.storage.wait_for_update&&(o.wait_for_update=ve.storage.wait_for_update);else if("update"===r){try{var c=window.Shopify.customerPrivacy.preferencesProcessingAllowed()?"granted":"denied";o.functionality_storage=c,o.personalization_storage=c}catch(e){}o.security_storage="granted"}}return Array.prototype.push.apply(this,t)}),function(){ge("consent","default",ve.storage),!1===pe?console.log("Pandectes: Google Consent Mode (av2)"):console.log("Pandectes: Google Consent Mode (av2nc)");(Q.length||Y.length||ee.length)&&(window[ve.data_layer_property].push({"pandectes.start":(new Date).getTime(),event:"pandectes-rules.min.js"}),(Y.length||ee.length)&&ge("js",new Date));var e="https://www.googletagmanager.com";if(Q.length){var t=Q.split(",");window[ve.data_layer_property].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});for(var n=0;n<t.length;n++){var r="dataLayer"!==ve.data_layer_property?"&l=".concat(ve.data_layer_property):"";
186a("".concat(e,"/gtm.js?id=").concat(t[n].trim()).concat(r))}}if(Y.length)for(var o=Y.split(","),i=0;i<o.length;i++){var s=o[i].trim();s.length&&(a("".concat(e,"/gtag/js?id=").concat(s)),ge("config",s,{send_page_view:!1}))}if(ee.length)for(var c=ee.split(","),l=0;l<c.length;l++){var u=c[l].trim();u.length&&(a("".concat(e,"/gtag/js?id=").concat(u)),ge("config",u,{allow_enhanced_conversions:!0}))}}()}G&&K&&(he=7===(ye=k)?"deny":0===ye?"allow":"mixed",window[le].push({event:"Pandectes_Consent_Update",pandectes_status:he,pandectes_categories:{C0000:"allow",C0001:_[1]?"allow":"deny",C0002:_[2]?"allow":"deny",C0003:_[4]?"allow":"deny"}}));var Le=p.blocker,Se=Le.klaviyoIsActive,Ce=Le.googleConsentMode.adStorageCategory;Se&&window.addEventListener("PandectesEvent_OnConsent",(function(e){var t=e.detail.preferences;if(null!=t){var n=0==(t&Ce)?"granted":"denied";void 0!==window.klaviyo&&window.klaviyo.isIdentified()&&window.klaviyo.push(["identify",{ad_personalization:n,ad_user_data:n}])}})),p.banner.revokableTrigger&&window.addEventListener("PandectesEvent_OnInitialize",(function(){document.querySelectorAll('[href*="#reopenBanner"]').forEach((function(e){e.onclick=function(e){e.preventDefault(),window.Pandectes.fn.revokeConsent()}}))})),window.PandectesRules.gcm=ve;var Pe=p.banner.isActive,Ae=p.blocker.isActive;n("Prefs: ".concat(k," | Banner: ").concat(Pe?"on":"off"," | Blocker: ").concat(Ae?"on":"off"));var Oe=null===b&&/\/checkouts\//.test(window.location.pathname);Pe&&0!==k&&!1===g&&Ae&&!Oe&&(n("Blocker will execute"),document.createElement=function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];if("script"!==n[0].toLowerCase())return D.bind?D.bind(document).apply(void 0,n):D;var r=D.bind(document).apply(void 0,n);try{Object.defineProperties(r,{src:o(o({},M.src),{},{set:function(t){B(t,r.type)&&M.type.set.call(this,e),M.src.set.call(this,t)}}),type:o(o({},M.type),{},{get:function(){var t=M.type.get.call(this);return t===e||B(this.src,t)?null:t},set:function(t){var n=B(r.src,r.type)?e:t;M.type.set.call(this,n)}})}),r.setAttribute=function(t,n){if("type"===t){var a=B(r.src,r.type)?e:n;M.type.set.call(r,a)}else"src"===t?(B(n,r.type)&&M.type.set.call(r,e),M.src.set.call(r,n)):HTMLScriptElement.prototype.setAttribute.call(r,t,n)}}catch(e){console.warn("Pandectes: unable to prevent script execution for script src ",r.src,".\n",'A likely cause would be because you are using a third-party browser extension that monkey patches the "document.createElement" function.')}return r},x.observe(document.documentElement,{childList:!0,subtree:!0}),N.observe(document.documentElement,{childList:!0,subtree:!0}))}(); 187�</script>
vendor: 1 bytes, line 187
187
188<script src="//www.seattlecoffeegear.com/cdn/shop/files/pandectes-rules.js?v=10749316884066499988"></script>
188 189 190 191<!-- Clarity -->
192<script type="text/javascript"> 193 (function (c, l, a, r, i, t, y) { 194 c[a] = 195 c[a] || 196 function () { 197 (c[a].q = c[a].q || []).push(arguments); 198 }; 199 t = l.createElement(r); 200 t.async = 1; 201 t.src = 'https://www.clarity.ms/tag/' + i; 202 y = l.getElementsByTagName(r)[0]; 203 y.parentNode.insertBefore(t, y); 204 })(window, document, 'clarity', 'script', 'giuxwlq7uu'); 205</script>
205 206 207<!-- Product Specific Scripts --> 208 209 <!-- snippets/theme__structured-data.liquid --> 210 211� 212 213 214 215 216 217�
217<script type="application/ld+json"> 218 { 219 "@context": "http://schema.org", 220 "@graph":[ 221 { 222 "@type": "Organization", 223 "@id": "https://www.seattlecoffeegear.com/#organization", 224 "name": "Seattle Coffee Gear", 225 "url": "https://www.seattlecoffeegear.com/pages/learn-articles", 226 227 "logo": "https://www.seattlecoffeegear.com/cdn/shop/files/SCG-Logo-Icon-Red.png?v=1766179016", 228 229 "email": "[email protected]", 230 "telephone": "+1-866-372-4734", 231 "contactPoint" : [ 232 { 233 "@type" : "ContactPoint", 234 "telephone" : "+1-866-372-4734", 235 "email": "[email protected]", 236 "contactType" : "technical support", 237 "url" : "https://www.seattlecoffeegear.com/policies/contact-information", 238 "contactOption" : "TollFree", 239 "areaServed" : "US" 240 }, 241 { 242 "@type" : "ContactPoint", 243 "telephone" : "+1-866-372-4734", 244 "email" : "[email protected]", 245 "contactType" : "sales", 246 "url" : "https://www.seattlecoffeegear.com/policies/contact-information", 247 "contactOption" : "TollFree", 248 "areaServed" : "US" 249 } 250 ], 251 "address": { 252 "@type": "PostalAddress", 253 "addressCountry": "US", 254 "addressLocality": "Lynnwood, WA", 255 "postalCode": "98036", 256 "streetAddress": "6825 216th St SW, Suite A" 257 }, 258 "sameAs": [ 259 "https://www.instagram.com/seattlecoffeegear", 260 "https://youtube.com/c/Seattlecoffeegearinfo", 261 "https://www.facebook.com/SeattleCoffeeGear", 262 "https://twitter.com/seacoffeegear", 263 "https://www.pinterest.com/seattlecoffeegear/", 264 "https://www.tiktok.com/@seattlecoffeegear", 265 "https://linkedin.com/company/seattle-coffee-gear", 266 "", 267 "" 268 ] 269 }, 270 { 271 "@type": "WebSite", 272 "@id": "https://www.seattlecoffeegear.com/#website", 273 "name": "Seattle Coffee Gear", 274 "url": "https://www.seattlecoffeegear.com/pages/learn-articles", 275 "inLanguage":"en", 276 "potentialAction": { 277 "@type": "SearchAction", 278 "target": "https://www.seattlecoffeegear.com/search?type=product&q={search_term_string}", 279 "query-input": "required name=search_term_string" 280 } 281 }, 282 { 283 "@type":"WebPage", 284 "@id":"https://www.seattlecoffeegear.com/pages/learn-articles/#webpage", 285 "url":"https://www.seattlecoffeegear.com/pages/learn-articles", 286 "name":"Espresso Machine and Coffee How-To Articles, News, and Resources", 287 "inLanguage":"en", 288 "description":"See The Best Espresso Machine Reviews And Coffee News And The Latest from the coffee experts at Seattle Coffee Gear here!" 289 } 290 291 ,{ 292 "@type": "BreadcrumbList", 293 "itemListElement": [ 294 { 295 "@type": "ListItem", 296 "position": 1, 297 "name": "Home", 298 "item": "https://www.seattlecoffeegear.com" 299 }, 300 { 301 "@type": "ListItem", 302 "position": 2, 303 "name": "The Best Espresso Machine Reviews And Coffee News" 304 } 305 ] 306 } 307 308 309 ] 310 } 311</script>
311 312 313 314 315 <!-- snippets/theme__styles.liquid --> 316 317 318<noscript> 319 <style> 320 .js\:animation.opacity-0 { 321 opacity: 100 !important; 322 } 323 .js\:animation.translate-y-4, 324 .js\:animation.translate-y-8 { 325 transform: translateY(0px) !important; 326 } 327 .no-js--hide { 328 display: none !important; 329 } 330 .no-js--block { 331 display: block !important; 332 } 333 </style> 334</noscript><style data-shopify> 335 336 337 /* 338 * Proxima Nova - Optimized 339 * Reduced from 14 font weights to 7 essential weights 340 * Removed: weights 100, 200, 300, 800 to reduce payload 341 * Changed font-display to 'swap' for better performance 342 * Removed 'opentype' format (only woff2 and woff for better browser support) 343 */ 344 345 /* Proxima Nova Regular (400) */ 346 /* Proxima Nova Regular (400) */@font-face { 347 font-family: 'proxima-nova'; 348 src: url('https://use.typekit.net/af/efe4a5/00000000000000007735e609/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3') format('woff2') 349 , url('https://use.typekit.net/af/efe4a5/00000000000000007735e609/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3') format('woff'); 350 font-display: swap; 351 font-style: normal; 352 font-weight: 400; 353 } 354 355 /* Proxima Nova Semibold (600) */ 356 /* Proxima Nova Semibold (600) */@font-face { 357 font-family: 'proxima-nova'; 358 src: url('https://use.typekit.net/af/78aca8/00000000000000007735e60d/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n6&v=3') format('woff2') 359 , url('https://use.typekit.net/af/78aca8/00000000000000007735e60d/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n6&v=3') format('woff'); 360 font-display: swap; 361 font-style: normal; 362 font-weight: 600; 363 } 364 365 /* Proxima Nova Bold (700) */ 366 /* Proxima Nova Bold (700) */@font-face { 367 font-family: 'proxima-nova'; 368 src: url('https://use.typekit.net/af/2555e1/00000000000000007735e603/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3') format('woff2') 369 , url('https://use.typekit.net/af/2555e1/00000000000000007735e603/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3') format('woff'); 370 font-display: swap; 371 font-style: normal; 372 font-weight: 700; 373 } 374 375 /* Proxima Nova Condensed Regular (400) */ 376 @font-face { 377 font-family: 'proxima-nova-condensed'; 378 src: url('https://use.typekit.net/af/669f97/00000000000000007735e623/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3') format('woff2') 379 , url('https://use.typekit.net/af/669f97/00000000000000007735e623/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3') format('woff') 380 , url('https://use.typekit.net/af/669f97/00000000000000007735e623/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3') format('opentype'); 381 font-display: auto; 382 font-style: normal; 383 font-weight: 400; 384 font-stretch: normal; 385 } 386 387 @font-face { 388 font-family: 'proxima-nova-condensed'; 389 src: url('https://use.typekit.net/af/7a7bec/00000000000000007735e61c/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n5&v=3') format('woff2') 390 , url('https://use.typekit.net/af/7a7bec/00000000000000007735e61c/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n5&v=3') format('woff') 391 , url('https://use.typekit.net/af/7a7bec/00000000000000007735e61c/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n5&v=3') format('opentype'); 392 font-display: auto; 393 font-style: normal; 394 font-weight: 500; 395 font-stretch: normal; 396 } 397 398 @font-face { 399 font-family: 'proxima-nova-condensed'; 400 src: url('https://use.typekit.net/af/3f0c14/00000000000000007735e626/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n6&v=3') format('woff2') 401 , url('https://use.typekit.net/af/3f0c14/00000000000000007735e626/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n6&v=3') format('woff') 402 , url('https://use.typekit.net/af/3f0c14/00000000000000007735e626/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n6&v=3') format('opentype'); 403 font-display: auto; 404 font-style: normal; 405 font-weight: 600; 406 font-stretch: normal; 407 } 408 409 /* Proxima Nova Condensed Bold (700) */ 410 @font-face { 411 font-family: 'proxima-nova-condensed'; 412 src: url('https://use.typekit.net/af/15606c/00000000000000007735e60c/30/l?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3') format('woff2') 413 , url('https://use.typekit.net/af/15606c/00000000000000007735e60c/30/d?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n7&v=3') format('woff'); 414 font-display: swap; 415 font-style: normal; 416 font-weight: 700 417 } 418 419</style> 420 421<style data-shopify> 422 @font-face { 423 font-family: Roboto; 424 font-weight: 400; 425 font-style: normal; 426 font-display: swap; 427 src: url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2") format("woff2"), 428 url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_n4.238690e0007583582327135619c5f7971652fa9d.woff") format("woff"); 429} 430 431 @font-face { 432 font-family: Roboto; 433 font-weight: 700; 434 font-style: normal; 435 font-display: swap; 436 src: url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2") format("woff2"), 437 url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_n7.94bfdd3e80c7be00e128703d245c207769d763f9.woff") format("woff"); 438} 439 440 @font-face { 441 font-family: Roboto; 442 font-weight: 400; 443 font-style: italic; 444 font-display: swap; 445 src: url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_i4.57ce898ccda22ee84f49e6b57ae302250655e2d4.woff2") format("woff2"), 446 url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_i4.b21f3bd061cbcb83b824ae8c7671a82587b264bf.woff") format("woff"); 447} 448 449 @font-face { 450 font-family: Roboto; 451 font-weight: 700; 452 font-style: italic; 453 font-display: swap; 454 src: url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_i7.7ccaf9410746f2c53340607c42c43f90a9005937.woff2") format("woff2"), 455 url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_i7.49ec21cdd7148292bffea74c62c0df6e93551516.woff") format("woff"); 456} 457 458 @font-face { 459 font-family: "Work Sans"; 460 font-weight: 900; 461 font-style: normal; 462 font-display: swap; 463 src: url("//www.seattlecoffeegear.com/cdn/fonts/work_sans/worksans_n9.4bea1158977687159ff35b9520eb34f1313023a4.woff2") format("woff2"), 464 url("//www.seattlecoffeegear.com/cdn/fonts/work_sans/worksans_n9.6eee75bb5ea8f3fa835861b7ca7ceb0958dae714.woff") format("woff"); 465} 466 467 @font-face { 468 font-family: Roboto; 469 font-weight: 400; 470 font-style: normal; 471 font-display: swap; 472 src: url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2") format("woff2"), 473 url("//www.seattlecoffeegear.com/cdn/fonts/roboto/roboto_n4.238690e0007583582327135619c5f7971652fa9d.woff") format("woff"); 474} 475 476 477 :root { 478 --color__bg-body-light: #ffffff; 479 --color__bg-overlay-light-1: #f0f0f0;
480 --color__bg-overlay-light-2: #e0e0e0; 481 --color__bg-overlay-light-3: #c2c2c2; 482 483 --color__text-light: #282828; 484 --color__link-light: #D2324C; 485 486 --color__scg-red: #D2324C; 487 --color__scg-green: #218368; 488 --color__scg-blue: #217a97; 489 --color__scg-yellow: #edaf44; 490 491 --color__text-dark: #c7c8ce; 492 493 --color__border-divider-dark-1: #D2324C; 494 --color__border-divider-dark-2: #b82840; 495 --color__border-divider-dark-3: #962134; 496 --color__border-selected-dark-1: #58131e; 497 --color__border-selected-dark-2: #190509; 498 499 --color__border-divider-light-1: #f7f7fa; 500 --color__border-divider-light-2: #c8c8dd; 501 --color__border-divider-light-3: #9999bf; 502 --color__border-selected-light-1: #6a6aa2; 503 --color__border-selected-light-2: #494976; 504 505 --color-primary-button-background-light-transparent: rgba(210, 50, 76, 0.5); 506 --color-primary-button-background-light: #D2324C; 507 --color-primary-button-background-dark: #962134; 508 --color-primary-button-border-light: #D2324C; 509 --color-primary-button-text-light: #FAFAFA; 510 511 --color-secondary-button-background-light: #217A97; 512 --color-secondary-button-border-light: #217A97; 513 --color-secondary-button-text-light: #FAFAFA; 514 515 --color-tertiary-button-background-light: #4E535A; 516 --color-tertiary-button-border-light: #4E535A; 517 --color-tertiary-button-text-light: #FAFAFA; 518 519 --color-neutral-button-background-light: #e9d9db; 520 --color-neutral-button-border-light: #e9d9db; 521 --color-neutral-button-text-light: #282828; 522 523 --color-plain-button-background-light: #f0f0f0; 524 --color-plain-button-border-light: #f0f0f0; 525 --color-plain-button-text-light: #282828; 526 527 --sizes-border-button-radius: 5px; 528 --sizes-border-input-radius: 2px; 529 --sizes-border-element-radius: 2px; 530 --sizes-border-width: 1px; 531 --sizes-gap-width: 8px; 532 533 --type-font-body-family: proxima-nova; /* Roboto, sans-serif; */ 534 --type-font-body-style: normal; 535 --type-font-body-weight: 400; 536 537 --type-font-header-family: proxima-nova-condensed; /* "Work Sans", sans-serif; */ 538 --type-font-header-style: normal; 539 --type-font-header-weight: 400; 540 541 --type-font-nav-family: proxima-nova; /* Roboto, sans-serif; */ 542 --type-font-nav-style: normal; 543 --type-font-nav-weight: 400; 544 545 --type-font-base-size: 16px; 546 --type-button-capiliziation: ; 547 } 548</style> 549 550 <link href="//www.seattlecoffeegear.com/cdn/shop/t/4/assets/styles.css?v=148305146153300573921790180152" rel="stylesheet" type="text/css" media="all" /> 551
551<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
551<meta name="facebook-domain-verification" content="faht1a1ivi9wy5rmdebxur7n5txpiq"> 552<meta name="google-site-verification" content="uQ6aibUnFoSDRxw5a1780tZUUi8j8LVmthoc8Ae9mN8"> 553<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/83175735603/digital_wallets/dialog"> 554<meta id="in-context-paypal-metadata" data-shop-id="83175735603" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 555<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
555<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=6768427315"></script>
555 556<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
557<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=6768427315&shop_id=83175735603" crossorigin="anonymous"></script>
vendor: 1 bytes, line 557
557
558<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":83175735603,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/83175735603","merchantName":"Seattle Coffee Gear","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Seattle Coffee Gear","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 558
558
559<script id="shopify-features" type="application/json">{"accessToken":"a6e6831f01180b322409ff7320ffbc22","betas":["rich-media-storefront-analytics"],"domain":"www.seattlecoffeegear.com","predictiveSearch":true,"shopId":83175735603,"locale":"en"}</script>
vendor: 1 bytes, line 559
559
560<script>var Shopify = Shopify || {}; 561Shopify.shop = "seattlecoffeegear.myshopify.com"; 562Shopify.locale = "en"; 563Shopify.currency = {"active":"USD","rate":"1.0"}; 564Shopify.country = "US"; 565Shopify.theme = {"name":"scg-shopify\/main","id":161449935155,"schema_name":"Paper","schema_version":"6.1.3","theme_store_id":null,"role":"main"}; 566Shopify.theme.handle = "null"; 567Shopify.theme.style = {"id":null,"handle":null}; 568Shopify.cdnHost = "www.seattlecoffeegear.com/cdn"; 569Shopify.routes = Shopify.routes || {}; 570Shopify.routes.root = "/"; 571Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 572Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 573Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 574Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 574
574
575<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 575
575
576<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 576
576
577<script> 578 window.ShopifyPay = window.ShopifyPay || {}; 579 window.ShopifyPay.apiHost = "shop.app\/pay"; 580 window.ShopifyPay.redirectState = null; 581</script>
vendor: 1 bytes, line 581
581
582<script> 583 window.Shopify = window.Shopify || {}; 584 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 585 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 586 window.Shopify.SignInWithShop.eligible = true; 587</script>
vendor: 1 bytes, line 587
587
588<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 588
588
589<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 589
589
590<script type="module"> 591 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 592 593 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 594 595</script>
vendor: 1 bytes, line 595
595
596<script> 597 window.Shopify = window.Shopify || {}; 598 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 599 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"]}; 600</script>
vendor: 1 bytes, line 600
600
601<script>(function() { 602 var isLoaded = false; 603 function asyncLoad() { 604 if (isLoaded) return; 605 isLoaded = true; 606 var urls = ["https:\/\/d2r9py2hfy5mgp.cloudfront.net\/63\/67\/A5\/F03EB23BD1-83175735603\/tagalys-shopify.js?v=20240129181422\u0026shop=seattlecoffeegear.myshopify.com","https:\/\/cdn.attn.tv\/scgear\/dtag.js?shop=seattlecoffeegear.myshopify.com","https:\/\/cdn-scripts.signifyd.com\/shopify\/script-tag.js?shop=seattlecoffeegear.myshopify.com","https:\/\/cdn.chatbot.com\/widget\/ow-inline-plugin.js?organization_id=cea9ed9d-bc18-446c-9474-dca76a5584f4\u0026template_id=562ff5e3-130b-42aa-bee4-73766ec15cc6\u0026shop=seattlecoffeegear.myshopify.com","https:\/\/d217z8zw4dqir.cloudfront.net\/script_tags\/loop_snippets?shop=seattlecoffeegear.myshopify.com","https:\/\/chat-widget.withremark.com\/api\/loader?shop=seattlecoffeegear.myshopify.com","\/\/cdn.shopify.com\/proxy\/383412b8dcf0b529de3b9ef488b14fc4f231d9d5f9d05377fce460cfa6e27d4b\/cdn.bogos.io\/script_tag\/secomapp.scripttag.js?shop=seattlecoffeegear.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; 607 for (var i = 0; i < urls.length; i++) { 608 var s = document.createElement('script'); 609 s.type = 'text/javascript'; 610 s.async = true; 611 s.src = urls[i]; 612 var x = document.getElementsByTagName('script')[0]; 613 x.parentNode.insertBefore(s, x); 614 } 615 }; 616 if(window.attachEvent) { 617 window.attachEvent('onload', asyncLoad); 618 } else { 619 window.addEventListener('load', asyncLoad, false); 620 } 621})();</script>
vendor: 1 bytes, line 621
621
622<script id="__st">var __st={"a":83175735603,"offset":-25200,"reqid":"1cbe830a-1e3a-405b-9835-338f9a70e42c-1790270149","pageurl":"www.seattlecoffeegear.com\/pages\/learn-articles","s":"pages-131213820211","u":"7cac25b82a4c","p":"page","rtyp":"page","rid":131213820211};</script>
vendor: 1 bytes, line 622
622
623<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 623
623
624<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 624
624
625<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.seattlecoffeegear.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 625
625
626<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//www.seattlecoffeegear.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>
626<script crossorigin="anonymous" defer="defer" src="//www.seattlecoffeegear.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 626
626
627<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 627
627
628<script> 629 window.Shopify = window.Shopify || {}; 630 window.Shopify.MCP = window.Shopify.MCP || {}; 631 window.Shopify.MCP.enabled = true; 632 window.Shopify.MCP.shop = "seattlecoffeegear.myshopify.com"; 633 window.Shopify.MCP.mcpEndpoint = "https:\/\/www.seattlecoffeegear.com\/api\/mcp"; 634 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"]}}]; 635</script>
vendor: 1 bytes, line 635
635
636<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/www.seattlecoffeegear.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 637</script>
vendor: 1 bytes, line 637
637
638<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.seattlecoffeegear.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 639</script>
vendor: 1 bytes, line 639
639
640<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 641 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); 642</script>
vendor: 1 bytes, line 642
642
643<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})}})); 644</script>
644 645<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.seattlecoffeegear.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 646<style id="shopify-accelerated-checkout-cart"> 647 #shopify-buyer-consent { 648 margin-top: 1em; 649 display: inline-block; 650 width: 100%; 651} 652 653#shopify-buyer-consent.hidden { 654 display: none; 655} 656 657#shopify-subscription-policy-button { 658 background: none; 659 border: none; 660 padding: 0; 661 text-decoration: underline; 662 font-size: inherit; 663 cursor: pointer; 664} 665 666#shopify-subscription-policy-button::before { 667 box-shadow: none; 668} 669 670 </style> 671
672<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
672 673 674 675 676 677 <!-- BEGIN app block: shopify://apps/pandectes-gdpr/blocks/banner/58c0baa2-6cc1-480c-9ea6-38d6d559556a --> 678 679 680 681 <!-- TCF is active, scripts are loaded above --> 682 683
683<script> 684 if (!window.PandectesRulesSettings) { 685 window.PandectesRulesSettings = {"store":{"id":83175735603,"adminMode":false,"headless":false,"storefrontRootDomain":"","checkoutRootDomain":"","storefrontAccessToken":""},"banner":{"revokableTrigger":false,"cookiesBlockedByDefault":"0","hybridStrict":false,"isActive":true},"geolocation":{"brOnly":false,"caOnly":false,"chOnly":false,"euOnly":false,"jpOnly":false,"thOnly":false,"zaOnly":false,"canadaOnly":false,"canadaLaw25":false,"canadaPipeda":false,"globalVisibility":true},"blocker":{"isActive":false,"googleConsentMode":{"isActive":false,"id":"","analyticsId":"","adwordsId":"","adStorageCategory":4,"analyticsStorageCategory":2,"functionalityStorageCategory":1,"personalizationStorageCategory":1,"securityStorageCategory":0,"customEvent":false,"redactData":false,"urlPassthrough":false,"dataLayerProperty":"dataLayer","waitForUpdate":0,"useNativeChannel":false},"facebookPixel":{"isActive":false,"id":"","ldu":false},"microsoft":{},"clarity":{},"rakuten":{"isActive":false,"cmp":false,"ccpa":false},"gpcIsActive":false,"klaviyoIsActive":false,"defaultBlocked":0,"patterns":{"whiteList":[],"blackList":{"1":[],"2":[],"4":[],"8":[]},"iframesWhiteList":[],"iframesBlackList":{"1":[],"2":[],"4":[],"8":[]},"beaconsWhiteList":[],"beaconsBlackList":{"1":[],"2":[],"4":[],"8":[]}}}}; 686 const rulesScript = document.createElement('script'); 687 window.PandectesRulesSettings.auto = true; 688 rulesScript.src = "https://cdn.shopify.com/extensions/01a0d309-5aa0-76cf-9f48-2a42b2760403/gdpr-cookie-consent-411/assets/pandectes-rules.js"; 689 const firstChild = document.head.firstChild; 690 document.head.insertBefore(rulesScript, firstChild); 691 } 692 </script>
692 693 694
694<script> 695 696 window.PandectesSettings = {"store":{"id":83175735603,"plan":"enterprise","theme":"scg-shopify/main","primaryLocale":"en","adminMode":false,"headless":false,"storefrontRootDomain":"","checkoutRootDomain":"","storefrontAccessToken":"","useGeolocation":false},"tsPublished":1769477477,"declaration":{"showPurpose":false,"showProvider":false,"declIntroText":"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.","showDateGenerated":true},"language":{"unpublished":[],"languageMode":"Single","fallbackLanguage":"en","languageDetection":"browser","languagesSupported":[]},"texts":{"managed":{"headerText":{"en":"We respect your privacy"},"consentText":{"en":"This website uses cookies to ensure you get the best experience."},"linkText":{"en":"Learn more"},"imprintText":{"en":"Imprint"},"googleLinkText":{"en":"Google's Privacy Terms"},"allowButtonText":{"en":"Accept"},"denyButtonText":{"en":"Decline"},"dismissButtonText":{"en":"Ok"},"leaveSiteButtonText":{"en":"Leave this site"},"preferencesButtonText":{"en":"Preferences"},"cookiePolicyText":{"en":"Cookie policy"},"preferencesPopupTitleText":{"en":"Manage consent preferences"},"preferencesPopupIntroText":{"en":"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."},"preferencesPopupSaveButtonText":{"en":"Save preferences"},"preferencesPopupCloseButtonText":{"en":"Close"},"preferencesPopupAcceptAllButtonText":{"en":"Accept all"},"preferencesPopupRejectAllButtonText":{"en":"Reject all"},"cookiesDetailsText":{"en":"Cookies details"},"preferencesPopupAlwaysAllowedText":{"en":"Always allowed"},"accessSectionParagraphText":{"en":"You have the right to request access to your data at any time."},"accessSectionTitleText":{"en":"Data portability"},"accessSectionAccountInfoActionText":{"en":"Personal data"},"accessSectionDownloadReportActionText":{"en":"Request export"},"accessSectionGDPRRequestsActionText":{"en":"Data subject requests"},"accessSectionOrdersRecordsActionText":{"en":"Orders"},"rectificationSectionParagraphText":{"en":"You have the right to request your data to be updated whenever you think it is appropriate."},"rectificationSectionTitleText":{"en":"Data Rectification"},"rectificationCommentPlaceholder":{"en":"Describe what you want to be updated"},"rectificationCommentValidationError":{"en":"Comment is required"},"rectificationSectionEditAccountActionText":{"en":"Request an update"},"erasureSectionTitleText":{"en":"Right to be forgotten"},"erasureSectionParagraphText":{"en":"You have the right to ask all your personal data to be erased. Data relating to orders placed within the last 180 days will be kept for record-keeping purposes. After that period has elapsed, you will no longer be able to access your account for the purpose of viewing/tracking your order."},"erasureSectionRequestDeletionActionText":{"en":"Request personal data deletion"},"consentDate":{"en":"Consent date"},"consentId":{"en":"Consent ID"},"consentSectionChangeConsentActionText":{"en":"Change consent preference"},"consentSectionConsentedText":{"en":"You consented to the cookies policy of this website on"},"consentSectionNoConsentText":{"en":"You have not consented to the cookies policy of this website."},"consentSectionTitleText":{"en":"Your cookie consent"},"consentStatus":{"en":"Consent preference"},"confirmationFailureMessage":{"en":"Your request was not verified. Please try again and if problem persists, contact store owner for assistance"},"confirmationFailureTitle":{"en":"A problem occurred"},"confirmationSuccessMessage":{"en":"We will soon get back to you as to your request."},"confirmationSuccessTitle":{"en":"Your request is verified"},"guestsSupportEmailFailureMessage":{"en":"Your request was not submitted. Please try again and if problem persists, contact store owner for assistance."},"guestsSupportEmailFailureTitle":{"en":"A problem occurred"},"guestsSupportEmailPlaceholder":{"en":"E-mail address"},"guestsSupportEmailSuccessMessage":{"en":"If you are registered as a customer of this store, you will soon receive an email with instructions on how to proceed."}
696,"guestsSupportEmailSuccessTitle":{"en":"Thank you for your request"},"guestsSupportEmailValidationError":{"en":"Email is not valid"},"guestsSupportInfoText":{"en":"Please login with your customer account to further proceed."},"submitButton":{"en":"Submit"},"submittingButton":{"en":"Submitting..."},"cancelButton":{"en":"Cancel"},"declIntroText":{"en":"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."},"declName":{"en":"Name"},"declPurpose":{"en":"Purpose"},"declType":{"en":"Type"},"declRetention":{"en":"Retention"},"declProvider":{"en":"Provider"},"declFirstParty":{"en":"First-party"},"declThirdParty":{"en":"Third-party"},"declSeconds":{"en":"seconds"},"declMinutes":{"en":"minutes"},"declHours":{"en":"hours"},"declWeeks":{"en":"week(s)"},"declDays":{"en":"days"},"declMonths":{"en":"months"},"declYears":{"en":"years"},"declSession":{"en":"Session"},"declDomain":{"en":"Domain"},"declPath":{"en":"Path"}}
696,"categories":{"strictlyNecessaryCookiesTitleText":{"en":"Strictly necessary cookies"},"strictlyNecessaryCookiesDescriptionText":{"en":"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."},"functionalityCookiesTitleText":{"en":"Functional cookies"},"functionalityCookiesDescriptionText":{"en":"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."},"performanceCookiesTitleText":{"en":"Performance cookies"},"performanceCookiesDescriptionText":{"en":"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."},"targetingCookiesTitleText":{"en":"Targeting cookies"},"targetingCookiesDescriptionText":{"en":"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."},"unclassifiedCookiesTitleText":{"en":"Unclassified cookies"},"unclassifiedCookiesDescriptionText":{"en":"Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies."}},"auto":{}},"library":{"previewMode":false,"fadeInTimeout":0,"defaultBlocked":0,"showLink":true,"showImprintLink":false,"showGoogleLink":false,"enabled":true,"cookie":{"expiryDays":365,"secure":true,"domain":""},"dismissOnScroll":false,"dismissOnWindowClick":false,"dismissOnTimeout":false,"palette":{"popup":{"background":"#FFFFFF","backgroundForCalculations":{"a":1,"b":255,"g":255,"r":255},"text":"#000000"},"button":{"background":"#4E535A","backgroundForCalculations":{"a":1,"b":90,"g":83,"r":78},"text":"#FFFFFF","textForCalculation":{"a":1,"b":255,"g":255,"r":255},"border":"transparent"}},"content":{"href":"https://seattlecoffeegear.myshopify.com/policies/privacy-policy","imprintHref":"/","close":"✕","target":"_blank","logo":""},"window":"<div role=\"dialog\" aria-label=\"{{header}}\" aria-describedby=\"cookieconsent:desc\" id=\"pandectes-banner\" class=\"cc-window-wrapper cc-bottom-center-wrapper\"><div class=\"pd-cookie-banner-window cc-window {{classes}}\">{{children}}</div></div>","compliance":{"custom":"<div class=\"cc-compliance cc-highlight\">{{preferences}}{{dismiss}}</div>"},"type":"custom","layouts":{"basic":"{{messagelink}}{{compliance}}{{close}}"},"position":"bottom-center","theme":"classic","revokable":false,"animateRevokable":false,"revokableReset":false,"revokableLogoUrl":"https://seattlecoffeegear.myshopify.com/cdn/shop/files/pandectes-reopen-logo.png","revokablePlacement":"bottom-left","revokableMarginHorizontal":15,"revokableMarginVertical":15,"static":false,"autoAttach":true,"hasTransition":true,"blacklistPage":[""],"elements":{"close":"<button aria-label=\"Close\" type=\"button\" class=\"cc-close\">{{close}}</button>","dismiss":"<button type=\"button\" class=\"cc-btn cc-btn-decision cc-dismiss\">{{dismiss}}</button>","allow":"<button type=\"button\" class=\"cc-btn cc-btn-decision cc-allow\">{{allow}}</button>","deny":"<button type=\"button\" class=\"cc-btn cc-btn-decision cc-deny\">{{deny}}</button>","preferences":"<button type=\"button\" class=\"cc-btn cc-settings\" aria-controls=\"pd-cp-preferences\" onclick=\"Pandectes.fn.openPreferences()\">{{preferences}}</button>"}},"geolocation":{"brOnly":false,"caOnly":false,"chOnly":false,"euOnly":false,"jpOnly":false,"thOnly":false,"zaOnly":false,"canadaOnly":false,"canadaLaw25":false,"canadaPipeda":false,"globalVisibility":true},"dsr":{"guestsSupport":true,"accessSectionDownloadReportAuto":false},"banner":{"resetTs":1711657414,"extraCss":" .cc-banner-logo {max-width: 24em!important;} @media(min-width: 768px) {.cc-window.cc-floating{max-width: 24em!important;width: 24em!important;}} .cc-message, .pd-cookie-banner-window .cc-header, .cc-logo {text-align: center} .cc-window-wrapper{z-index: 2147483647;} .cc-window{z-index: 2147483647;font-size: 14px!important;font-family: inherit;} .pd-cookie-banner-window .cc-header{font-size: 14px!important;font-family: inherit;} .pd-cp-ui{font-family: inherit; background-color: #FFFFFF;color:#000000;} button.pd-cp-btn, a.pd-cp-btn{background-color:#4E535A;color:#FFFFFF!important;} input + .pd-cp-preferences-slider{background-color: rgba(0, 0, 0, 0.3)} .pd-cp-scrolling-section::-webkit-scrollbar{background-color: rgba(0, 0, 0, 0.3)} input:checked + .pd-cp-preferences-slider{background-color: rgba(0, 0, 0, 1)} .pd-cp-scrolling-section::-webkit-scrollbar-thumb {background-color: rgba(0, 0, 0, 1)} .pd-cp-ui-close{color:#000000;} .pd-cp-preferences-slider:before{background-color: #FFFFFF} .pd-cp-title:before {border-color: #000000!important} .pd-cp-preferences-slider{background-color:#000000} .pd-cp-toggle{color:#000000!important} @media(max-width:699px) {.pd-cp-ui-close-top svg {fill: #000000}} .pd-cp-toggle:hover,.pd-cp-toggle:visited,.pd-cp-toggle:active{color:#000000!important} .pd-cookie-banner-window {box-shadow: 0 0 18px rgb(0 0 0 / 20%);} ","customJavascript":{},"showPoweredBy":false,"logoHeight":40,"revokableTrigger":false,"hybridStrict":false,"cookiesBlockedByDefault":"0","isActive":true,"implicitSavePreferences":false,"cookieIcon":false,"blockBots":false,"showCookiesDetails":true,"hasTransition":true,"blockingPage":false,"showOnlyLandingPage":false,"leaveSiteUrl":"https://www.google.com","linkRespectStoreLang":false},"cookies":{"0":[{"name":"keep_alive","type":"http","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"30 minute(s)","session":false,"expires":30,"unit":"declMinutes","purpose":{"en":"Used in connection with buyer localization."}},{"name":"secure_customer_sig","type":"http","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Used in connection with customer login."}},{"name":"localization","type":"http","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Shopify store localization"}},{"name":"cart_currency","type":"http","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"2 ","session":false,"expires":2,"unit":"declSession","purpose":{"en":"The cookie is necessary for the secure checkout and payment function on the website. This function is provided by shopify.com."}},{"name":"_cmp_a","type":"http","domain":".seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_tracking_consent","type":"http","domain":".seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Tracking preferences."}},{"name":"shopify_pay_redirect","type":"http","domain":"seattlecoffeegear.myshopify.com","path":"/","provider":"Shopify","firstParty":true,"retention":"1 hour(s)","session":false,"expires":1,"unit":"declHours","purpose":{"en":"The cookie is necessary for the secure checkout and payment function on the website. This function is provided by shopify.com."}}],"1":[],"2":[],"4":[{"name":"pixlee_analytics_cookie_legacy","type":"http","domain":".seattlecoffeegear.myshopify.com","path":"/","provider":"Pixlee","firstParty":true,"retention":"1 month(s)","session":false,"expires":1,"unit":"declMonths","purpose":{"en":""}}],"8":[]},"blocker":{"isActive":false,"googleConsentMode":{"id":"","analyticsId":"","adwordsId":"","isActive":false,"adStorageCategory":4,"analyticsStorageCategory":2,"personalizationStorageCategory":1,"functionalityStorageCategory":1,"customEvent":false,"securityStorageCategory":0,"redactData":false,"urlPassthrough":false,"dataLayerProperty":"dataLayer","waitForUpdate":0,"useNativeChannel":false},"facebookPixel":{"id":"","isActive":false,"ldu":false},"microsoft":{},"rakuten":{"isActive":false,"cmp":false,"ccpa":false},"klaviyoIsActive":false,"gpcIsActive":false,"clarity":{},"defaultBlocked":0,"patterns":{"whiteList":[],"blackList":{"1":[],"2":[],"4":[],"8":[]},"iframesWhiteList":[],"iframesBlackList":{"1":[],"2":[],"4":[],"8":[]},"beaconsWhiteList":[],"beaconsBlackList":{"1":[],"2":[],"4":[],"8":[]}}}}; 697 698 window.addEventListener('DOMContentLoaded', function(){ 699 const script = document.createElement('script'); 700 701 script.src = "https://cdn.shopify.com/extensions/01a0d309-5aa0-76cf-9f48-2a42b2760403/gdpr-cookie-consent-411/assets/pandectes-core.js"; 702 703 script.defer = true; 704 document.body.appendChild(script); 705 }) 706 </script>
706 707 708 709 710 711 712 <!-- A11y --> 713 714 715 716 717 718 719 720 721 722 723<!-- END app block --><!-- BEGIN app block: shopify://apps/instant-ai-page-builder/blocks/instant_core/927e19d9-4e68-41db-99c7-d8debdc1f80d -->
724<script> 725window.Instant = { 726 initialized: true, 727 initializedAppEmbed: true, 728 initializedVersion: 'latest', 729 swiperScriptUrl: 'https://cdn.shopify.com/extensions/01a0ce36-d3dd-75a4-92ad-49d54bec63bd/instant-5-92/assets/swiper-bundle.min.js', 730 swiperElementScriptUrl: 'https://cdn.shopify.com/extensions/01a0ce36-d3dd-75a4-92ad-49d54bec63bd/instant-5-92/assets/swiper-element-bundle.min.js' 731}; 732</script>
732 733 734<!-- END app block --><!-- BEGIN app block: shopify://apps/pdbmdl5dd-opensend/blocks/opensend/019a7ef5-499f-7f9e-8bea-502de9b7646b -->
735<script type='text/javascript'> 736!function(s) { 737 let o = s.createElement('script'), u = s.getElementsByTagName('script')[0]; 738 o.src = 'https://cdn.aggle.net/oir/oir.min.js'; 739 o.async = !0, o.setAttribute('oirtyp', '48b1feaa'), o.setAttribute('oirid', 'PDBMDL5DD'); 740 u.parentNode.insertBefore(o, u); 741}(document); 742</script>
742 743
744<script type='text/javascript'> 745 { 746 const cleanObj = (value) => { 747 if (Array.isArray(value)) { 748 const cleanedArray = value.map(cleanObj).filter((v) => v !== undefined); 749 return cleanedArray.length ? cleanedArray : undefined; 750 } 751 if (value && typeof value === "object") { 752 const cleanedObject = Object.entries(value).reduce((acc, [key, val]) => { 753 const cleanedValue = cleanObj(val); 754 if (cleanedValue !== undefined && cleanedValue !== null && cleanedValue !== "") { 755 acc[key] = cleanedValue; 756 } 757 return acc; 758 }, {}); 759 return Object.keys(cleanedObject).length ? cleanedObject : undefined; 760 } 761 if (value === null || value === undefined || value === "") { 762 return undefined; 763 } 764 return value; 765 }; 766 const getCustomer = () => ({ 767 shopifyCustomerId: "", 768 email: "", 769 phone: "", 770 first_name: null, 771 last_name: null, 772 lifetime_value: null, 773 order_count: null, 774 address: { 775 street: null, 776 city: null, 777 state: null, 778 stateCode: null, 779 postalCode: "", 780 country: "", 781 province: "", 782 countryCode: "", 783 } 784 }); 785 786 } 787</script>
787 788 789 790<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 791 792 793 794 795 796 797 798 799 800 801 802 803
803<script async src="https://static.klaviyo.com/onsite/js/STSejp/klaviyo.js?company_id=STSejp"></script>
803 804
804<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>
804 805 806 807 808 809 810 811
811<script> 812 window.klaviyoReviewsProductDesignMode = false 813 </script>
813 814 815 816 817 <!-- BEGIN app snippet: customer-hub-data -->
817<script> 818 if (!window.customerHub) { 819 window.customerHub = {}; 820 } 821 window.customerHub.storefrontRoutes = { 822 login: "https://www.seattlecoffeegear.com/customer_authentication/redirect?locale=en®ion_country=US?return_url=%2F%23k-hub", 823 register: "https://account.seattlecoffeegear.com?locale=en&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzZWF0dGxlY29mZmVlZ2Vhci5teXNob3BpZnkuY29tIiwiZmxhZ3MiOltdLCJleHAiOjE3OTA4NzQ5NDksIm5iZiI6MTc5MDI3MDE0OX0.HjUs0QPW0FT7SZFRNyXUq-aeb9doQ5teW4d5NNOTh2E?return_url=%2F%23k-hub", 824 logout: "/account/logout", 825 profile: "/account", 826 addresses: "/account/addresses", 827 }; 828 829 window.customerHub.userId = null; 830 831 window.customerHub.storeDomain = "seattlecoffeegear.myshopify.com"; 832 833 834 835 836 window.customerHub.storeLocale = { 837 currentLanguage: 'en', 838 currentCountry: 'US', 839 availableLanguages: [ 840 841 { 842 iso_code: 'en', 843 endonym_name: 'English' 844 } 845 846 ], 847 availableCountries: [ 848 849 { 850 iso_code: 'US', 851 name: 'United States', 852 currency_code: 'USD' 853 } 854 855 ] 856 }; 857 858</script>
858 859<!-- END app snippet --> 860 861 862 863 864 865 866 867<!-- END app block --><!-- BEGIN app block: shopify://apps/sc-easy-redirects/blocks/app/be3f8dbd-5d43-46b4-ba43-2d65046054c2 --> 868 <!-- common for all pages --> 869 870 871 872
872<script src="https://cdn.shopify.com/extensions/019feafe-a942-7fff-96d6-964177dec909/sc-easy-redirects-16/assets/esc-redirect-app.js" async></script>
872 873 874 875 876 877 878 879<!-- END app block --><!-- BEGIN app block: shopify://apps/attentive/blocks/attn-tag/8df62c72-8fe4-407e-a5b3-72132be30a0d -->
879<script type="text/javascript" src="https://vnuqz.seattlecoffeegear.com/providers/atLabel/load" onerror=" var fallbackScript = document.createElement('script'); fallbackScript.src = 'https://cdn.attn.tv/scgear/dtag.js'; document.head.appendChild(fallbackScript);" data-source="loaded?source=app-embed" defer="defer"></script>
879 880 881 882<!-- END app block --><!-- BEGIN app block: shopify://apps/elevar-conversion-tracking/blocks/dataLayerEmbed/bc30ab68-b15c-4311-811f-8ef485877ad6 --> 883 884 885
886<script type="module" dynamic> 887 const configUrl = "/a/elevar/static/configs/e8c7e1722fb779ca0c54f08e5147149f4f8b689d/config.js"; 888 const config = (await import(configUrl)).default; 889 const scriptUrl = config.script_src_app_theme_embed; 890 891 if (scriptUrl) { 892 const { handler } = await import(scriptUrl); 893 894 await handler( 895 config, 896 { 897 cartData: { 898 marketId: "71082934579", 899 localeCountryCode:"US", 900 attributes:{}, 901 cartTotal: "0.0", 902 currencyCode:"USD", 903 items: [] 904} 905, 906 user: { 907 cartTotal: "0.0", 908 currencyCode:"USD", 909 customer: {}, 910} 911, 912 isOnCartPage:false, 913 collectionView:null, 914 searchResultsView:null, 915 productView:null, 916 } 917 ); 918 } 919</script>
919 920 921 922<!-- END app block --><!-- BEGIN app block: shopify://apps/userway-website-accessibility/blocks/uw-widget-extension/bc2d8a34-1a37-451b-ab1a-271bc4e9daa7 --> 923 924 925 926
927<script type="text/javascript" async="" src="https://cdn.userway.org/widget.js?account=9o3ocAFnQx&platfAppInstalledSiteId=3480081&shop=www.seattlecoffeegear.com"></script>
927 928 929<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
930<script type="text/javascript"> 931 (function (c, l, a, r, i, t, y) { 932 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 933 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify"; 934 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 935 936 c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => { 937 if (error) { 938 console.error("Error loading Shopify features:", error); 939 return; 940 } 941 942 c[a]('consentv2', { 943 ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied", 944 analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied", 945 source: 101, 946 }); 947 }); 948 949 l.addEventListener("visitorConsentCollected", function (e) { 950 c[a]('consentv2', { 951 ad_Storage: e.detail.marketingAllowed ? "granted" : "denied", 952 analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied", 953 source: 101, 954 }); 955 }); 956 })(window, document, "clarity", "script", "giuxwlq7uu"); 957</script>
957 958 959 960 961<!-- END app block --><!-- BEGIN app block: shopify://apps/hulk-form-builder/blocks/app-embed/b6b8dd14-356b-4725-a4ed-77232212b3c3 --><!-- BEGIN app snippet: hulkapps-formbuilder-theme-ext -->
961<script type="text/javascript"> 962 963 if (typeof window.formbuilder_customer != "object") { 964 window.formbuilder_customer = {} 965 } 966 967 968 969 window.hulkFormBuilder = { 970 form_data: {"form_60qHpZ1FtrYgKhNxfL-IAg":{"uuid":"60qHpZ1FtrYgKhNxfL-IAg","form_name":"Price Matching","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch3\u003e\u003cspan style=\"color:#282828;\"\u003ePrice Matching Request\u0026nbsp;\u003c\/span\u003e\u003c\/h3\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eYour request has been submitted. Please allow 2-3 business days for a response.\u0026nbsp;\u003c\/p\u003e\n","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"2","form_width":"100%","form_border_size":"2","form_border_clr":"#ffffff","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Price Matching","form_access_message":"\u
970003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","formElements":[{"type":"text","position":0,"label":"First Name","customClass":"","halfwidth":"yes","Conditions":{},"required":"yes","page_number":1},{"type":"text","position":1,"label":"Last Name","halfwidth":"yes","Conditions":{},"required":"yes","page_number":1},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no"},{"Conditions":{},"type":"phone","position":3,"label":"Phone Number","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":4,"label":"Product Name","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":5,"label":"Product Sku","page_number":1},{"Conditions":{},"type":"text","position":6,"label":"Competitorâs Price","required":"yes","page_number":1},{"Conditions":{},"type":"url","position":7,"label":"Competitorâs URL","required":"yes","page_number":1},{"type":"textarea","position":8,"label":"Configuration, options, and extra information","required":"no","Conditions":{},"page_number":1}]},"is_spam_form":false,"shop_uuid":"jUcCjp7iZCFpH5f2xrLeEA","shop_timezone":"America\/Los_Angeles","shop_id":96386,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"seattlecoffeegear.myshopify.com","popup_settings":{},"form_is_active":true},"form_9qywC9USrasPYBrL4HtySw":{"uuid":"9qywC9USrasPYBrL4HtySw","form_name":"Repairs \u0026 Service","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch3\u003e\u003cspan style=\"color:#282828;\"\u003eRepair \u0026amp; Service Request Form - Please Submit As Much Information As You Can\u003c\/span\u003e\u003c\/h3\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eYour request has been submitted. Please allow 2-3 business days for a response.\u0026nbsp;\u003c\/p\u003e\n","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"2","form_width":"100%","form_border_size":"2","form_border_clr":"#ffffff","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Repairs \u0026 Service","form_access_message":"\u
970003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","formElements":[{"type":"text","position":0,"label":"First Name","customClass":"","halfwidth":"yes","Conditions":{},"page_number":1},{"type":"text","position":1,"label":"Last Name","halfwidth":"yes","Conditions":{},"page_number":1},{"Conditions":{},"type":"phone","position":2,"label":"Phone","page_number":1},{"type":"email","position":3,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no"},{"Conditions":{},"type":"text","position":4,"label":"Shipping Line 1","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":5,"label":"Shipping Line 2","page_number":1},{"Conditions":{},"type":"text","position":6,"label":"City","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":7,"label":"State","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":8,"label":"Zip Code","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":9,"label":"Machine Make \u0026 Model","page_number":1},{"Conditions":{},"type":"text","position":10,"label":"Machine Serial Number","page_number":1},{"Conditions":{},"type":"text","position":11,"label":"SCG Order Number (if applicable, N\/A if not)","required":"yes","page_number":1},{"Conditions":{},"type":"textarea","position":12,"label":"Whatâs going on with the machine?","inputHeight":"75","required":"no","page_number":1},{"Conditions":{},"type":"textarea","position":13,"label":"How long has this been happening?","inputHeight":"75","page_number":1},{"Conditions":{},"type":"textarea","position":14,"label":"What regular maintenance have you been performing?","inputHeight":"75","page_number":1}]},"is_spam_form":false,"shop_uuid":"jUcCjp7iZCFpH5f2xrLeEA","shop_timezone":"America\/Los_Angeles","shop_id":96386,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"seattlecoffeegear.myshopify.com","popup_settings":{},"form_is_active":true},"form_ajma91DmHfxOgoUg8O9aXw":{"uuid":"ajma91DmHfxOgoUg8O9aXw","form_name":"Customization Inquiry","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch3\u003eCustom Espresso Machine Design Inquiry\u003c\/h3\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eThank you for submitting your customization request. Our team will review your ideas and contact you within 3 business days to explore the possibilities for your custom espresso machine. We\u0026#39;re excited to help create your perfect coffee setup.\u003c\/p\u003e\n","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"2","form_width":"100%","form_border_size":"2","form_border_clr":"#c7c7c7","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Customization Inquiry","form_access_message":"\u
970003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","custommessage":{"thank_you":"Thank you for submitting your customization request. Our team will review your ideas and contact you within 3 business days to explore the possibilities for your custom espresso machine. We're excited to help create your perfect coffee setup."},"banner_img_width":"400","form_banner_alignment":"center","formElements":[{"type":"text","position":0,"label":"First Name","customClass":"","halfwidth":"yes","Conditions":{},"required":"yes","page_number":1},{"type":"text","position":1,"label":"Last Name","halfwidth":"yes","Conditions":{},"page_number":1},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1},{"Conditions":{},"type":"phone","position":3,"label":"Phone Number","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":4,"label":"Which Machine Would You Like to Customize?","page_number":1},{"type":"textarea","position":5,"label":"Tell us more about your customization ideas","required":"yes","Conditions":{},"page_number":1}]},"is_spam_form":false,"shop_uuid":"jUcCjp7iZCFpH5f2xrLeEA","shop_timezone":"America\/Los_Angeles","shop_id":96386,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"seattlecoffeegear.myshopify.com","popup_settings":{},"form_is_active":true},"form_EVr3tp98XDgj_TJslaiMSQ":{"uuid":"EVr3tp98XDgj_TJslaiMSQ","form_name":"Commercial Support","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eYour request has been submitted. Please allow 2-3 business days for a response.\u0026nbsp;\u003c\/p\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"rightBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"2","form_width":"100%","form_border_size":"2","form_border_clr":"#ffffff","form_border_radius":"2","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"2","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Commercial Support","form_access_message":"\u
970003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","banner_img_height":"0","banner_img_width":"0","advance_css":".form_container .form-group {\n margin-bottom: 0;\n}\n\n.form_submit_div {\n margin-top: 0;\n}\n.form_generater_form_div .form_element{\n display:flex;\n justify-content:center;\n}\n.form-control {\nheight: 35px;\n}\n\n","formElements":[{"type":"email","position":0,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no"}]},"is_spam_form":false,"shop_uuid":"jUcCjp7iZCFpH5f2xrLeEA","shop_timezone":"America\/Los_Angeles","shop_id":96386,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"seattlecoffeegear.myshopify.com","popup_settings":{},"form_is_active":true},"form_QukIiNiEmb-XWFQ53mdtAg":{"uuid":"QukIiNiEmb-XWFQ53mdtAg","form_name":"Contact Form","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch3\u003e\u003cspan style=\"color:#282828;\"\u003eContact Us\u003c\/span\u003e\u003c\/h3\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eYour request has been submitted. Please allow 2-3 business days for a response.\u0026nbsp;\u003c\/p\u003e\n","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"2","form_width":"100%","form_border_size":"2","form_border_clr":"#ffffff","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Contact Form","form_access_message":"\u
970003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","formElements":[{"type":"text","position":0,"label":"First Name","customClass":"","halfwidth":"yes","Conditions":{},"page_number":1},{"type":"text","position":1,"label":"Last Name","halfwidth":"yes","Conditions":{},"page_number":1},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no"},{"type":"select","position":3,"label":"Subject","values":"Product Inquiry\nOrder Delivery\nReturn\nPayment Related\nOther","Conditions":{},"elementCost":{},"required":"yes","page_number":1},{"type":"textarea","position":4,"label":"Message","required":"yes","Conditions":{},"page_number":1}]},"is_spam_form":false,"shop_uuid":"jUcCjp7iZCFpH5f2xrLeEA","shop_timezone":"America\/Los_Angeles","shop_id":96386,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"seattlecoffeegear.myshopify.com","popup_settings":{},"form_is_active":true}}, 971 shop_data: {"shop_jUcCjp7iZCFpH5f2xrLeEA":{"shop_uuid":"jUcCjp7iZCFpH5f2xrLeEA","shop_timezone":"America\/Los_Angeles","shop_id":96386,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"seattlecoffeegear.myshopify.com","shop_created_at":"2023-12-05T12:57:49.569-06:00","is_skip_metafield":false,"shop_deleted":false,"shop_disabled":false}}, 972 settings_data: {"shop_settings":{"shop_customise_msgs":[],"default_customise_msgs":{"is_required":"is required","thank_you":"Thank you! The form was submitted successfully.","processing":"Processing...","valid_data":"Please provide valid data","valid_email":"Provide valid email format","valid_tags":"HTML Tags are not allowed","valid_phone":"Provide valid phone number","valid_captcha":"Please provide a valid CAPTCHA response.","valid_url":"Provide valid URL","only_number_alloud":"Provide valid number in","number_less":"must be less than","number_more":"must be more than","image_must_less":"Image must be less than 20MB","image_number":"Images allowed","image_extension":"Invalid extension! Please provide image file","error_image_upload":"Error in image upload. Please try again.","error_file_upload":"Error in file upload. Please try again.","your_response":"Your response","error_form_submit":"Error occur.Please try again after sometime.","email_submitted":"Form with this email is already submitted","invalid_email_by_zerobounce":"The email address you entered appears to be invalid. Please check it and try again.","download_file":"Download file","card_details_invalid":"Your card details are invalid","card_details":"Card details","please_enter_card_details":"Please enter card details","card_number":"Card number","exp_mm":"Exp MM","exp_yy":"Exp YY","crd_cvc":"CVV","payment_value":"Payment amount","please_enter_payment_amount":"Please enter a payment amount.","address1":"Address line 1","address2":"Address line 2","city":"City","province":"Province","zipcode":"Zip code","country":"Country","blocked_domain":"This form does not accept addresses from","file_must_less":"File must be less than 20MB","file_extension":"Invalid extension! Please provide file","only_file_number_alloud":"files allowed","previous":"Previous","next":"Next","must_have_a_input":"Please enter at least one field.","please_enter_required_data":"Please enter required data","atleast_one_special_char":"Include at least one special character","atleast_one_lowercase_char":"Include at least one lowercase character","atleast_one_uppercase_char":"Include at least one uppercase character","atleast_one_number":"Include at least one number","must_have_8_chars":"Must have 8 characters long","be_between_8_and_12_chars":"Be between 8 and 12 characters long","please_select":"Please Select","phone_submitted":"Form with this phone number is already submitted","user_res_parse_error":"Error while submitting the form","valid_same_values":"values must be the same","product_choice_clear_selection":"Clear Selection","picture_choice_clear_selection":"Clear Selection","remove_all_for_file_image_upload":"Remove All","invali
972d_file_type_for_image_upload":"You can't upload files of this type.","invalid_file_type_for_signature_upload":"You can't upload files of this type.","max_files_exceeded_for_file_upload":"You can not upload any more files.","max_files_exceeded_for_image_upload":"You can not upload any more files.","file_already_exist":"File already uploaded","max_limit_exceed":"You have added the maximum number of text fields.","cancel_upload_for_file_upload":"Cancel upload","cancel_upload_for_image_upload":"Cancel upload","cancel_upload_for_signature_upload":"Cancel upload"}}}, 973 features_data: {"shop_plan_features":{"shop_plan_features":["unlimited-forms","full-design-customization","export-form-submissions","multiple-recipients-for-form-submissions","multiple-admin-notifications","enable-captcha","unlimited-file-uploads","save-submitted-form-data","set-auto-response-message","conditional-logic","form-banner","save-as-draft-facility","include-user-response-in-admin-email","disable-form-submission","mail-platform-integration","stripe-payment-integration","pre-built-templates","create-customer-account-on-shopify","google-analytics-3-by-tracking-id","facebook-pixel-id","bing-uet-pixel-id","advanced-js","advanced-css","api-available","customize-form-message","hidden-field","restrict-from-submissions-per-one-user","utm-tracking","ratings","privacy-notices","heading","paragraph","shopify-flow-trigger","domain-setup","block-domain","address","html-code","form-schedule","after-submit-script","customize-form-scrolling","on-form-submission-record-the-referrer-url","password","duplicate-the-forms","include-user-response-in-auto-responder-email","elements-add-ons","admin-and-auto-responder-email-with-tokens","email-export","premium-support","google-analytics-4-by-measurement-id","google-ads-for-tracking-conversion","validation-field","load_form_as_popup","advanced_conditional_logic","forms-limit","submissions-visibility-limit","file-upload"]}}, 974 shop: null, 975 shop_id: null, 976 plan_features: null, 977 validateDoubleQuotes: false, 978 assets: { 979 searchableDropdown: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/searchable-dropdown.js", 980 extraFunctions: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/extra-functions.js", 981 extraStyles: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/extra-styles.css", 982 bootstrapStyles: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/theme-app-extension-bootstrap.css", 983 }, 984 translations: { 985 htmlTagNotAllowed: "HTML Tags are not allowed", 986 sqlQueryNotAllowed: "SQL Queries are not allowed", 987 doubleQuoteNotAllowed: "Double quotes are not allowed", 988 989 maxTextFieldsReached: "You have added the maximum number of text fields.", 990 991 992 993 zerobounceApiErrorMsg: "We couldn\u0026#39;t verify your email due to a technical issue. Please try again later.", 994 } 995 996 } 997 998 999 1000 window.FbThemeAppExtSettingsHash = {} 1001 1002</script>
1002<!-- END app snippet --><!-- END app block -->
1002<script src="https://cdn.shopify.com/extensions/01a0ce36-d3dd-75a4-92ad-49d54bec63bd/instant-5-92/assets/instant-core.min.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1002
1002
1003<script src="https://cdn.shopify.com/extensions/01a0b7a6-6b2a-7126-be17-93581506982e/applovin-shop-integration-97/assets/app-embed.js" type="text/javascript" defer="defer"></script>
1003 1004<link href="https://cdn.shopify.com/extensions/01a0cee8-4633-7902-bbad-097a24875e3d/magical-mandatory-fees-305/assets/magical-mandatory-fees.css" rel="stylesheet" type="text/css" media="all">
1005<script src="https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/form-builder-script.js" type="text/javascript" defer="defer"></script>
1005 1006<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1007<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: 83175735603,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1007
1007
1008<script> 1009 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1010</script>
vendor: 1 bytes, line 1010
1010
1011<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}
1011).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: 83175735603,storefrontBaseUrl: "https://www.seattlecoffeegear.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.seattlecoffeegear.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["16072cab","8450a54b"],webPixelsConfigList: [{"id":"2699559219","configuration":"{\"eventKey\":\"3eab9c2d-b368-4b82-b619-f82feff69fd3\",\"name\":\"seattlecoffeegear - Axon Pixel\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"59063c86dca90ebaa562063a0c13be50","type":"APP","apiClientId":256560922625,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2682683699","configuration":"{\"Enabled\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3e1fb0d730dfc2b8de389dcad7cc0133","type":"APP","apiClientId":34646425601,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
1011,"dataSharingState":"unrestricted"},{"id":"2629599539","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2378039603","configuration":"{ \"alias\": \"SEATTLECOFFEEGEAR\", \"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":"2083062067","configuration":"{\"accountID\":\"STSejp\",\"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":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"1997668659","configuration":"{\"storeHandle\":\"seattlecoffeegear.myshopify.com\", \"publisherId\": \"PDBMDL5DD\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"94a881e8d211e628cef2d7cbc6e68cf4","type":"APP","apiClientId":295989051393,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1960575283","configuration":"{\"shop\":\"seattlecoffeegear.myshopify.com\",\"collect_url\":\"https:\\\/\\\/collect.bogos.io\\\/collect\",\"product_bundles_data\":\"[]\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"736e20ef78afbd797393d9a41c61f416","type":"APP","apiClientId":177733,"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":"1938456883","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"AW-16970674238\\\",\\\"GT-WF65MHJ8\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"AW-16970674238\\\/Iu93CNbmmrYbEL7gn5w_\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"AW-16970674238\\\/kkY7COLmmrYbEL7gn5w_\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"AW-16970674238\\\/Kqg2CN_mmrYbEL7gn5w_\\\",\\\"MC-9T35VLNWRH\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"AW-16970674238\\\/t-dcCK_jmrYbEL7gn5w_\\\",\\\"MC-9T35VLNWRH\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"AW-16970674238\\\/fxpRCNzmmrYbEL7gn5w_\\\",\\\"MC-9T35VLNWRH\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"AW-16970674238\\\/oceICOXmmrYbEL7gn5w_\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"AW-16970674238\\\/CbShCNnmmrYbEL7gn5w_\\\"}],\\\"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"]}
1011,"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"1899233587","configuration":"{\"siteId\":\"XLaEWoFqbzE9Zww0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"e45ee571ca6c44a3cfd0ea69efe731ac","type":"APP","apiClientId":45694124033,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1659732275","configuration":"{\"projectId\":\"giuxwlq7uu\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1280377139","configuration":"{\"apiKey\":\"AZEdZV1lT9zETRDMg2Lu\",\"attributionWindow\":\"30\",\"conversionEnabled\":\"true\",\"environment\":\"production\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"fe5f9fb5bccf050c76c8fae9a1e40259","type":"APP","apiClientId":308803,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1273004339","configuration":"{\"pixel_id\":\"661303220098261\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"1257603379","configuration":"{\"siteKey\":\"FXvbEP9ZXZpRg6qsite\",\"conversionEnabled\":\"false\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"a185a2fe7c225022100281af9c86107c","type":"APP","apiClientId":2865993,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1253179699","configuration":"{\"campaignID\":\"34034\",\"externalExecutionURL\":\"https:\/\/engine.saasler.com\/api\/v1\/webhook_executions\/db77a4fa0e5dcf2f857f9adbab2701d5\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7a47b06116c806e4367c27d301f4f458","type":"APP","apiClientId":3546795,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"171245875","configuration":"{\"env\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"8a9a175b11d15038a70fe78d09c59720","type":"APP","apiClientId":3977633,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"149553459","configuration":"{\"config_url\": \"https:\/\/shopify-gtm-suite.getelevar.com\/configs\/e8c7e1722fb779ca0c54f08e5147149f4f8b689d\/config.js\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"7ae63d00911d5ee26809bf1e3232d852","type":"APP","apiClientId":2509311,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
1011,"dataSharingState":"unrestricted"},{"id":"93487411","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Elevar - Checkout Tracking"},{"id":"112165171","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"20","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"GTM - SiteGP v3"},{"id":"120815923","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Tagalys - Order Tracking"},{"id":"131563827","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Attentive Custom App"},{"id":"184844595","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"FenixCommerce fenixSSID cookie"},{"id":"187892019","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Remark pixel"},{"id":"190349619","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Neon Pixel Shopify Conversion"},{"id":"206930227","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"compose"},{"id":"219578675","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"optiversal-pixel"},{"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":"Seattle Coffee Gear","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"seattlecoffeegear.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.seattlecoffeegear.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.seattlecoffeegear.com/cdn","c8540278we853e1abpb62b2c4amde256306",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"161449935155","themePublished":"true","eventMetadataId":"2156bc29-2022-4481-9b04-fe5f13536ed8","pageType":"page","resourceId":"131213820211","shopId":"83175735603","storefrontBaseUrl":"https:\/\/www.seattlecoffeegear.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"c8540278we853e1abpb62b2c4amde256306","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1011<script> 1012 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1013 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1014 window.ShopifyAnalytics.meta.currency = 'USD'; 1015 var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":131213820211,"requestId":"1cbe830a-1e3a-405b-9835-338f9a70e42c-1790270149"}}; 1016 for (var attr in meta) { 1017 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1018 } 1019</script>
vendor: 1 bytes, line 1019
1019
1020<script class="analytics"> 1021 (function () { 1022 var customDocumentWrite = function(content) { 1023 var jquery = null; 1024 1025 if (window.jQuery) { 1026 jquery = window.jQuery; 1027 } else if (window.Checkout && window.Checkout.$) { 1028 jquery = window.Checkout.$; 1029 } 1030 1031 if (jquery) { 1032 jquery('body').append(content); 1033 } 1034 }; 1035 1036 var hasLoggedConversion = function(token) { 1037 if (token) { 1038 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1039 } 1040 return false; 1041 } 1042 1043 var setCookieIfConversion = function(token) { 1044 if (token) { 1045 var twoMonthsFromNow = new Date(Date.now()); 1046 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1047 1048 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1049 } 1050 } 1051 1052 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1053 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1054 if (trekkie.integrations) { 1055 return; 1056 } 1057 trekkie.methods = [ 1058 'identify', 1059 'page', 1060 'ready', 1061 'track', 1062 'trackForm', 1063 'trackLink' 1064 ]; 1065 trekkie.factory = function(method) { 1066 return function() { 1067 var args = Array.prototype.slice.call(arguments); 1068 args.unshift(method); 1069 trekkie.push(args); 1070 if (method == 'track' || method == 'page') { 1071 try { 1072 if (window.__TREKKIE_SHIM_QUEUE == null) { 1073 window.__TREKKIE_SHIM_QUEUE = []; 1074 } 1075 window.__TREKKIE_SHIM_QUEUE.push({ 1076 from: 'trekkie-stub', 1077 method: method, 1078 args: args.slice(1) 1079 }); 1080 } catch (e) { 1081 // no-op 1082 } 1083 } 1084 return trekkie; 1085 }; 1086 }; 1087 for (var i = 0; i < trekkie.methods.length; i++) { 1088 var key = trekkie.methods[i]; 1089 trekkie[key] = trekkie.factory(key); 1090 } 1091 trekkie.load = function(config) { 1092 trekkie.config = config || {}; 1093 trekkie.config.initialDocumentCookie = document.cookie; 1094 var first = document.getElementsByTagName('script')[0]; 1095var script = document.createElement('script'); 1096script.type = 'text/javascript'; 1097script.onerror = function(e) { 1098 var scriptFallback = document.createElement('script'); 1099 scriptFallback.type = 'text/javascript'; 1100 scriptFallback.onerror = function(error) { 1101 var Monorail = { 1102 produce: function produce(monorailDomain, schemaId, payload) { 1103 var currentMs = new Date().getTime(); 1104 var event = { 1105 schema_id: schemaId, 1106 payload: payload, 1107 metadata: { 1108 event_created_at_ms: currentMs, 1109 event_sent_at_ms: currentMs 1110 } 1111 }; 1112 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1113 }, 1114 sendRequest: function sendRequest(endpointUrl, payload) { 1115 // Try the sendBeacon API 1116 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1117 var blobData = new window.Blob([payload], { 1118 type: 'text/plain' 1119 }); 1120 1121 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1122 return true; 1123 } // sendBeacon was not successful 1124 1125 } // XHR beacon 1126 1127 var xhr = new XMLHttpRequest(); 1128 1129 try { 1130 xhr.open('POST', endpointUrl); 1131 xhr.setRequestHeader('Content-Type', 'text/plain'); 1132 xhr.send(payload); 1133 } catch (e) { 1134 console.log(e); 1135 } 1136 1137 return false; 1138 }, 1139 isIos12: function isIos12() { 1140 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1141 } 1142 }; 1143 Monorail.produce('monorail-edge.shopifysvc.com', 1144 'trekkie_storefront_load_errors/1.1', 1145 {shop_id: 83175735603, 1146 theme_id: 161449935155, 1147 app_name: "storefront", 1148 context_url: window.location.href, 1149 source_url: "//www.seattlecoffeegear.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js"}); 1150 1151 }; 1152 scriptFallback.async = true; 1153 scriptFallback.src = '//www.seattlecoffeegear.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js'; 1154 first.parentNode.insertBefore(scriptFallback, first); 1155}; 1156script.async = true; 1157script.src = '//www.seattlecoffeegear.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js'; 1158first.parentNode.insertBefore(script, first); 1159 1160 }; 1161 trekkie.load( 1162 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":83
1162175735603,"isMerchantRequest":null,"themeId":161449935155,"themeCityHash":"6226520529462158942","contentLanguage":"en","currency":"USD","eventMetadataId":"2156bc29-2022-4481-9b04-fe5f13536ed8"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1163 ); 1164 1165 var loaded = false; 1166 trekkie.ready(function() { 1167 if (loaded) return; 1168 loaded = true; 1169 1170 window.ShopifyAnalytics.lib = window.trekkie; 1171 1172 var originalDocumentWrite = document.write; 1173 document.write = customDocumentWrite; 1174 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1175 document.write = originalDocumentWrite; 1176 1177 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1178 var token = match? match[1]: undefined; 1179 if (!hasLoggedConversion(token)) { 1180 setCookieIfConversion(token); 1181 1182 } 1183 }); 1184 1185 window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":131213820211,"requestId":"1cbe830a-1e3a-405b-9835-338f9a70e42c-1790270149","shopifyEmitted":true}); 1186 1187 var eventsListenerScript = document.createElement('script'); 1188 eventsListenerScript.async = true; 1189 eventsListenerScript.src = "//www.seattlecoffeegear.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1190 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1191})();</script>
vendor: 1 bytes, line 1191
1191
1192<script 1193 defer 1194 src="https://www.seattlecoffeegear.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 1195 data-application="storefront-renderer" 1196 data-shop-id="83175735603" 1197 data-render-region="gcp-us-central1" 1198 data-page-type="page" 1199 data-theme-instance-id="161449935155" 1200 data-theme-name="Paper" 1201 data-theme-version="6.1.3" 1202 data-monorail-region="shop_domain" 1203 data-resource-timing-sampling-rate="10" 1204 data-shs="true" 1205 data-shs-beacon="true" 1206 data-shs-export-with-fetch="true" 1207 data-shs-logs-sample-rate="1" 1208 data-shs-beacon-endpoint="https://www.seattlecoffeegear.com/api/collect" 1209></script>
1209 1210<meta name="shopify-y" content="65375fda-aeb0-4c42-8819-ecb89b01a2dc" data-expiration="1821827749000"><meta name="shopify-s" content="d3880cd6-e257-490c-b2b9-98ee8066fab2" data-expiration="1790271949000"><meta name="new-cookie-storage-activated" content="t"> 1211</head> 1212 <body class=" 1213 min-h-[100vh] break-words 1214 page-learn-articles 1215 "> 1216 <div 1217 x-data="app()" 1218 x-init=" 1219 handleSharedCart(); 1220 updateCart(false); 1221 initScroll(); 1222 " 1223 class="min-h-[100vh] flex flex-col"> 1224
1224<script> 1225 // Global error handler to catch unhandled promise rejections 1226 window.addEventListener('unhandledrejection', function(event) { 1227 console.warn('Unhandled promise rejection caught:', event.reason); 1228 // Prevent the error from propagating and interrupting execution 1229 event.preventDefault(); 1230 }); 1231 1232 // Also catch synchronous errors that might occur 1233 window.addEventListener('error', function(event) { 1234 // Only log and continue - don't break page functionality 1235 if (event.error) { 1236 console.warn('Global error caught:', event.error.message); 1237 } 1238 }); 1239 </script>
1239 1240 <a href="#root" class="color__bg-body border__button--radius fixed left-4 top-4 z-50 -translate-y-20 transform px-4 py-2 no-underline shadow-md focus:translate-y-0"> 1241 Skip to content 1242 </a> 1243 1244 <header 1245 class=" 1246 z-30 1247 dynamic 1248 sticky top-0 left-0 right-0 animation-300 1249 1250 " 1251 :class=" 1252 { 1253 '!z-10' : hide_header 1254 } 1255 " 1256 x-ref="header" 1257 1258 x-bind:style=" 1259 is_scrolled ? 1260 'transform: translateY(-2rem); opacity: 0; pointer-events: none;' : 1261 'transform: none; opacity: 1;' 1262 " 1263 > 1264 <!-- BEGIN sections: header-group --> 1265<div id="shopify-section-sections--21256152121651__theme_announcement" class="shopify-section shopify-section-group-header-group theme__announcement"><!-- sections/theme__announcement.liquid --> 1266 1267 1268<section 1269 class=" 1270 relative 1271 1272 color__bg-tertiary color__tertiary 1273 " 1274> 1275 <div 1276 class=" 1277 min-h-[60px] py-2 flex flex-wrap items-center justify-center 1278 window--wide 1279 " 1280 > 1281 1282 <div 1283 class=" 1284 items-center justify-start flex-shrink hidden lg:flex lg:w-1/4 1285 1286 " 1287 > 1288 1289 </div> 1290 1291 1292 <div 1293 class=" 1294 flex items-center flex-grow w-full lg:text-left lg:w-1/2 1295 1296 justify-center 1297 " 1298 > 1299 <div 1300 class=" relative w-full" 1301 x-data=" 1302 { 1303 index: 1, 1304 index_size: 0, 1305 incrementFlash() { 1306 if (this.index == this.index_size){ 1307 this.index = 1; 1308 } 1309 else { 1310 this.index++; 1311 } 1312 }, 1313 autoIncrement() { 1314 setInterval(() => this.incrementFlash(), 7000); 1315 } 1316 } 1317 " 1318 1319 x-init="autoIncrement()" 1320 1321 > 1322 <div class="relative flex w-full min-h-[16px] overflow-hidden"> 1323 1324 </div> 1325 </div> 1326 </div> 1327 1328 1329 <div class="lg:flex lg:w-1/4 items-center justify-end hidden"> 1330 1331 1332 1333 </div> 1334 </div> 1335</section> 1336 1337 1338</div><div id="shopify-section-sections--21256152121651__theme_header" class="shopify-section shopify-section-group-header-group"><!-- sections/theme__header.liquid --> 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351<nav 1352 class=" 1353 border--b-width 1354 1355 color__bg-body color__text 1356 color__border-divider-1 1357 " 1358 x-data=" 1359 { 1360 search_visible: true, 1361 search_active: false 1362 } 1363 " 1364 x-init="initTagalys(function () {Tagalys.Analytics.trackPlatformEvents();}); hideCookieBanner(window.location.pathname);"> 1365<div class="relative"><div class=" 1366 lg:hidden flex flex-wrap items-center py-2 1367 window--wide 1368 "><div class="flex items-center justify-start flex-grow flex-shrink basis-0"> 1369 1370 <button 1371 @click="menu_drawer = true; if(enable_audio) { playSound(click_audio) }" 1372 class="inline-flex py-2 pr-4 mr-2 no-underline type__nav no-js--hide" 1373 title="Menu"> 1374 <!-- snippets/component__icon.liquid --> 1375 1376 1377<span class="inline-flex align-middle " aria-hidden="true"> 1378 1379 <svg 1380 xmlns="http://www.w3.org/2000/svg" 1381 width="24" 1382 height="24"
1383 viewBox="0 0 24 24" 1384 fill="none" 1385 stroke="currentColor" 1386 stroke-width="2" 1387 stroke-linecap="round" 1388 stroke-linejoin="round" 1389 class="feather feather-menu" 1390 > 1391 <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> 1392 </svg> 1393 1394</span> 1395 1396 </button> 1397 1398 1399 <noscript> 1400 1401 <button 1402 @click="menu_drawer = true; if(enable_audio) { playSound(click_audio) }" 1403 class="inline-flex py-2 pr-4 mr-2 no-underline type__nav peer" 1404 title="Menu"> 1405 <!-- snippets/component__icon.liquid --> 1406 1407 1408<span class="inline-flex align-middle " aria-hidden="true"> 1409 1410 <svg 1411 xmlns="http://www.w3.org/2000/svg" 1412 width="24" 1413 height="24" 1414 viewBox="0 0 24 24" 1415 fill="none" 1416 stroke="currentColor" 1417 stroke-width="2" 1418 stroke-linecap="round" 1419 stroke-linejoin="round" 1420 class="feather feather-menu" 1421 > 1422 <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> 1423 </svg> 1424 1425</span> 1426 1427 </button> 1428 1429 1430 <div class="color__bg-body border--t-width color__border-divider-1 fixed bottom-0 left-0 right-0 -z-10 mt-28 hidden max-h-[70vh] w-full overflow-scroll focus-within:block hover:block peer-focus:block"><a class="block w-full p-4 no-underline border--b-width color__border-divider-1" href="#">Shop Gear </a> 1431 1432 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/espresso-machines">Espresso Machines</a> 1433 1434 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/semi-automatic">Semi-Automatic</a> 1435 1436 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/superautomatic-espresso-machines">Superautomatic </a> 1437 1438 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/espresso-machine-bundles">Bundle and Save! </a> 1439 1440 1441 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/grinders">Grinders</a> 1442 1443 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/espresso-grinders">Espresso Grinders</a> 1444 1445 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/coffee-grinders">Coffee Grinders</a> 1446 1447 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/grinder-accessories">Grinder Accessories</a> 1448 1449 1450 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/coffee-makers">Coffee Makers</a> 1451 1452 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/drip-brewers">Drip Brewers</a> 1453 1454 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/french-presses">French Presses</a> 1455 1456 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/stove-top-coffee-makers">Stove Top </a> 1457 1458 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/cold-brew">Cold Brew</a> 1459 1460 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/pour-overs">Pour Overs</a> 1461 1462 1463 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/accessories">Accessories</a> 1464 1465 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/cleaning-supplies">Cleaning Supplies</a> 1466 1467 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/filters">Filters</a> 1468 1469 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/espresso-accessories">Espresso Accessories</a> 1470 1471 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/scales-and-measuring">Scales and Measuring</a> 1472 1473 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/coffee-storage">Coffee Storage</a> 1474 1475 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/cups">Cups</a> 1476 1477 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/kettles">Kettles</a> 1478 1479 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/milk-frothers">Milk Frothers</a> 1480 1481 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/tea-ware">Tea Ware</a> 1482 1483 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/all-parts">Parts </a> 1484 1485 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/espresso-machine-maintenance-filters-subscribable">Subscriptions</a> 1486 1487 1488<a class="block w-full p-4 no-underline border--b-width color__border-divider-1" href="#">Shop Coffee</a> 1489 1490 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/coffee">Coffee</a> 1491 1492 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/coffee-new-arrivals">New Arrivals</a> 1493 1494 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/staff-picks-coffee">Staff Picks</a> 1495 1496 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/pages/roasters">Shop Roasters</a> 1497 1498 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="https://www.seattlecoffeegear.com/collections/coffee/subscribable">Subscriptions</a> 1499 1500 1501 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="#">Roast Level</a> 1502 1503 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/light-roast">Light</a> 1504 1505 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/medium-roast">Medium</a> 1506 1507 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/dark-roast">Dark </a> 1508 1509 1510 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="#">Taste Profile</a> 1511 1512 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/balanced">Balanced</a> 1513 1514 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/bright-and-floral">Bright and Floral</a> 1515 1516 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/earth-and-smoke">Earth and Smoke</a> 1517 1518 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/fruit-forward">Fruit Forward</a> 1519 1520 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/rich-and-sweet">Rich and Sweet</a> 1521 1522 1523 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="#">Brew Method</a> 1524 1525 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/superautomatic-friendly">Superautomatic Friendly</a> 1526 1527 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/espresso">Espresso</a> 1528 1529 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/drip">Drip Coffee</a> 1530 1531 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/pour-over-coffee">Pour Over</a> 1532 1533 1534 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="#">Specialty</a> 1535 1536 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/single-origin">Single Origin</a> 1537 1538 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/blends">Blends</a> 1539 1540 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/decaf">Decaf</a> 1541 1542 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/organic">Organic</a> 1543 1544 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/european-favorites">European Favorites</a> 1545 1546 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/direct-trade">Fair/Direct Trade</a> 1547 1548 1549<a class="block w-full p-4 no-underline border--b-width color__border-divider-1" href="#">Commercial</a> 1550 1551 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/commercial-espresso-machines">Commercial Machines</a> 1552 1553 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-semi-automatic">Semi-automatic</a> 1554 1555 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-superautomatic">Superautomatic</a> 1556 1557 1558 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/commercial-grinders">Commercial Grinders</a> 1559 1560 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-coffee-grinders">Coffee Grinders</a> 1561 1562 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-espresso-grinders">Espresso Grinders</a> 1563 1564 1565 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/commercial-brewing">Commercial Brewing</a> 1566 1567 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-drip-brewers">Drip</a> 1568 1569 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-cold-brew-and-tea">Cold Brew and Tea</a> 1570 1571 1572 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" href="/collections/commercial-accessories">Commercial Accessories</a> 1573 1574 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-maintenance">Maintenance</a> 1575 1576 <a class="border--b-width color__border-divider-1 block w-full p-4 !pl-12 no-underline" href="/collections/commercial-cleaning-supplies">Cleaning Supplies</a> 1577 1578 1579<a class="block w-full p-4 no-underline border--b-width color__border-divider-1" href="/collections/sale">SALE</a> 1580 1581</div> 1582 </noscript> 1583 </div> 1584 <div class="flex max-w-[60%] items-center sm:max-w-[70%]"> 1585 1586 1587 1588 1589 <a 1590 class="relative !inline-block flex hidden items-center" 1591 style=" 1592 height: 60px; 1593 width: 246.0px; 1594 " 1595 href="/" 1596 title="Seattle Coffee Gear"> 1597 <img src="//www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&width=400" alt="Seattle Coffee Gear Logo" srcset="//www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&width=352 352w, //www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&width=400 400w" width="400" height="98" class="w-full h-full !bg-transparent object-contain"> 1598 </a> 1599 1600 1601 </div> 1602 <div class="flex items-center justify-end flex-grow flex-shrink text-right basis-0 gap-3"> 1603 1604 <!-- snippets/header__search-mobile.liquid --> 1605 1606 1607<div 1608 class="no-js--hide flex-grow w-full pt-2 ml-3" 1609 x-data=" 1610 { 1611 search: false, 1612 params: { 1613 author: false, 1614 body: false, 1615 product_type: true, 1616 tag: true, 1617 title: true, 1618 variants_barcode: true, 1619 variants_sku: true, 1620 variants_title: true, 1621 vendor: true 1622 }, 1623 resources: { 1624 article: false, 1625 collection: true, 1626 page: false, 1627 product: true, 1628 query: true 1629 } 1630 } 1631 " 1632> 1633 <form 1634 action="/search" 1635 method="get" 1636 x-init="initTagalys(function () {initSearchSuggestions();});" 1637 > 1638 <div 1639 class="relative min-h-[]" 1640 :class="{ 'z-10': search_active }" 1641 > 1642 1643 <input type="hidden" name="type" value="product"> 1644 <div 1645 class="animation-500 absolute top-0 w-full hidden" 1646 :class="{ 'z-10 !fixed !block left-4 !top-4 right-4 !w-auto': search_active }" 1647 > 1648 <label 1649 class="sr-only" 1650 for="search-mobile" 1651 >Search</label> 1652 <input 1653 id="search-mobile" 1654 class=" 1655 form-input !pl-8 color__text !min-h-0 1656 color__border-divider-1 1657 " 1658 type="text" 1659 autocomplete="off" 1660 name="q" 1661 placeholder="Search by products, colors, or more..." 1662 x-ref="searchInputMobile" 1663 @focus="search_active = true; renderFocusSuggestions($event);" 1664 @input.debounce="updateSearchSuggestions($event)" 1665 > 1666 <div class="right-2 absolute top-0 flex items-center h-full"> 1667 <button 1668 class="btn btn--smaller btn--plain !bg-transparent !border-0 opacity-0" 1669 :class="{ '!opacity-100' : search_active }" 1670 type="button" 1671 title="Cancel search" 1672 @click="search_active = false; $refs.searchInputMobile.value = '';" 1673 x-show="search_active" 1674 > 1675 <!-- snippets/component__icon.liquid --> 1676 1677 1678<span class="inline-flex align-middle " aria-hidden="true"
1678> 1679 1680 <svg 1681 xmlns="http://www.w3.org/2000/svg" 1682 width="16" 1683 height="16" 1684 viewBox="0 0 24 24" 1685 fill="none" 1686 stroke="currentColor" 1687 stroke-width="2" 1688 stroke-linecap="round" 1689 stroke-linejoin="round" 1690 class="feather feather-x" 1691 > 1692 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 1693 </svg> 1694 1695</span> 1696 1697 </button> 1698 </div> 1699 <!-- snippets/component__icon.liquid --> 1700 1701 1702<span class="inline-flex align-middle absolute !flex items-center 1703 top-0 left-2 h-full opacity-50 color__text" aria-hidden="true"> 1704 1705 <svg 1706 xmlns="http://www.w3.org/2000/svg" 1707 width="20" 1708 height="20" 1709 viewBox="0 0 24 24" 1710 fill="none" 1711 stroke="currentColor" 1712 stroke-width="2" 1713 stroke-linecap="round" 1714 stroke-linejoin="round" 1715 class="feather feather-search" 1716 > 1717 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 1718 </svg> 1719 1720</span> 1721 1722 </div> 1723 1724 <button 1725 type="button" 1726 class="" 1727 aria-label="Open Search" 1728 @click="search_active = true; $nextTick(() => { $refs.searchInputMobile.focus(); renderFocusSuggestions({ target: $refs.searchInputMobile }); });" 1729 > 1730 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 1731 <circle cx="11" cy="11" r="8"></circle> 1732 <line x1="21" y1="21" x2="16.65" y2="16.65"></line> 1733 </svg> 1734 </button><div 1735 class=" 1736 fixed overflow-hidden mobile-border--radius-t-0 shadow-md border--width border--radius animation-100 left-0 right-0 top-0 pt-14 1737 color__border-divider-1 1738 color__bg-body color__text 1739 " 1740 x-show="search_active" 1741 1742 x-transition:enter="animation-300" 1743 x-transition:enter-start="opacity-0" 1744 x-transition:enter-end="opacity-100" 1745 x-transition:leave="animation-300" 1746 x-transition:leave-start="opacity-100" 1747 x-transition:leave-end="opacity-0" 1748 1749 x-cloak 1750 > 1751 <div class="flex flex-wrap h-full px-4 -mx-4 overflow-y-auto"> 1752 <div class="h-[50vh] w-full overflow-y-auto">�<div 1753 class="p-4" 1754 x-show="search_loading" 1755 x-cloak 1756 > 1757 <div class="btn--load btn--loading"> 1758 <div class="btn__content">Loading...</div> 1759 <div class="btn__spinner"> 1760 <!-- snippets/component__icon.liquid --> 1761 1762 1763<span class="inline-flex align-middle " aria-hidden="true"> 1764 1765 <svg 1766 xmlns="http://www.w3.org/2000/svg" 1767 width="20" 1768 height="20"
1769 viewBox="0 0 24 24" 1770 fill="none" 1771 stroke="currentColor" 1772 stroke-width="2" 1773 stroke-linecap="round" 1774 stroke-linejoin="round" 1775 class="feather feather-loader" 1776 > 1777 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 1778 </svg> 1779 1780</span> 1781 1782 </div> 1783 </div> 1784 </div><div 1785 class=" 1786 sticky top-0 z-10 border--b-width p-4 1787 color__border-divider-1 1788 color__bg-body color__text 1789 " 1790 x-show="(search_items && search_items.length != 0) || (search_items_pages && search_items_pages.length !== 0) || (search_items_articles && search_items_articles.length !== 0) && !search_loading" 1791 x-cloak 1792 > 1793 <button 1794 class="underline" 1795 type="submit" 1796 > 1797 View all results 1798 </button> 1799 </div> 1800 1801 1802 <div 1803 x-show="!search_loading && $refs.searchInputMobile.value.length == 0" 1804 x-cloak 1805 > 1806 <div 1807 class="p-4 pt-2 border--b-width color__border-divider-1" 1808 x-show="search_items_recent && search_items_recent.length !== 0" 1809 > 1810 <span class="type--small pb-2 no-underline"> 1811 <strong>Recent</strong> 1812 </span> 1813 <template x-for="item in search_items_recent"> 1814 <div class="flex items-center justify-between"> 1815 <div class="flex items-center"> 1816 <!-- snippets/component__icon.liquid --> 1817 1818 1819<span class="inline-flex align-middle mr-1" aria-hidden="true"> 1820 1821 <svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 512 512"> 1822 <!--!Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.--><path d="M418 187.1C391.2 124.1 328.7 80 256 80c-39.7 0-77.8 15.8-105.9 43.9l-4.1 4.1 35.7 35.7c6.6 6.6 10.3 15.6 10.3 25c0 19.5-15.8 35.3-35.3 35.3H40c-13.3 0-24-10.7-24-24V83.3C16 63.8 31.8 48 51.3 48c9.4 0 18.3 3.7 25 10.3L112 94.1l4.1-4.1C153.2 52.8 203.5 32 256 32c92.6 0 172.1 56.2 206.2 136.3c5.2 12.2-.5 26.3-12.7 31.5s-26.3-.5-31.5-12.7zM50 344.1c-5.2-12.2 .4-26.3 12.6-31.5s26.3 .4 31.5 12.6C121 388.1 183.4 432 256 432c39.7 0 77.8-15.8 105.9-43.9l4.1-4.1-35.7-35.7c-6.6-6.6-10.3-15.6-10.3-25c0-19.5 15.8-35.3 35.3-35.3H472c13.3 0 24 10.7 24 24V428.7c0 19.5-15.8 35.3-35.3 35.3c-9.4 0-18.3-3.7-25-10.3L400 417.9l-4.1 4.1C358.8 459.2 308.5 480 256 480c-92.5 0-171.8-56-206-135.9zM64 176h62.1L64 113.9V176zM448 336H385.9L448 398.1V336z"/> 1823 </svg> 1824 1825</span> 1826 1827 <a 1828 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 1829 :href="window.location.origin + '/search?type=product&' + item.queryString" 1830 x-html="item.displayString" 1831 > 1832 </a> 1833 </div> 1834 <button 1835 class="btn btn--search__remove" 1836 @click="removeRecentSearch(item.queryString)" 1837 > 1838 <!-- snippets/component__icon.liquid --> 1839 1840 1841<span class="inline-flex align-middle " aria-hidden="true"> 1842 1843 <svg 1844 xmlns="http://www.w3.org/2000/svg" 1845 width="16" 1846 height="16"
1847 viewBox="0 0 24 24" 1848 fill="none" 1849 stroke="currentColor" 1850 stroke-width="2" 1851 stroke-linecap="round" 1852 stroke-linejoin="round" 1853 class="feather feather-x" 1854 > 1855 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 1856 </svg> 1857 1858</span> 1859 1860 </button> 1861 </div> 1862 </template> 1863 </div> 1864 <div 1865 class="p-4 pt-2 border--b-width color__border-divider-1" 1866 x-show="search_items_suggestions && search_items_suggestions.length !== 0" 1867 > 1868 <span class="type--small pb-2 no-underline"> 1869 <strong>Trending</strong> 1870 </span> 1871 <template x-for="item in search_items_suggestions"> 1872 <div class="flex items-center"> 1873 <!-- snippets/component__icon.liquid --> 1874 1875 1876<span class="inline-flex align-middle mr-1" aria-hidden="true"> 1877 1878 <svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 576 512"> 1879 <!--!Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.--><path d="M352 120c0-13.3 10.7-24 24-24H552c13.3 0 24 10.7 24 24V296c0 13.3-10.7 24-24 24s-24-10.7-24-24V177.9L337 369c-9.4 9.4-24.6 9.4-33.9 0l-111-111L41 409c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L175 207c9.4-9.4 24.6-9.4 33.9 0l111 111L494.1 144H376c-13.3 0-24-10.7-24-24z"/> 1880 </svg> 1881 1882</span> 1883 1884 <a 1885 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 1886 :href="window.location.origin + '/search?type=product&' + item.queryString" 1887 x-html="item.displayString" 1888 > 1889 </a> 1890 </div> 1891 </template> 1892 </div> 1893 </div><div 1894 x-show="!search_loading && $refs.searchInputMobile.value.length > 0" 1895 x-cloak 1896 > 1897 <div 1898 class="p-4" 1899 x-show="(search_items && search_items.length === 0) && (search_items_pages && search_items_pages.length === 0) && (search_items_articles && search_items_articles.length === 0) && !search_loading" 1900 x-cloak 1901 > 1902 <p>No results found</p> 1903 </div> 1904 1905 1906 <div 1907 class=" 1908 p-4 border--b-width 1909 color__border-divider-1 1910 " 1911 x-show="search_items && search_items.length != 0" 1912 > 1913 <span class="type--small pb-2 no-underline"> 1914 <strong>Products</strong> 1915 </span> 1916 1917 <div class="md:gap-4 grid grid-cols-1 gap-2"> 1918 <template x-for="item in search_items"> 1919 <a 1920 class="hover:no-underline border--width border--radius color__bg-body color__text color__border-divider-1 flex items-center w-full overflow-hidden no-underline" 1921 :href="'/products/'+ item.handle" 1922 > 1923 <div class="w-[25%] h-full flex-none"> 1924 <div 1925 class=" 1926 object-cover flex items-center aspect-[1/1] aspect-w-1 aspect-h-1 h-full max-w-full 1927 color__bg-body after:color__bg-body color__text after:color__text 1928 " 1929 > 1930 <img 1931 class=" 1932 w-full h-full object-cover 1933 color__bg-body after:color__bg-body color__text after:color__text 1934 " 1935 width="180" 1936 height="180" 1937 loading="lazy" 1938 :src="item.featured_image.src + '&width=180'" 1939 :alt="item.title"
1940 > 1941 </div> 1942 </div> 1943 1944 <div class="grow md:py-4 p-2 px-4"> 1945 <p 1946 class=" 1947 mb-0 type--base !leading-tight 1948 type__body 1949 1950 1951 " 1952 x-text="item.title" 1953 ></p> 1954 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75 mb-0.5"> 1955 1956 1957 </ul> 1958 1959 <p class="type--small mb-0"> 1960 <span 1961 class="type--small !leading-tight" 1962 x-text="Shopify.formatMoney(item.price*100, currency_symbol, true, 'amount', '100')" 1963 > 1964 1965 </span> 1966 <span x-show="item.compare_at_price_max > item.price"> 1967 <s 1968 class="type--small !leading-tight" 1969 x-text="Shopify.formatMoney(item.compare_at_price_max*100, currency_symbol, true, 'amount', '100')" 1970 > 1971 1972 </s> 1973 </span> 1974 </p> 1975 </div> 1976 </a> 1977 </template> 1978 </div> 1979 </div> 1980 1981 1982 <div 1983 class=" 1984 p-4 border--b-width 1985 color__border-divider-1 1986 " 1987 x-show="search_items_collections && search_items_collections.length !== 0" 1988 > 1989 <span class="type--small pb-2 no-underline"> 1990 <strong>Collections</strong> 1991 </span> 1992 <template x-for="item in search_items_collections"> 1993 <div class="flex items-center"> 1994 <!-- snippets/component__icon.liquid --> 1995 1996 1997<span class="inline-flex align-middle mr-1" aria-hidden="true"> 1998 1999 <svg 2000 xmlns="http://www.w3.org/2000/svg" 2001 width="20" 2002 height="20"
2003 viewBox="0 0 24 24" 2004 fill="none" 2005 stroke="currentColor" 2006 stroke-width="2" 2007 stroke-linecap="round" 2008 stroke-linejoin="round" 2009 class="feather feather-search" 2010 > 2011 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2012 </svg> 2013 2014</span> 2015 2016 <a 2017 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2018 :href="item.link" 2019 x-text="item.displayString" 2020 > 2021 </a> 2022 </div> 2023 </template> 2024 </div> 2025 2026 2027 <div 2028 class=" 2029 p-4 border--b-width 2030 color__border-divider-1 2031 " 2032 x-show="search_items_pages && search_items_pages.length !== 0" 2033 > 2034 <span class="type--small pb-2 no-underline"> 2035 <strong>Pages</strong> 2036 </span> 2037 <template x-for="item in search_items_pages"> 2038 <div class="flex items-center"> 2039 <!-- snippets/component__icon.liquid --> 2040 2041 2042<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2043 2044 <svg 2045 xmlns="http://www.w3.org/2000/svg" 2046 width="20" 2047 height="20"
2048 viewBox="0 0 24 24" 2049 fill="none" 2050 stroke="currentColor" 2051 stroke-width="2" 2052 stroke-linecap="round" 2053 stroke-linejoin="round" 2054 class="feather feather-search" 2055 > 2056 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2057 </svg> 2058 2059</span> 2060 2061 <a 2062 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2063 :href="item.link" 2064 x-text="item.displayString" 2065 > 2066 </a> 2067 </div> 2068 </template> 2069 </div> 2070 2071 2072 <div 2073 class="p-4 border--b-width color__border-divider-1" 2074 x-show="search_items_articles && search_items_articles.length !== 0" 2075 > 2076 <span class="type--small pb-2 no-underline"> 2077 <strong>Articles</strong> 2078 </span> 2079 <template x-for="item in search_items_articles"> 2080 <div class="flex items-center"> 2081 <!-- snippets/component__icon.liquid --> 2082 2083 2084<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2085 2086 <svg 2087 xmlns="http://www.w3.org/2000/svg" 2088 width="20" 2089 height="20"
2090 viewBox="0 0 24 24" 2091 fill="none" 2092 stroke="currentColor" 2093 stroke-width="2" 2094 stroke-linecap="round" 2095 stroke-linejoin="round" 2096 class="feather feather-search" 2097 > 2098 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2099 </svg> 2100 2101</span> 2102 2103 <a 2104 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2105 :href="item.link" 2106 x-text="item.displayString" 2107 > 2108 </a> 2109 </div> 2110 </template> 2111 </div> 2112 </div> 2113 </div> 2114 </div> 2115 </div> 2116 </div> 2117 </form><div 2118 class="fixed inset-0 bg-black bg-opacity-25" 2119 aria-hidden="true" 2120 @click="search_active = false;" 2121 x-show="search_active" 2122 2123 x-transition:enter="animation-300" 2124 x-transition:enter-start="opacity-0" 2125 x-transition:enter-end="opacity-100" 2126 x-transition:leave="animation-300" 2127 x-transition:leave-start="opacity-100" 2128 x-transition:leave-end="opacity-0" 2129 2130 x-cloak 2131 ></div> 2132</div> 2133 2134 2135 2136 <a 2137 class="relative inline-flex items-center py-2 no-underline type__nav" 2138 href="/cart" 2139 rel="nofollow" 2140 title="Cart" 2141 > 2142 <!-- snippets/component__icon.liquid --> 2143 2144 2145<span class="inline-flex align-middle " aria-hidden="true"> 2146 2147 <svg 2148 xmlns="http://www.w3.org/2000/svg" 2149 width="24" 2150 height="24"
2151 viewBox="0 0 24 24" 2152 fill="none" 2153 stroke="currentColor" 2154 stroke-width="2" 2155 stroke-linecap="round" 2156 stroke-linejoin="round" 2157 class="feather feather-shopping-cart" 2158 > 2159 <circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path> 2160 </svg> 2161 2162</span> 2163 2164 <span 2165 class="type__nav type--smaller color__bg-primary color__primary border__button--radius ml-1 px-2 py-0.5" 2166 x-show="cart.item_count > 0" 2167 x-cloak> 2168 <span class="type__nav" x-text="cart.item_count">0</span> 2169 </span> 2170 </a> 2171 2172 </div> 2173 </div><div class=" 2174 lg:flex items-stretch justify-between hidden 2175 window--wide 2176 2177 2178 flex-wrap 2179 2180 2181 "> 2182 2183 2184 2185 2186 <div class="md:pt-4 flex items-center max-w-xs py-2 2187 "> 2188 2189 2190 2191 2192 2193 <a class="!inline-block relative" 2194 style=" 2195 height: 80px; 2196 width: 328.0px; 2197 " 2198 href="/" 2199 title="Seattle Coffee Gear"> 2200 <img src="//www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&width=600" alt="Seattle Coffee Gear Logo" srcset="//www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&width=352 352w, //www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&width=600 600w" width="600" height="146" class="w-full h-full !bg-transparent object-contain"> 2201 </a> 2202 2203 2204 </div> 2205 2206 2207 2208 <!-- snippets/header__search-desktop.liquid --> 2209 2210 2211<div 2212 class=" 2213 no-js--hide left-0 right-0 top-1/2 flex items-center justify-center flex-grow py-0 2214 relative grow-[7] 2215 2216 " 2217> 2218 <div 2219 class=" 2220 flex-grow w-full 2221 relative pl-6 2222 2223 " 2224 x-data=" 2225 { 2226 params: { 2227 author: false, 2228 body: false, 2229 product_type: true, 2230 tag: true, 2231 title: true, 2232 variants_barcode: true, 2233 variants_sku: true, 2234 variants_title: true, 2235 vendor: true 2236 }, 2237 resources: { 2238 article: false, 2239 collection: true, 2240 page: false, 2241 product: true, 2242 query: true 2243 } 2244 } 2245 " 2246 x-show="search_visible" 2247 x-cloak 2248 > 2249 <form 2250 action="/search" 2251 method="get" 2252 x-init="initTagalys(function () {initSearchSuggestions();});" 2253 > 2254 <div 2255 class="relative" 2256 :class="{ 'z-50': search_active }" 2257 > 2258 2259 <input type="hidden" name="type" value="product"><div 2260 class="relative" 2261 :class="{ 'z-10': search_active }" 2262 > 2263 <label 2264 class="sr-only" 2265 for="search-desktop" 2266 > 2267 Search 2268 </label> 2269 <input 2270 id="search-desktop" 2271 class=" 2272 form-input !pl-8 py-2 color__text !min-h-0 max-h-[35px] 2273 color__border-divider-1 2274 " 2275 type="text" 2276 autocomplete="off" 2277 name="q" 2278 placeholder="Search by products, colors, or more..." 2279 x-ref="searchInput" 2280 @focus="search_active = true; renderFocusSuggestions($event);" 2281 2282 @input.debounce="updateSearchSuggestions($event)" 2283 > 2284 <div class="right-2 absolute top-0 flex items-center h-full"> 2285 <button 2286 class="btn btn--smaller btn--plain !bg-transparent !border-0" 2287 title="Cancel search" 2288 type="button" 2289 @click=" 2290 search_active = false; $refs.searchInput.value = ''; 2291 2292 " 2293 x-show="search_active" 2294 x-cloak 2295 > 2296 <!-- snippets/component__icon.liquid --> 2297 2298 2299<span class="inline-flex align-middle " aria-hidden="true"> 2300 2301 <svg 2302 xmlns="http://www.w3.org/2000/svg" 2303 width="20" 2304 height="20"
2305 viewBox="0 0 24 24" 2306 fill="none" 2307 stroke="currentColor" 2308 stroke-width="2" 2309 stroke-linecap="round" 2310 stroke-linejoin="round" 2311 class="feather feather-x" 2312 > 2313 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 2314 </svg> 2315 2316</span> 2317 2318 </button> 2319 </div> 2320 <!-- snippets/component__icon.liquid --> 2321 2322 2323<span class="inline-flex align-middle pointer-events-none absolute !flex items-center 2324 top-0 left-2 h-full opacity-50 color__text" aria-hidden="true"> 2325 2326 <svg 2327 xmlns="http://www.w3.org/2000/svg" 2328 width="20" 2329 height="20" 2330 viewBox="0 0 24 24" 2331 fill="none" 2332 stroke="currentColor" 2333 stroke-width="2" 2334 stroke-linecap="round" 2335 stroke-linejoin="round" 2336 class="feather feather-search" 2337 > 2338 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2339 </svg> 2340 2341</span> 2342 2343 </div><div 2344 class=" 2345 absolute overflow-hidden shadow-md border--width border--radius animation-500 pt-16 -left-3 -right-3 -top-3 2346 color__border-divider-1 2347 color__bg-body color__text 2348 " 2349 x-show="search_active" 2350 x-cloak 2351 > 2352 <div class="flex flex-wrap h-full px-4 -mx-4"> 2353 <div class="h-[70vh] max-h-[600px] w-full overflow-y-auto">�<div 2354 class="p-4" 2355 x-show="search_loading" 2356 x-cloak 2357 > 2358 <div class="btn--load btn--loading"> 2359 <div class="btn__content">Loading...</div> 2360 <div class="btn__spinner"> 2361 <!-- snippets/component__icon.liquid --> 2362 2363 2364<span class="inline-flex align-middle " aria-hidden="true"> 2365 2366 <svg 2367 xmlns="http://www.w3.org/2000/svg" 2368 width="24" 2369 height="24"
2370 viewBox="0 0 24 24" 2371 fill="none" 2372 stroke="currentColor" 2373 stroke-width="2" 2374 stroke-linecap="round" 2375 stroke-linejoin="round" 2376 class="feather feather-loader" 2377 > 2378 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 2379 </svg> 2380 2381</span> 2382 2383 </div> 2384 </div> 2385 </div><div 2386 class=" 2387 sticky top-0 z-10 border--b-width p-4 2388 color__border-divider-1 2389 color__bg-body color__text 2390 " 2391 x-show="(search_items && search_items.length != 0) || (search_items_pages && search_items_pages.length !== 0) || (search_items_articles && search_items_articles.length !== 0) && !search_loading" 2392 x-cloak 2393 > 2394 <button 2395 class="underline" 2396 type="submit" 2397 > 2398 View all results 2399 </button> 2400 </div> 2401 2402 <div 2403 x-show="!search_loading && $refs.searchInput.value.length == 0" 2404 x-cloak 2405 > 2406 <div 2407 class="p-4 pt-2 border--b-width color__border-divider-1" 2408 x-show="search_items_recent && search_items_recent.length !== 0" 2409 > 2410 <span class="type--small pb-2 no-underline"> 2411 <strong>Recent</strong> 2412 </span> 2413 <template x-for="item in search_items_recent"> 2414 <div class="flex items-center justify-between"> 2415 <div class="flex items-center"> 2416 <!-- snippets/component__icon.liquid --> 2417 2418 2419<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2420 2421 <svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 512 512"> 2422 <!--!Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.--><path d="M418 187.1C391.2 124.1 328.7 80 256 80c-39.7 0-77.8 15.8-105.9 43.9l-4.1 4.1 35.7 35.7c6.6 6.6 10.3 15.6 10.3 25c0 19.5-15.8 35.3-35.3 35.3H40c-13.3 0-24-10.7-24-24V83.3C16 63.8 31.8 48 51.3 48c9.4 0 18.3 3.7 25 10.3L112 94.1l4.1-4.1C153.2 52.8 203.5 32 256 32c92.6 0 172.1 56.2 206.2 136.3c5.2 12.2-.5 26.3-12.7 31.5s-26.3-.5-31.5-12.7zM50 344.1c-5.2-12.2 .4-26.3 12.6-31.5s26.3 .4 31.5 12.6C121 388.1 183.4 432 256 432c39.7 0 77.8-15.8 105.9-43.9l4.1-4.1-35.7-35.7c-6.6-6.6-10.3-15.6-10.3-25c0-19.5 15.8-35.3 35.3-35.3H472c13.3 0 24 10.7 24 24V428.7c0 19.5-15.8 35.3-35.3 35.3c-9.4 0-18.3-3.7-25-10.3L400 417.9l-4.1 4.1C358.8 459.2 308.5 480 256 480c-92.5 0-171.8-56-206-135.9zM64 176h62.1L64 113.9V176zM448 336H385.9L448 398.1V336z"/> 2423 </svg> 2424 2425</span> 2426 2427 <a 2428 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2429 :href="window.location.origin + '/search?type=product&' + item.queryString" 2430 x-html="item.displayString" 2431 > 2432 </a> 2433 </div> 2434 <button 2435 class="btn btn--search__remove" 2436 @click="removeRecentSearch(item.queryString)" 2437 > 2438 <!-- snippets/component__icon.liquid --> 2439 2440 2441<span class="inline-flex align-middle " aria-hidden="true"> 2442 2443 <svg 2444 xmlns="http://www.w3.org/2000/svg" 2445 width="16" 2446 height="16"
2447 viewBox="0 0 24 24" 2448 fill="none" 2449 stroke="currentColor" 2450 stroke-width="2" 2451 stroke-linecap="round" 2452 stroke-linejoin="round" 2453 class="feather feather-x" 2454 > 2455 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 2456 </svg> 2457 2458</span> 2459 2460 </button> 2461 </div> 2462 </template> 2463 </div> 2464 <div 2465 class="p-4 pt-2 border--b-width color__border-divider-1" 2466 x-show="search_items_suggestions && search_items_suggestions.length !== 0" 2467 > 2468 <span class="type--small pb-2 no-underline"> 2469 <strong>Trending</strong> 2470 </span> 2471 <template x-for="item in search_items_suggestions"> 2472 <div class="flex items-center"> 2473 <!-- snippets/component__icon.liquid --> 2474 2475 2476<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2477 2478 <svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 576 512"> 2479 <!--!Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.--><path d="M352 120c0-13.3 10.7-24 24-24H552c13.3 0 24 10.7 24 24V296c0 13.3-10.7 24-24 24s-24-10.7-24-24V177.9L337 369c-9.4 9.4-24.6 9.4-33.9 0l-111-111L41 409c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L175 207c9.4-9.4 24.6-9.4 33.9 0l111 111L494.1 144H376c-13.3 0-24-10.7-24-24z"/> 2480 </svg> 2481 2482</span> 2483 2484 <a 2485 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2486 :href="window.location.origin + '/search?type=product&' + item.queryString" 2487 x-html="item.displayString" 2488 > 2489 </a> 2490 </div> 2491 </template> 2492 </div> 2493 </div><div 2494 x-show="!search_loading && $refs.searchInput.value.length > 0" 2495 x-cloak 2496 > 2497 <div 2498 class="p-4" 2499 x-show="(search_items && search_items.length === 0) && (search_items_pages && search_items_pages.length === 0) && (search_items_articles && search_items_articles.length === 0) && !search_loading" 2500 x-cloak 2501 > 2502 <p>No results found</p> 2503 </div> 2504 2505 2506 <div 2507 class=" 2508 p-4 border--b-width 2509 color__border-divider-1 2510 " 2511 x-show="search_items && search_items.length != 0" 2512 > 2513 <span class="type--small pb-2 no-underline"> 2514 <strong>Products</strong> 2515 </span> 2516 <div class="md:gap-4 grid grid-cols-2 gap-2"> 2517 <template x-for="item in search_items"> 2518 <a 2519 class="hover:no-underline border--width border--radius color__bg-body color__text color__border-divider-1 flex items-center w-full overflow-hidden no-underline" 2520 :href="'/products/'+ item.handle " 2521 > 2522 <div class="w-[20%] h-full flex flex-col shrink-0 overflow-hidden"> 2523 <div 2524 class=" 2525 flex items-center object-cover aspect-[1/1] aspect-w-1 aspect-h-1 h-full max-w-full 2526 color__bg-body after:color__bg-body color__text after:color__text 2527 " 2528 > 2529 <img 2530 class="w-full h-full object-cover color__bg-body after:color__bg-body color__text after:color__text" 2531 width="120" 2532 height="120" 2533 loading="lazy" 2534 :src="item.featured_image.src + '&width=240'" 2535 :alt="item.title"
2536 > 2537 </div> 2538 </div> 2539 2540 <div class="grow md:py-4 p-2 px-4"> 2541 <p 2542 class=" 2543 mb-0 type--base !leading-tight 2544 type__body 2545 2546 2547 " 2548 x-text="item.title" 2549 ></p> 2550 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75 mb-0.5"> 2551 2552 2553 </ul> 2554 2555 <p class="type--small mb-0"> 2556 <span 2557 class="type--small !leading-tight" 2558 x-text="Shopify.formatMoney(item.price*100, currency_symbol, true, 'amount', '100')" 2559 > 2560 2561 </span> 2562 <span x-show="item.compare_at_price_max > item.price"> 2563 <s 2564 class="type--small !leading-tight" 2565 x-text="Shopify.formatMoney(item.compare_at_price_max*100, currency_symbol, true, 'amount', '100')" 2566 > 2567 2568 </s> 2569 </span> 2570 </p> 2571 </div> 2572 </a> 2573 </template> 2574 </div> 2575 </div> 2576 2577 2578 <div 2579 class=" 2580 p-4 border--b-width 2581 color__border-divider-1 2582 " 2583 x-show="search_items_collections && search_items_collections.length !== 0" 2584 > 2585 <span class="type--small pb-2 no-underline"> 2586 <strong>Collections</strong> 2587 </span> 2588 <template x-for="item in search_items_collections"> 2589 <div class="flex items-center"> 2590 <!-- snippets/component__icon.liquid --> 2591 2592 2593<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2594 2595 <svg 2596 xmlns="http://www.w3.org/2000/svg" 2597 width="20" 2598 height="20"
2599 viewBox="0 0 24 24" 2600 fill="none" 2601 stroke="currentColor" 2602 stroke-width="2" 2603 stroke-linecap="round" 2604 stroke-linejoin="round" 2605 class="feather feather-search" 2606 > 2607 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2608 </svg> 2609 2610</span> 2611 2612 <a 2613 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2614 :href="item.link" 2615 x-text="item.displayString" 2616 > 2617 </a> 2618 </div> 2619 </template> 2620 </div> 2621 2622 2623 <div 2624 class=" 2625 p-4 border--b-width 2626 color__border-divider-1 2627 " 2628 x-show="search_items_pages && search_items_pages.length !== 0" 2629 > 2630 <span class="type--small pb-2 no-underline"> 2631 <strong>Pages</strong> 2632 </span> 2633 <template x-for="item in search_items_pages"> 2634 <div class="flex items-center"> 2635 <!-- snippets/component__icon.liquid --> 2636 2637 2638<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2639 2640 <svg 2641 xmlns="http://www.w3.org/2000/svg" 2642 width="20" 2643 height="20"
2644 viewBox="0 0 24 24" 2645 fill="none" 2646 stroke="currentColor" 2647 stroke-width="2" 2648 stroke-linecap="round" 2649 stroke-linejoin="round" 2650 class="feather feather-search" 2651 > 2652 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2653 </svg> 2654 2655</span> 2656 2657 <a 2658 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2659 :href="item.link" 2660 x-text="item.displayString" 2661 > 2662 </a> 2663 </div> 2664 </template> 2665 </div> 2666 2667 2668 <div 2669 class=" 2670 p-4 border--b-width 2671 color__border-divider-1 2672 " 2673 x-show="search_items_articles && search_items_articles.length !== 0" 2674 > 2675 <span class="type--small pb-2 no-underline"> 2676 <strong>Articles</strong> 2677 </span> 2678 <template x-for="item in search_items_articles"> 2679 <div class="flex items-center"> 2680 <!-- snippets/component__icon.liquid --> 2681 2682 2683<span class="inline-flex align-middle mr-1" aria-hidden="true"> 2684 2685 <svg 2686 xmlns="http://www.w3.org/2000/svg" 2687 width="20" 2688 height="20"
2689 viewBox="0 0 24 24" 2690 fill="none" 2691 stroke="currentColor" 2692 stroke-width="2" 2693 stroke-linecap="round" 2694 stroke-linejoin="round" 2695 class="feather feather-search" 2696 > 2697 <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> 2698 </svg> 2699 2700</span> 2701 2702 <a 2703 class="whitespace-nowrap text-ellipsis overflow-hidden no-underline" 2704 :href="item.link" 2705 x-text="item.displayString" 2706 > 2707 </a> 2708 </div> 2709 </template> 2710 </div> 2711 </div> 2712 </div> 2713 </div> 2714 </div> 2715 </div> 2716 </form><div 2717 class="fixed inset-0 bg-black bg-opacity-25" 2718 aria-hidden="true" 2719 @click=" 2720 search_active = false; 2721 2722 " 2723 x-show="search_active" 2724 x-cloak 2725 ></div> 2726 </div> 2727</div> 2728 2729 2730 2731 2732 <div class="flex items-center justify-end flex-shrink pl-2 text-right"> 2733 2734 2735 2736 2737 2738 </div> 2739 2740 2741 <div 2742 class=" 2743 flex flex-wrap items-center type__body -mt-4 2744 2745 2746 w-full 2747 2748 " 2749 ><div class="flex-shrink"> 2750 <a 2751 href="#" 2752 class=" 2753 header__link h-full flex items-center mr-2 block no-underline type__nav--top text-zinc-600 2754 2755 2756 xl:pr-4 pt-2 pb-4 uppercase font-medium 2757 2758 2759 2760 2761 px-2 xl:px-4 xl:mx-2 2762 2763 " 2764 x-data="{ linkTitle: 'shop gear ' }" 2765 :class="{ '!text-scg-red': ['sale','deal'].some(k => linkTitle.includes(k)) }" 2766 > 2767 Shop Gear 2768 2769 <!-- snippets/component__icon.liquid --> 2770 2771 2772<span class="inline-flex align-middle ml-1" aria-hidden="true"> 2773 2774 <svg 2775 xmlns="http://www.w3.org/2000/svg" 2776 width="16" 2777 height="16"
2778 viewBox="0 0 24 24" 2779 fill="none" 2780 stroke="currentColor" 2781 stroke-width="2" 2782 stroke-linecap="round" 2783 stroke-linejoin="round" 2784 class="feather feather-chevron-down" 2785 > 2786 <polyline points="6 9 12 15 18 9"></polyline> 2787 </svg> 2788 2789</span> 2790 2791 2792 </a> 2793 2794 2795 <div class="absolute left-0 block w-full h-0 overflow-hidden normal-case opacity-0 header__dropdown animation-300"> 2796 <div 2797 class=" 2798 border--t-width border--b-width 2799 color__bg-body color__text 2800 color__border-divider-1 2801 " 2802 > 2803 <div class="window--wide"> 2804 <div 2805 class=" 2806 flex flex-row justify-start items-start overflow-hidden 2807 2808 color__border-divider-1 2809 " 2810 > 2811 <div class="flex flex-wrap "> 2812 2813 <div class="py-8 pr-2 xl:pr-4"> 2814 2815 <a href="/collections/espresso-machines" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 2816 <div class="type__body--bold !hover:no-underline"> 2817 Espresso Machines 2818 </div> 2819 <span class="text-sm no-underline type__body hover:underline"> 2820 Shop All 2821 <!-- snippets/component__icon.liquid --> 2822 2823 2824<span class="inline-flex align-middle ml-1" aria-hidden="true"> 2825 2826 <svg 2827 xmlns="http://www.w3.org/2000/svg" 2828 width="16" 2829 height="16"
2830 viewBox="0 0 24 24" 2831 fill="none" 2832 stroke="currentColor" 2833 stroke-width="2" 2834 stroke-linecap="round" 2835 stroke-linejoin="round" 2836 class="feather feather-arrow-right inline-block" 2837 > 2838 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 2839 </svg> 2840 2841</span> 2842 2843 </span> 2844 </a> 2845 2846 2847 <a href="/collections/semi-automatic" class="block pl-4 no-underline type__body"> 2848 Semi-Automatic 2849 </a> 2850 2851 <a href="/collections/superautomatic-espresso-machines" class="block pl-4 no-underline type__body"> 2852 Superautomatic 2853 </a> 2854 2855 <a href="/collections/espresso-machine-bundles" class="block pl-4 no-underline type__body"> 2856 Bundle and Save! 2857 </a> 2858 2859 </div> 2860 2861 <div class="py-8 pr-2 xl:pr-4"> 2862 2863 <a href="/collections/grinders" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 2864 <div class="type__body--bold !hover:no-underline"> 2865 Grinders 2866 </div> 2867 <span class="text-sm no-underline type__body hover:underline"> 2868 Shop All 2869 <!-- snippets/component__icon.liquid --> 2870 2871 2872<span class="inline-flex align-middle ml-1" aria-hidden="true"> 2873 2874 <svg 2875 xmlns="http://www.w3.org/2000/svg" 2876 width="16" 2877 height="16"
2878 viewBox="0 0 24 24" 2879 fill="none" 2880 stroke="currentColor" 2881 stroke-width="2" 2882 stroke-linecap="round" 2883 stroke-linejoin="round" 2884 class="feather feather-arrow-right inline-block" 2885 > 2886 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 2887 </svg> 2888 2889</span> 2890 2891 </span> 2892 </a> 2893 2894 2895 <a href="/collections/espresso-grinders" class="block pl-4 no-underline type__body"> 2896 Espresso Grinders 2897 </a> 2898 2899 <a href="/collections/coffee-grinders" class="block pl-4 no-underline type__body"> 2900 Coffee Grinders 2901 </a> 2902 2903 <a href="/collections/grinder-accessories" class="block pl-4 no-underline type__body"> 2904 Grinder Accessories 2905 </a> 2906 2907 </div> 2908 2909 <div class="py-8 pr-2 xl:pr-4"> 2910 2911 <a href="/collections/coffee-makers" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 2912 <div class="type__body--bold !hover:no-underline"> 2913 Coffee Makers 2914 </div> 2915 <span class="text-sm no-underline type__body hover:underline"> 2916 Shop All 2917 <!-- snippets/component__icon.liquid --> 2918 2919 2920<span class="inline-flex align-middle ml-1" aria-hidden="true"> 2921 2922 <svg 2923 xmlns="http://www.w3.org/2000/svg" 2924 width="16" 2925 height="16"
2926 viewBox="0 0 24 24" 2927 fill="none" 2928 stroke="currentColor" 2929 stroke-width="2" 2930 stroke-linecap="round" 2931 stroke-linejoin="round" 2932 class="feather feather-arrow-right inline-block" 2933 > 2934 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 2935 </svg> 2936 2937</span> 2938 2939 </span> 2940 </a> 2941 2942 2943 <a href="/collections/drip-brewers" class="block pl-4 no-underline type__body"> 2944 Drip Brewers 2945 </a> 2946 2947 <a href="/collections/french-presses" class="block pl-4 no-underline type__body"> 2948 French Presses 2949 </a> 2950 2951 <a href="/collections/stove-top-coffee-makers" class="block pl-4 no-underline type__body"> 2952 Stove Top 2953 </a> 2954 2955 <a href="/collections/cold-brew" class="block pl-4 no-underline type__body"> 2956 Cold Brew 2957 </a> 2958 2959 <a href="/collections/pour-overs" class="block pl-4 no-underline type__body"> 2960 Pour Overs 2961 </a> 2962 2963 </div> 2964 2965 <div class="py-8 pr-2 xl:pr-4"> 2966 2967 <a href="/collections/accessories" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 2968 <div class="type__body--bold !hover:no-underline"> 2969 Accessories 2970 </div> 2971 <span class="text-sm no-underline type__body hover:underline"> 2972 Shop All 2973 <!-- snippets/component__icon.liquid --> 2974 2975 2976<span class="inline-flex align-middle ml-1" aria-hidden="true"> 2977 2978 <svg 2979 xmlns="http://www.w3.org/2000/svg" 2980 width="16" 2981 height="16"
2982 viewBox="0 0 24 24" 2983 fill="none" 2984 stroke="currentColor" 2985 stroke-width="2" 2986 stroke-linecap="round" 2987 stroke-linejoin="round" 2988 class="feather feather-arrow-right inline-block" 2989 > 2990 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 2991 </svg> 2992 2993</span> 2994 2995 </span> 2996 </a> 2997 2998 2999 <a href="/collections/cleaning-supplies" class="block pl-4 no-underline type__body"> 3000 Cleaning Supplies 3001 </a> 3002 3003 <a href="/collections/filters" class="block pl-4 no-underline type__body"> 3004 Filters 3005 </a> 3006 3007 <a href="/collections/espresso-accessories" class="block pl-4 no-underline type__body"> 3008 Espresso Accessories 3009 </a> 3010 3011 <a href="/collections/scales-and-measuring" class="block pl-4 no-underline type__body"> 3012 Scales and Measuring 3013 </a> 3014 3015 <a href="/collections/coffee-storage" class="block pl-4 no-underline type__body"> 3016 Coffee Storage 3017 </a> 3018 3019 <a href="/collections/cups" class="block pl-4 no-underline type__body"> 3020 Cups 3021 </a> 3022 3023 <a href="/collections/kettles" class="block pl-4 no-underline type__body"> 3024 Kettles 3025 </a> 3026 3027 <a href="/collections/milk-frothers" class="block pl-4 no-underline type__body"> 3028 Milk Frothers 3029 </a> 3030 3031 <a href="/collections/tea-ware" class="block pl-4 no-underline type__body"> 3032 Tea Ware 3033 </a> 3034 3035 <a href="/collections/all-parts" class="block pl-4 no-underline type__body"> 3036 Parts 3037 </a> 3038 3039 <a href="/collections/espresso-machine-maintenance-filters-subscribable" class="block pl-4 no-underline type__body"> 3040 Subscriptions 3041 </a> 3042 3043 </div> 3044 3045 </div> 3046 3047 3048 3049 3050 3051 3052 3053<div class="flex flex-wrap py-8 max-w-[50%] mt-16 pl-6"> 3054 <div class="flex flex-col border-l-2 border-gray-200"> 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 <a class=" 3065 type__body block mb-1 pl-4 no-underline uppercase 3066 3067 3068 " href="/collections/new-arrivals"> 3069 New Arrivals 3070 </a> 3071 3072 <a class=" 3073 type__body block mb-1 pl-4 no-underline uppercase 3074 3075 3076 " href="/collections/staff-pick"> 3077 Staff Picks 3078 </a> 3079 3080 <a class=" 3081 type__body block mb-1 pl-4 no-underline uppercase 3082 3083 3084 " href="/pages/brands"> 3085 Shop Brands 3086 </a> 3087 3088 <a class=" 3089 type__body block mb-1 pl-4 no-underline uppercase 3090 3091 3092 " href="/collections/refurbished"> 3093 Refurbished 3094 </a> 3095 3096 <a class=" 3097 type__body block mb-1 pl-4 no-underline uppercase 3098 3099 3100 " href="/collections/open-box-merchandise"> 3101 Open Box 3102 </a> 3103 3104 <a class=" 3105 type__body block mb-1 pl-4 no-underline uppercase 3106 3107 3108 " href="/collections/closeouts"> 3109 Closeouts 3110 </a> 3111 3112 <a class=" 3113 type__body block mb-1 pl-4 no-underline uppercase 3114 3115 color__text-scg-red 3116 " href="/collections/sale"> 3117 Sale
3118 </a> 3119 3120 3121 3122 3123 3124 3125 3126 </div> 3127</div></div></div></div></div></div><div class="flex-shrink"> 3128 <a 3129 href="#" 3130 class=" 3131 header__link h-full flex items-center mr-2 block no-underline type__nav--top text-zinc-600 3132 3133 3134 xl:pr-4 pt-2 pb-4 uppercase font-medium 3135 3136 3137 3138 3139 px-2 xl:px-4 xl:mx-2 3140 3141 " 3142 x-data="{ linkTitle: 'shop coffee' }" 3143 :class="{ '!text-scg-red': ['sale','deal'].some(k => linkTitle.includes(k)) }" 3144 > 3145 Shop Coffee 3146 3147 <!-- snippets/component__icon.liquid --> 3148 3149 3150<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3151 3152 <svg 3153 xmlns="http://www.w3.org/2000/svg" 3154 width="16" 3155 height="16" 3156 viewBox="0 0 24 24" 3157 fill="none" 3158 stroke="currentColor" 3159 stroke-width="2" 3160 stroke-linecap="round" 3161 stroke-linejoin="round" 3162 class="feather feather-chevron-down" 3163 > 3164 <polyline points="6 9 12 15 18 9"></polyline> 3165 </svg> 3166 3167</span> 3168 3169 3170 </a> 3171 3172 3173 <div class="absolute left-0 block w-full h-0 overflow-hidden normal-case opacity-0 header__dropdown animation-300"> 3174 <div 3175 class=" 3176 border--t-width border--b-width 3177 color__bg-body color__text 3178 color__border-divider-1 3179 " 3180 > 3181 <div class="window--wide"> 3182 <div 3183 class=" 3184 flex flex-row justify-start items-start overflow-hidden 3185 3186 !justify-between 3187 3188 color__border-divider-1 3189 " 3190 > 3191 <div class="flex flex-wrap "> 3192 3193 <div class="py-8 pr-2 xl:pr-4"> 3194 3195 <a href="/collections/coffee" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 3196 <div class="type__body--bold !hover:no-underline"> 3197 Coffee 3198 </div> 3199 <span class="text-sm no-underline type__body hover:underline"> 3200 Shop All 3201 <!-- snippets/component__icon.liquid --> 3202 3203 3204<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3205 3206 <svg 3207 xmlns="http://www.w3.org/2000/svg" 3208 width="16" 3209 height="16"
3210 viewBox="0 0 24 24" 3211 fill="none" 3212 stroke="currentColor" 3213 stroke-width="2" 3214 stroke-linecap="round" 3215 stroke-linejoin="round" 3216 class="feather feather-arrow-right inline-block" 3217 > 3218 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 3219 </svg> 3220 3221</span> 3222 3223 </span> 3224 </a> 3225 3226 3227 <a href="/collections/coffee-new-arrivals" class="block pl-4 no-underline type__body"> 3228 New Arrivals 3229 </a> 3230 3231 <a href="/collections/staff-picks-coffee" class="block pl-4 no-underline type__body"> 3232 Staff Picks 3233 </a> 3234 3235 <a href="/pages/roasters" class="block pl-4 no-underline type__body"> 3236 Shop Roasters 3237 </a> 3238 3239 <a href="https://www.seattlecoffeegear.com/collections/coffee/subscribable" class="block pl-4 no-underline type__body"> 3240 Subscriptions 3241 </a> 3242 3243 </div> 3244 3245 <div class="py-8 pr-2 xl:pr-4"> 3246 3247 <div class="flex items-center h-16 px-4 py-2 mb-4 bg-gray-100 rounded-md"> 3248 <div class="leading-tight type__body--bold"> 3249 Roast Level 3250 </div> 3251 </div> 3252 3253 3254 <a href="/collections/light-roast" class="block pl-4 no-underline type__body"> 3255 Light 3256 </a> 3257 3258 <a href="/collections/medium-roast" class="block pl-4 no-underline type__body"> 3259 Medium 3260 </a> 3261 3262 <a href="/collections/dark-roast" class="block pl-4 no-underline type__body"> 3263 Dark 3264 </a> 3265 3266 </div> 3267 3268 <div class="py-8 pr-2 xl:pr-4"> 3269 3270 <div class="flex items-center h-16 px-4 py-2 mb-4 bg-gray-100 rounded-md"> 3271 <div class="leading-tight type__body--bold"> 3272 Taste Profile 3273 </div> 3274 </div> 3275 3276 3277 <a href="/collections/balanced" class="block pl-4 no-underline type__body"> 3278 Balanced 3279 </a> 3280 3281 <a href="/collections/bright-and-floral" class="block pl-4 no-underline type__body"> 3282 Bright and Floral 3283 </a> 3284 3285 <a href="/collections/earth-and-smoke" class="block pl-4 no-underline type__body"> 3286 Earth and Smoke 3287 </a> 3288 3289 <a href="/collections/fruit-forward" class="block pl-4 no-underline type__body"> 3290 Fruit Forward 3291 </a> 3292 3293 <a href="/collections/rich-and-sweet" class="block pl-4 no-underline type__body"> 3294 Rich and Sweet 3295 </a> 3296 3297 </div> 3298 3299 <div class="py-8 pr-2 xl:pr-4"> 3300 3301 <div class="flex items-center h-16 px-4 py-2 mb-4 bg-gray-100 rounded-md"> 3302 <div class="leading-tight type__body--bold"> 3303 Brew Method 3304 </div> 3305 </div> 3306 3307 3308 <a href="/collections/superautomatic-friendly" class="block pl-4 no-underline type__body"> 3309 Superautomatic Friendly 3310 </a> 3311 3312 <a href="/collections/espresso" class="block pl-4 no-underline type__body"> 3313 Espresso 3314 </a> 3315 3316 <a href="/collections/drip" class="block pl-4 no-underline type__body"> 3317 Drip Coffee 3318 </a> 3319 3320 <a href="/collections/pour-over-coffee" class="block pl-4 no-underline type__body"> 3321 Pour Over 3322 </a> 3323 3324 </div> 3325 3326 <div class="py-8 pr-2 xl:pr-4"> 3327 3328 <div class="flex items-center h-16 px-4 py-2 mb-4 bg-gray-100 rounded-md"> 3329 <div class="leading-tight type__body--bold"> 3330 Specialty 3331 </div> 3332 </div> 3333 3334 3335 <a href="/collections/single-origin" class="block pl-4 no-underline type__body"> 3336 Single Origin 3337 </a> 3338 3339 <a href="/collections/blends" class="block pl-4 no-underline type__body"> 3340 Blends 3341 </a> 3342 3343 <a href="/collections/decaf" class="block pl-4 no-underline type__body"> 3344 Decaf 3345 </a> 3346 3347 <a href="/collections/organic" class="block pl-4 no-underline type__body"> 3348 Organic 3349 </a> 3350 3351 <a href="/collections/european-favorites" class="block pl-4 no-underline type__body"> 3352 European Favorites 3353 </a> 3354 3355 <a href="/collections/direct-trade" class="block pl-4 no-underline type__body"> 3356 Fair/Direct Trade 3357 </a> 3358 3359 </div> 3360 3361 </div> 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 <a href="/pages/coffee-subscriptions" class="flex flex-wrap py-8"> 3375 <div class="relative aspect-square" style="height: 16rem;"> 3376 3377 <div class="relative w-full h-full overflow-hidden rounded-lg"> 3378 <img src="//www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock.jpg?crop=center&height=192&v=1762890026&width=256" alt="A selection of Tony's Coffee products on a dark gray background with portafilter and latte's. " srcset="//www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock.jpg?crop=center&height=192&v=1762890026&width=256 256w" width="256" height="192" class="w-full h-full object-cover"> 3379 3380 3381 <div class="absolute inset-0 flex items-start justify-center pt-4"> 3382 <h3 class="px-4 text-xl font-bold text-center text-white drop-shadow-lg"> 3383 SUBSCRIBE & SAVE 3384 </h3> 3385 </div> 3386 3387 3388 3389 <div class="absolute inset-0 flex items-end justify-center pb-4">
3390 <span class="px-3 py-1 text-sm font-medium text-white rounded-md" style="background-color: #d3324d;"> 3391 5% Off Every Order 3392 </span> 3393 </div> 3394 3395 </div> 3396 3397 </div> 3398 </a> 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408</div></div></div></div></div><div class="flex-shrink"> 3409 <a 3410 href="#" 3411 class=" 3412 header__link h-full flex items-center mr-2 block no-underline type__nav--top text-zinc-600 3413 3414 3415 xl:pr-4 pt-2 pb-4 uppercase font-medium 3416 3417 3418 3419 3420 px-2 xl:px-4 xl:mx-2 3421 3422 " 3423 x-data="{ linkTitle: 'commercial' }" 3424 :class="{ '!text-scg-red': ['sale','deal'].some(k => linkTitle.includes(k)) }" 3425 > 3426 Commercial 3427 3428 <!-- snippets/component__icon.liquid --> 3429 3430 3431<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3432 3433 <svg 3434 xmlns="http://www.w3.org/2000/svg" 3435 width="16" 3436 height="16"
3437 viewBox="0 0 24 24" 3438 fill="none" 3439 stroke="currentColor" 3440 stroke-width="2" 3441 stroke-linecap="round" 3442 stroke-linejoin="round" 3443 class="feather feather-chevron-down" 3444 > 3445 <polyline points="6 9 12 15 18 9"></polyline> 3446 </svg> 3447 3448</span> 3449 3450 3451 </a> 3452 3453 3454 <div class="absolute left-0 block w-full h-0 overflow-hidden normal-case opacity-0 header__dropdown animation-300"> 3455 <div 3456 class=" 3457 border--t-width border--b-width 3458 color__bg-body color__text 3459 color__border-divider-1 3460 " 3461 > 3462 <div class="window--wide"> 3463 <div 3464 class=" 3465 flex flex-row justify-start items-start overflow-hidden 3466 3467 color__border-divider-1 3468 " 3469 > 3470 <div class="flex flex-wrap "> 3471 3472 <div class="py-8 pr-2 xl:pr-4"> 3473 3474 <a href="/collections/commercial-espresso-machines" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 3475 <div class="type__body--bold !hover:no-underline"> 3476 Commercial Machines 3477 </div> 3478 <span class="text-sm no-underline type__body hover:underline"> 3479 Shop All 3480 <!-- snippets/component__icon.liquid --> 3481 3482 3483<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3484 3485 <svg 3486 xmlns="http://www.w3.org/2000/svg" 3487 width="16" 3488 height="16"
3489 viewBox="0 0 24 24" 3490 fill="none" 3491 stroke="currentColor" 3492 stroke-width="2" 3493 stroke-linecap="round" 3494 stroke-linejoin="round" 3495 class="feather feather-arrow-right inline-block" 3496 > 3497 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 3498 </svg> 3499 3500</span> 3501 3502 </span> 3503 </a> 3504 3505 3506 <a href="/collections/commercial-semi-automatic" class="block pl-4 no-underline type__body"> 3507 Semi-automatic 3508 </a> 3509 3510 <a href="/collections/commercial-superautomatic" class="block pl-4 no-underline type__body"> 3511 Superautomatic 3512 </a> 3513 3514 </div> 3515 3516 <div class="py-8 pr-2 xl:pr-4"> 3517 3518 <a href="/collections/commercial-grinders" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 3519 <div class="type__body--bold !hover:no-underline"> 3520 Commercial Grinders 3521 </div> 3522 <span class="text-sm no-underline type__body hover:underline"> 3523 Shop All 3524 <!-- snippets/component__icon.liquid --> 3525 3526 3527<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3528 3529 <svg 3530 xmlns="http://www.w3.org/2000/svg" 3531 width="16" 3532 height="16"
3533 viewBox="0 0 24 24" 3534 fill="none" 3535 stroke="currentColor" 3536 stroke-width="2" 3537 stroke-linecap="round" 3538 stroke-linejoin="round" 3539 class="feather feather-arrow-right inline-block" 3540 > 3541 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 3542 </svg> 3543 3544</span> 3545 3546 </span> 3547 </a> 3548 3549 3550 <a href="/collections/commercial-coffee-grinders" class="block pl-4 no-underline type__body"> 3551 Coffee Grinders 3552 </a> 3553 3554 <a href="/collections/commercial-espresso-grinders" class="block pl-4 no-underline type__body"> 3555 Espresso Grinders 3556 </a> 3557 3558 </div> 3559 3560 <div class="py-8 pr-2 xl:pr-4"> 3561 3562 <a href="/collections/commercial-brewing" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 3563 <div class="type__body--bold !hover:no-underline"> 3564 Commercial Brewing 3565 </div> 3566 <span class="text-sm no-underline type__body hover:underline"> 3567 Shop All 3568 <!-- snippets/component__icon.liquid --> 3569 3570 3571<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3572 3573 <svg 3574 xmlns="http://www.w3.org/2000/svg" 3575 width="16" 3576 height="16"
3577 viewBox="0 0 24 24" 3578 fill="none" 3579 stroke="currentColor" 3580 stroke-width="2" 3581 stroke-linecap="round" 3582 stroke-linejoin="round" 3583 class="feather feather-arrow-right inline-block" 3584 > 3585 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 3586 </svg> 3587 3588</span> 3589 3590 </span> 3591 </a> 3592 3593 3594 <a href="/collections/commercial-drip-brewers" class="block pl-4 no-underline type__body"> 3595 Drip 3596 </a> 3597 3598 <a href="/collections/commercial-cold-brew-and-tea" class="block pl-4 no-underline type__body"> 3599 Cold Brew and Tea 3600 </a> 3601 3602 </div> 3603 3604 <div class="py-8 pr-2 xl:pr-4"> 3605 3606 <a href="/collections/commercial-accessories" class="flex flex-col items-start h-16 px-4 py-2 mb-4 no-underline bg-gray-100 rounded-md hover:no-underline hover:opacity-60"> 3607 <div class="type__body--bold !hover:no-underline"> 3608 Commercial Accessories 3609 </div> 3610 <span class="text-sm no-underline type__body hover:underline"> 3611 Shop All 3612 <!-- snippets/component__icon.liquid --> 3613 3614 3615<span class="inline-flex align-middle ml-1" aria-hidden="true"> 3616 3617 <svg 3618 xmlns="http://www.w3.org/2000/svg" 3619 width="16" 3620 height="16"
3621 viewBox="0 0 24 24" 3622 fill="none" 3623 stroke="currentColor" 3624 stroke-width="2" 3625 stroke-linecap="round" 3626 stroke-linejoin="round" 3627 class="feather feather-arrow-right inline-block" 3628 > 3629 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 3630 </svg> 3631 3632</span> 3633 3634 </span> 3635 </a> 3636 3637 3638 <a href="/collections/commercial-maintenance" class="block pl-4 no-underline type__body"> 3639 Maintenance 3640 </a> 3641 3642 <a href="/collections/commercial-cleaning-supplies" class="block pl-4 no-underline type__body"> 3643 Cleaning Supplies 3644 </a> 3645 3646 </div> 3647 3648 </div> 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 <div class="flex flex-wrap py-8 max-w-[50%]"> 3670 <div class="p-6 rounded-md color__bg-scg-blue h-fit"> 3671 <h3 class="color__primary">Get started with a free consultation!</h3> 3672 <div class="color__primary"> 3673 <p>Weâll reach out to you to assist with product selection, troubleshooting, and to answer any general questions.</p> 3674 </div> 3675 <a href="/pages/commercial" class="btn"> 3676 Learn More 3677 </a> 3678 </div> 3679 3680 <div> 3681 <h4 class="text-lg font-bold !mb-1 !mt-2">Need Assistance?</h4> 3682 <div class="flex flex-col items-start justify-start gap-1"> 3683 <div class="flex flex-row items-start justify-start divide-x-2 divide-slate-200 "> 3684 <div class="flex flex-col px-3 mt-2 "> 3685 <span class="flex items-center"> 3686 <!-- snippets/component__icon.liquid --> 3687 3688 3689<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 3690 3691 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512"> 3692 <path d="M493.09 351.3L384.7 304.8a31.36 31.36 0 0 0-36.5 8.9l-44.1 53.9A350 350 0 0 1 144.5 208l53.9-44.1a31.35 31.35 0 0 0 8.9-36.49l-46.5-108.5A31.33 31.33 0 0 0 125 .81L24.2 24.11A31.05 31.05 0 0 0 0 54.51C0 307.8 205.3 512 457.49 512A31.23 31.23 0 0 0 488 487.7L511.19 387a31.21 31.21 0 0 0-18.1-35.7zM456.89 480C222.4 479.7 32.3 289.7 32.1 55.21l99.6-23 46 107.39-72.8 59.5C153.3 302.3 209.4 358.6 313 407.2l59.5-72.8 107.39 46z"/> 3693 </svg> 3694 3695</span> 3696 3697 <span class="flex flex-col xl:flex-row"> 3698 <span class="text-base xl:text-lg">Call us at</span> 3699 <a href="tel:8663724734" class="color__text-scg-blue xl:ml-2 !no-underline">866-372-4734</a> 3700 </span> 3701 </span> 3702 3703 </div> 3704 3705 <div class="px-3 mt-2"> 3706 <a href="/policies/contact-information" class="color__text-scg-blue flex items-center !no-underline"> 3707 <!-- snippets/component__icon.liquid --> 3708 3709 3710<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 3711 3712 <svg 3713 xmlns="http://www.w3.org/2000/svg" 3714 width="18" 3715 height="18"
3716 viewBox="0 0 24 24" 3717 fill="none" 3718 stroke="currentColor" 3719 stroke-width="2" 3720 stroke-linecap="round" 3721 stroke-linejoin="round" 3722 class="feather feather-message-circle" 3723 > 3724 <path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path> 3725 </svg> 3726 3727</span> 3728 3729 <span class="text-base xl:text-lg">Live Chat</span> 3730 </a> 3731 </div> 3732 3733 <div class="px-3 mt-2"> 3734 <a href="mailto:[email protected]" class="color__text-scg-blue flex items-center !no-underline"> 3735 <!-- snippets/component__icon.liquid --> 3736 3737 3738<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 3739 3740 <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 512 512"> 3741 <path d="M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM48 96h416c8.8 0 16 7.2 16 16v41.4c-21.9 18.5-53.2 44-150.6 121.3-16.9 13.4-50.2 45.7-73.4 45.3-23.2.4-56.6-31.9-73.4-45.3C85.2 197.4 53.9 171.9 32 153.4V112c0-8.8 7.2-16 16-16zm416 320H48c-8.8 0-16-7.2-16-16V195c22.8 18.7 58.8 47.6 130.7 104.7 20.5 16.4 56.7 52.5 93.3 52.3 36.4.3 72.3-35.5 93.3-52.3 71.9-57.1 107.9-86 130.7-104.7v205c0 8.8-7.2 16-16 16z"/> 3742 </svg> 3743 3744</span> 3745 3746 <span class="text-base xl:text-lg">Email Us</span> 3747 </a> 3748 </div> 3749 3750 <div class="px-3 mt-2"> 3751 <a href="/blogs/scg-blog" class="color__text-scg-blue flex items-center !no-underline"> 3752 <!-- snippets/component__icon.liquid --> 3753 3754 3755<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 3756 3757 <svg 3758 xmlns="http://www.w3.org/2000/svg" 3759 width="22" 3760 height="14"
3761 viewBox="0 0 576 512" 3762 stroke="currentColor" 3763 stroke-width="2" 3764 stroke-linecap="round" 3765 stroke-linejoin="round" 3766 class="feather feather-blog" 3767 > 3768 <path d="M561.91 0C549.44 0 406.51 6.49 320 56.89 233.49 6.49 90.56 0 78.09 0 35.03 0 0 34.34 0 76.55v313.72c0 40.73 32.47 74.3 73.92 76.41 36.78 1.91 128.81 9.5 187.73 38.69 8.19 4.05 17.25 6.29 26.34 6.58v.05h64.02v-.05c9.09-.29 18.15-2.53 26.34-6.58 58.92-29.19 150.95-36.78 187.73-38.69C607.53 464.57 640 431 640 390.27V76.55C640 34.34 604.97 0 561.91 0zM296 438.15c0 11.09-10.96 18.91-21.33 14.96-64.53-24.54-153.96-32.07-198.31-34.38-15.9-.8-28.36-13.3-28.36-28.46V76.55C48 60.81 61.5 48 78.06 48c19.93.1 126.55 7.81 198.53 40.49 11.63 5.28 19.27 16.66 19.28 29.44L296 224v214.15zm296-47.88c0 15.16-12.46 27.66-28.36 28.47-44.35 2.3-133.78 9.83-198.31 34.38-10.37 3.94-21.33-3.87-21.33-14.96V224l.14-106.08c.02-12.78 7.65-24.15 19.28-29.44C435.4 55.81 542.02 48.1 561.94 48 578.5 48 592 60.81 592 76.55v313.72z"/> 3769 </svg> 3770 3771</span> 3772 3773 <span class="text-base xl:text-lg">Blog</span> 3774 </a> 3775 </div> 3776 </div> 3777 <span class="ml-6 text-sm">8am - 5pm PST, Mon - Fri</span> 3778 </div> 3779 </div> 3780 </div> 3781 3782</div></div></div></div></div><div class="flex-shrink"> 3783 <a 3784 href="/collections/sale" 3785 class=" 3786 header__link h-full flex items-center mr-2 block no-underline type__nav--top text-zinc-600 3787 3788 3789 xl:pr-4 pt-2 pb-4 uppercase font-medium 3790 3791 3792 3793 3794 px-2 xl:px-4 xl:mx-2 3795 3796 " 3797 x-data="{ linkTitle: 'sale' }" 3798 :class="{ '!text-scg-red': ['sale','deal'].some(k => linkTitle.includes(k)) }" 3799 > 3800 SALE 3801 3802 </a> 3803 3804 </div> 3805<div class="flex flex-wrap items-center ml-auto"> 3806<div class="relative flex-shrink" x-data="{ showTooltipResourceHub: false }"> 3807 <a 3808 x-on:mouseover="showTooltipResourceHub = true" 3809 x-on:mouseout="showTooltipResourceHub = false" 3810 class="type__nav inline-flex items-center pl-2 xl:pl-4 ml-2 !no-underline" 3811 href="/pages/resource-hub" 3812 title="Resource Hub"> 3813 <!-- snippets/component__icon.liquid --> 3814 3815 3816<span class="inline-flex align-middle " aria-hidden="true"> 3817 3818 <svg 3819 xmlns="http://www.w3.org/2000/svg" 3820 width="24" 3821 height="24"
3822 viewBox="0 0 24 24" 3823 fill="none" 3824 stroke="currentColor" 3825 stroke-width="2" 3826 stroke-linecap="round" 3827 stroke-linejoin="round" 3828 class="feather feather-help-circle" 3829 > 3830 <circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line> 3831 </svg> 3832 3833</span> 3834 3835 </a> 3836 <div 3837 x-show="showTooltipResourceHub" 3838 class="tooltip" 3839 x-cloak> 3840 Resource Hub 3841 </div> 3842</div> 3843 3844<div class="relative flex-shrink" x-data="{ showTooltipLearn: false }"> 3845 <a 3846 x-on:mouseover="showTooltipLearn = true" 3847 x-on:mouseout="showTooltipLearn = false" 3848 class="type__nav inline-flex items-center pl-2 xl:pl-4 ml-2 !no-underline" 3849 href="/pages/learn-articles" 3850 title="Blog Articles"> 3851 <!-- snippets/component__icon.liquid --> 3852 3853 3854<span class="inline-flex align-middle " aria-hidden="true"> 3855 3856 <svg 3857 xmlns="http://www.w3.org/2000/svg" 3858 width="28" 3859 height="20"
3860 viewBox="0 0 576 512" 3861 stroke="currentColor" 3862 stroke-width="2" 3863 stroke-linecap="round" 3864 stroke-linejoin="round" 3865 class="feather feather-blog" 3866 > 3867 <path d="M561.91 0C549.44 0 406.51 6.49 320 56.89 233.49 6.49 90.56 0 78.09 0 35.03 0 0 34.34 0 76.55v313.72c0 40.73 32.47 74.3 73.92 76.41 36.78 1.91 128.81 9.5 187.73 38.69 8.19 4.05 17.25 6.29 26.34 6.58v.05h64.02v-.05c9.09-.29 18.15-2.53 26.34-6.58 58.92-29.19 150.95-36.78 187.73-38.69C607.53 464.57 640 431 640 390.27V76.55C640 34.34 604.97 0 561.91 0zM296 438.15c0 11.09-10.96 18.91-21.33 14.96-64.53-24.54-153.96-32.07-198.31-34.38-15.9-.8-28.36-13.3-28.36-28.46V76.55C48 60.81 61.5 48 78.06 48c19.93.1 126.55 7.81 198.53 40.49 11.63 5.28 19.27 16.66 19.28 29.44L296 224v214.15zm296-47.88c0 15.16-12.46 27.66-28.36 28.47-44.35 2.3-133.78 9.83-198.31 34.38-10.37 3.94-21.33-3.87-21.33-14.96V224l.14-106.08c.02-12.78 7.65-24.15 19.28-29.44C435.4 55.81 542.02 48.1 561.94 48 578.5 48 592 60.81 592 76.55v313.72z"/> 3868 </svg> 3869 3870</span> 3871 3872 </a> 3873 <div 3874 x-show="showTooltipLearn" 3875 class="tooltip" 3876 x-cloak> 3877 Blog Articles 3878 </div> 3879</div> 3880<div class="relative flex-shrink" x-data="{ showTooltipAccount: false }"> 3881 <a 3882 x-on:mouseover="showTooltipAccount = true" 3883 x-on:mouseout="showTooltipAccount = false" 3884 class="type__nav inline-flex items-center pl-2 xl:pl-4 ml-2 !no-underline" 3885 href="https://account.seattlecoffeegear.com" 3886 rel="nofollow" 3887 title="Log in"> 3888 <!-- snippets/component__icon.liquid --> 3889 3890 3891<span class="inline-flex align-middle " aria-hidden="true"> 3892 3893 <svg 3894 xmlns="http://www.w3.org/2000/svg" 3895 width="24" 3896 height="24"
3897 viewBox="0 0 24 24" 3898 fill="none" 3899 stroke="currentColor" 3900 stroke-width="2" 3901 stroke-linecap="round" 3902 stroke-linejoin="round" 3903 class="feather feather-user" 3904 > 3905 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle> 3906 </svg> 3907 3908</span> 3909 3910 3911 </a> 3912 <div 3913 x-show="showTooltipAccount" 3914 class="tooltip" 3915 x-cloak> 3916 Account 3917 </div> 3918</div> 3919 3920<div class="flex-shrink"> 3921 <a 3922 class="type__nav relative inline-flex items-center pl-2 xl:pl-4 ml-2 !no-underline" 3923 href="/cart" 3924 rel="nofollow" 3925 title="Cart" 3926 > 3927 <!-- snippets/component__icon.liquid --> 3928 3929 3930<span class="inline-flex align-middle " aria-hidden="true"> 3931 3932 <svg 3933 xmlns="http://www.w3.org/2000/svg" 3934 width="24" 3935 height="24" 3936 viewBox="0 0 24 24" 3937 fill="none" 3938 stroke="currentColor" 3939 stroke-width="2" 3940 stroke-linecap="round" 3941 stroke-linejoin="round" 3942 class="feather feather-shopping-cart" 3943 > 3944 <circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path> 3945 </svg> 3946 3947</span> 3948 3949 <span 3950 class="type__nav type--smaller color__bg-primary color__primary ml-1 px-2 py-0.5 border__button--radius" 3951 x-show="cart.item_count > 0" 3952 x-cloak> 3953 <span class="type__nav" x-text="cart.item_count">0</span> 3954 </span> 3955 3956 </a> 3957</div></div></div> 3958 3959 3960 3961 </div> 3962</div></nav></div> 3963<!-- END sections: header-group --> 3964 </header> 3965 <div id="shopify-section-theme__cart" class="shopify-section"><!-- sections/theme__cart.liquid --> 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975<section 3976 class="fixed inset-0 z-50 overflow-hidden" 3977 x-show="cart_drawer" 3978 x-cloak 3979> 3980 <div class="absolute inset-0 overflow-hidden"> 3981 <div 3982 class="backdrop-blur-md absolute inset-0 bg-black bg-opacity-50" 3983 aria-hidden="true" 3984 x-show="cart_drawer" 3985 3986 x-transition:enter="animation-300" 3987 x-transition:enter-start="opacity-0" 3988 x-transition:enter-end="opacity-100" 3989 x-transition:leave="animation-300" 3990 x-transition:leave-start="opacity-100" 3991 x-transition:leave-end="opacity-0" 3992 3993 @click="cart_drawer = false;" 3994 x-cloak 3995 ></div> 3996 <div 3997 class="fixed inset-y-0 right-0 z-10 flex max-w-full" 3998 x-trap="cart_drawer" 3999 x-show="cart_drawer" 4000 4001 x-transition:enter="animation-300 opacity-0" 4002 x-transition:enter-start="translate-x-8 opacity-0" 4003 x-transition:enter-end="translate-x-0 opacity-100" 4004 x-transition:leave="animation-300 opacity-100" 4005 x-transition:leave-start="translate-x-0 opacity-100" 4006 x-transition:leave-end="translate-x-8 opacity-0" 4007 4008 x-cloak 4009 > 4010 <div class="lg:flex right-full absolute hidden min-w-[256px] self-start gap-4 m-4 flex-wrap"> 4011 4012 4013 4014 </div> 4015 <div class="md:max-w-xl w-screen max-w-full"> 4016 <div class="color__bg-body flex flex-col h-full shadow-xl" action="/cart" method="post"><section 4017 class=" 4018 border--b-width flex flex-col px-4 py-2 sticky top-0 shadow bg-white z-[51] 4019 color__border-divider-1 4020 " 4021 > 4022 <div class="flex flex-wrap items-center justify-between"> 4023 <div class="text-black text-[28px] font-bold text-left flex flex-row"> 4024 Cart 4025 <span class="ml-3" x-show="cart.item_count > 0" x-cloak> 4026 <div class="flex items-center justify-center w-7 h-7 rounded-full border color__border-scg-red"> 4027 <div 4028 class="color__text-scg-red text-base font-semibold tracking-widest" 4029 x-text="cart.item_count" 4030 ></div> 4031 </div> 4032 </span> 4033 </div> 4034 4035 <div> 4036 <button 4037 class="h-14 w-14 flex items-center justify-center opacity-80 bg-white rounded-full shadow hover:bg-gray-100" 4038 title="Close" 4039 @click="cart_drawer = false;" 4040 > 4041 <!-- snippets/component__icon.liquid --> 4042 4043 4044<span class="inline-flex align-middle " aria-hidden="true"> 4045 4046 <svg 4047 xmlns="http://www.w3.org/2000/svg" 4048 width="24" 4049 height="24"
4050 viewBox="0 0 24 24" 4051 fill="none" 4052 stroke="currentColor" 4053 stroke-width="2" 4054 stroke-linecap="round" 4055 stroke-linejoin="round" 4056 class="feather feather-x" 4057 > 4058 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 4059 </svg> 4060 4061</span> 4062 4063 </button> 4064 </div> 4065 </div> 4066 <div 4067 class="px-4 py-2" 4068 > 4069 <p 4070 class="type--small text-center mb-2" 4071 x-show="cart.shipping_gap > 0" 4072 x-cloak 4073 > 4074 You're 4075 <span 4076 x-text="Shopify.formatMoney(cart.shipping_gap, currency_symbol, true, 'amount', '100')" 4077 > 4078 </span> 4079 away from free shipping 4080 </p> 4081 <p 4082 class="type--small text-center mb-2" 4083 x-show="cart.shipping_gap <= 0" 4084 x-cloak 4085 > 4086 <!-- snippets/component__icon.liquid --> 4087 4088 4089<span class="inline-flex align-middle pr-1" aria-hidden="true"> 4090 4091 <svg 4092 width="24" 4093 height="14"
4094 viewBox="0 0 25 14" 4095 fill="none" 4096 xmlns="http://www.w3.org/2000/svg" 4097 > 4098 <g> 4099 <path id="Fill 1" fill-rule="evenodd" clip-rule="evenodd" d="M23.5237 11.6162H22.7326C22.504 10.8608 21.7915 10.3288 20.9737 10.3288C20.1564 10.3288 19.4439 10.8608 19.2147 11.6162H18.4243V4.23642H20.801C21.3629 4.23642 21.8207 4.68501 21.8207 5.23567V7.26159H19.6606C19.3719 7.26159 19.1368 7.49142 19.1368 7.77492C19.1368 8.05726 19.3719 8.28767 19.6606 8.28767H22.0993C22.8844 8.28767 23.5237 8.91417 23.5237 9.68359V11.6162ZM20.9737 12.9036C20.5385 12.9036 20.1844 12.5559 20.1844 12.1295C20.1844 11.7025 20.5385 11.356 20.9737 11.356C21.4094 11.356 21.7635 11.7025 21.7635 12.1295C21.7635 12.5559 21.4094 12.9036 20.9737 12.9036ZM9.88676 12.9036C9.45104 12.9036 9.09747 12.5559 9.09747 12.1295C9.09747 11.7025 9.45104 11.356 9.88676 11.356C10.3225 11.356 10.6766 11.7025 10.6766 12.1295C10.6766 12.5559 10.3225 12.9036 9.88676 12.9036ZM22.8677 7.38351V5.23567C22.8677 4.11859 21.9403 3.20976 20.801 3.20976H18.4243V1.09576C18.4243 0.812841 18.1891 0.583008 17.9004 0.583008H5.32009C5.03199 0.583008 4.79688 0.812841 4.79688 1.09576C4.79688 1.37926 5.03199 1.60967 5.32009 1.60967H17.3766V11.6162H11.6457C11.4171 10.8608 10.704 10.3288 9.88676 10.3288C9.06949 10.3288 8.35699 10.8608 8.12783 11.6162H5.32009C5.03199 11.6162 4.79688 11.8466 4.79688 12.1295C4.79688 12.413 5.03199 12.6428 5.32009 12.6428H8.12783C8.35699 13.3983 9.06949 13.9297 9.88676 13.9297C10.704 13.9297 11.4171 13.3983 11.6457 12.6428H19.2147C19.4439 13.3983 20.1564 13.9297 20.9737 13.9297C21.7915 13.9297 22.504 13.3983 22.7326 12.6428H24.0475C24.3362 12.6428 24.5713 12.413 24.5713 12.1295V9.68359C24.5713 8.63009 23.8796 7.70726 22.8677 7.38351Z" fill="#282828"/> 4100 <path id="Fill 4" fill-rule="evenodd" clip-rule="evenodd" d="M3.50233 4.45049H9.77137C10.0607 4.45049 10.2952 4.22008 10.2952 3.93716C10.2952 3.65424 10.0607 3.42383 9.77137 3.42383H3.50233C3.21363 3.42383 2.97852 3.65424 2.97852 3.93716C2.97852 4.22008 3.21363 4.45049 3.50233 4.45049Z" fill="#282828"/> 4101 <path id="Fill 6" fill-rule="evenodd" clip-rule="evenodd" d="M1.85779 7.12628H6.63756C6.92684 7.12628 7.16137 6.89586 7.16137 6.61294C7.16137 6.33003 6.92684 6.09961 6.63756 6.09961H1.85779C1.5691 6.09961 1.33398 6.33003 1.33398 6.61294C1.33398 6.89586 1.5691 7.12628 1.85779 7.12628Z" fill="#282828"/> 4102 <path id="Fill 8" fill-rule="evenodd" clip-rule="evenodd" d="M3.97202 9.05762H0.523809C0.234524 9.05762 0 9.28803 0 9.57095C0 9.85387 0.234524 10.0843 0.523809 10.0843H3.97202C4.26071 10.0843 4.49583 9.85387 4.49583 9.57095C4.49583 9.28803 4.26071 9.05762 3.97202 9.05762Z" fill="#282828"/> 4103 </g> 4104 </svg> 4105 4106</span> 4107 4108 <span class="text-zinc-800 text-sm font-normal">You've got </span 4109 ><span class="color__text-scg-green text-sm font-bold">FREE </span 4110 ><span class="text-zinc-800 text-sm font-normal">
4110delivery on this order.</span> 4111 4112 </p> 4113 <div class="color__bg-overlay-2 rounded-lg h-2 overflow-hidden"> 4114 <div 4115 class="color__bg-scg-green animation-500--all h-2" 4116 :style="{ width: cart.shipping_progress }" 4117 ></div> 4118 </div> 4119 </div> 4120 4121 </section><section 4122 class="pt-5 flex flex-col flex-grow overflow-x-hidden overflow-y-auto bg-gray-50" 4123 x-data=" 4124 { 4125 scroll: false, 4126 animate_index: 0, 4127 animate_delay: 0 4128 } 4129 " 4130 @scroll.throttle="scroll = true" 4131 ><template x-if="cart.items.length == 0"> 4132 <div 4133 class=" 4134 flex flex-col items-center justify-center flex-grow bg-white shadow 4135 color__bg-body color__text 4136 color__border-divider-1 4137 " 4138 > 4139 <p>Your cart is empty</p> 4140 <a class="btn" href="/collections/all"> 4141 Shop all 4142 </a> 4143 </div> 4144 </template> 4145 4146 <template x-for="(item, index) in cart.items"> 4147 <div class="mx-5 mb-5"> 4148 <div 4149 class=" 4150 drawer-cart-item border--b-width flex w-full p-4 gap-2 bg-white shadow 4151 color__bg-body color__text 4152 color__border-divider-1 4153 " 4154 > 4155 <a 4156 class="drawer-cart-item__image w-[30%] h-full flex-none relative lg:mr-2" 4157 :href="item.url" 4158 > 4159 <div 4160 class=" 4161 border--radius object-cover max-w-full overflow-hidden 4162 aspect-[1/1] aspect-w-1 aspect-h-1 4163 color__bg-body after:color__bg-body color__text after:color__text 4164 " 4165 > 4166 4167 <picture> 4168 <source :srcset="item.featured_image + '&width=200'" media="(min-width: 768px)"> 4169 <img 4170 class=" w-full h-full object-cover animation-1000 color__bg-body after:color__bg-body color__text after:color__text" 4171 loading="lazy" 4172 4173 :class=" 4174 { 4175 'opacity-0' : cart_loading } 4176 " 4177 4178 :src="item.image + '&width=200'" 4179 :alt="item.product_title" 4180 width="200" 4181 height="200" 4182 > 4183 </picture> 4184 </div> 4185 </a> 4186 4187 <div 4188 class="animation-500 flex flex-col justify-between flex-grow" 4189 4190 :class=" 4191 { 4192 'opacity-50' : cart_loading } 4193 " 4194 4195 > 4196 <div class="flex items-start justify-between gap-2"> 4197 <a 4198 class="drawer-cart-item__info hover:no-underline no-underline gap-2 flex flex-col justify-between flex-grow" 4199 :href="item.url" 4200 tabindex="-1" 4201 > 4202 <p 4203 class="drawer-cart-item__title mb-0 text-neutral-800 text-base font-bold" 4204 x-text="item.product_title" 4205 ></p> 4206 4207 4208 <template x-if="item.properties"> 4209 <template x-for="property in Object.entries(item.properties)"> 4210 <p 4211 x-show="!/_|Extend/.test(property[0])" 4212 class="type--smaller mb-0 opacity-75" 4213 x-text="property[0] + ' : ' + property[1]" 4214 ></p> 4215 </template> 4216 </template> 4217 4218 <p 4219 class="text-zinc-600 text-base font-normal leading-snug mb-0" 4220 x-show="item.variant_title" 4221 > 4222 Color:
4223 <span 4224 class="text-zinc-600 text-base font-bold leading-snug" 4225 x-text="item.variant_title" 4226 ></span> 4227 </p> 4228 4229 4230 4231 4232 <p 4233 class="type--smaller mb-0 opacity-75" 4234 x-text="item.selling_plan_allocation ? item.selling_plan_allocation.selling_plan.name : ''" 4235 x-show="item.selling_plan_allocation" 4236 x-cloak 4237 ></p> 4238 4239 4240 <template x-for="(discount) in item.discounts"> 4241 <div class="mt-2"> 4242 4243 <!-- snippets/component__badge.liquid --> 4244 4245 4246<div 4247 id="pdp-badge" 4248 class=" 4249 color__bg-overlay-2 color__overlay-2 border__button--radius inline-flex items-center px-2 py-1 4250 4251 " 4252> 4253 4254 4255 4256 <!-- snippets/component__icon.liquid --> 4257 4258 4259<span class="inline-flex align-middle mr-1 " aria-hidden="true"> 4260 4261 <svg 4262 xmlns="http://www.w3.org/2000/svg" 4263 width="16" 4264 height="16"
4265 viewBox="0 0 24 24" 4266 fill="none" 4267 stroke="currentColor" 4268 stroke-width="2" 4269 stroke-linecap="round" 4270 stroke-linejoin="round" 4271 class="feather feather-tag" 4272 > 4273 <path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line> 4274 </svg> 4275 4276</span> 4277 4278 4279 <span class="type--small !font-bold type__nav flex items-center gap-1 "> 4280 <span class="type--smaller type__nav mr-1" x-text="discount.title"></span> 4281 <span class="type--smaller type__nav mr-1">·</span> 4282 <span class="type--smaller type__nav" x-text="Shopify.formatMoney(discount.amount, currency_symbol, true, 'amount', '100')"></span> 4283 </span> 4284</div> 4285 4286 </div> 4287 </template> 4288 4289 4290 <div class="flex flex-row"> 4291 <span 4292 class="drawer-cart-item__price !leading-tight font-bold" 4293 x-text="Shopify.formatMoney(item.line_price, currency_symbol,true, 'amount', '100')" 4294 ></span> 4295 <span 4296 class="!leading-tight pl-2" 4297 x-show="item.total_discount > 0" 4298 x-cloak 4299 > 4300 <s 4301 class="!leading-tight" 4302 x-text="Shopify.formatMoney(item.original_line_price, currency_symbol, true, 'amount', '100')" 4303 > 4304 </s> 4305 </span> 4306 <span class="type--small" x-show="item.unit_price_measurement"> 4307 <span 4308 x-text="Shopify.formatMoney(item.unit_price, currency_symbol, true, 'amount', '100')" 4309 ></span> 4310 <span>/</span> 4311 <span 4312 x-text=" 4313 if(item.unit_price_measurement){ 4314 return item.unit_price_measurement.reference_value; 4315 } 4316 " 4317 ></span> 4318 <span 4319 x-text=" 4320 if(item.unit_price_measurement){ 4321 return item.unit_price_measurement.reference_unit; 4322 } 4323 " 4324 ></span> 4325 </span> 4326 </div> 4327 </a> 4328 4329 <div x-data="{ button_loading: false }"> 4330 <button 4331 class="h-9 w-9 flex items-center justify-center bg-white rounded-full shadow hover:bg-gray-100" 4332 :class="{ 'btn--loading' : cart_loading && button_loading }" 4333 :disabled="button_loading" 4334 @click="changeCartItemQuantity(item.key, 0, false); button_loading = true; setTimeout(function(){ button_loading = false}, 500);" 4335 > 4336 <!-- snippets/component__icon.liquid --> 4337 4338 4339<span class="inline-flex align-middle " aria-hidden="true"> 4340 4341 <svg 4342 xmlns="http://www.w3.org/2000/svg" 4343 width="14" 4344 height="14"
4345 viewBox="0 0 24 24" 4346 fill="none" 4347 stroke="currentColor" 4348 stroke-width="2" 4349 stroke-linecap="round" 4350 stroke-linejoin="round" 4351 class="feather feather-x" 4352 > 4353 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 4354 </svg> 4355 4356</span> 4357 4358 4359 <div class="btn__spinner"> 4360 <!-- snippets/component__icon.liquid --> 4361 4362 4363<span class="inline-flex align-middle " aria-hidden="true"> 4364 4365 <svg 4366 xmlns="http://www.w3.org/2000/svg" 4367 width="16" 4368 height="16" 4369 viewBox="0 0 24 24" 4370 fill="none" 4371 stroke="currentColor" 4372 stroke-width="2" 4373 stroke-linecap="round" 4374 stroke-linejoin="round" 4375 class="feather feather-loader" 4376 > 4377 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 4378 </svg> 4379 4380</span> 4381 4382 </div> 4383 </button> 4384 </div> 4385 4386 4387 </div> 4388 <div class="mt-2 flex items-center justify-between gap-2"> 4389 <div 4390 class="color__text border-neutral-200 border--width hover:color__border-selected-1 color__bg-overlay-1 border__input--radius animation-500 relative flex max-h-[38px] max-w-[150px] overflow-hidden" 4391 x-data=" 4392 { 4393 button_loading: false 4394 } 4395 " 4396 > 4397 <button 4398 class="btn btn--smaller btn--plain shrink-0 !rounded-none !min-h-[35px] !min-w-[30px]" 4399 :disabled="button_loading" 4400 title="Decrease quantity" 4401 type="button" 4402 @click=" 4403 if(changeCartItemQuantity(item.key, item.quantity-1, false, false)) { 4404 button_loading = true; 4405 item.quantity--; 4406 setTimeout(function(){ button_loading = false}, 500); 4407 } 4408 " 4409 > 4410 <!-- snippets/component__icon.liquid --> 4411 4412 4413<span class="inline-flex align-middle " aria-hidden="true"> 4414 4415 <svg 4416 xmlns="http://www.w3.org/2000/svg" 4417 width="14" 4418 height="14"
4419 viewBox="0 0 24 24" 4420 fill="none" 4421 stroke="currentColor" 4422 stroke-width="2" 4423 stroke-linecap="round" 4424 stroke-linejoin="round" 4425 class="feather feather-minus" 4426 > 4427 <line x1="5" y1="12" x2="19" y2="12"></line> 4428 </svg> 4429 4430</span> 4431 4432 </button> 4433 <label :for="'cart-' + item.key + '-quantity'" class="sr-only">Quantity</label> 4434 <input 4435 :id="'cart-' + item.key + '-quantity'" 4436 placeholder="1" 4437 type="text" 4438 class="drawer-cart-item__quantity !color__bg-light-gray form-input !w-12 !rounded-none !border-0 text-center !font-bold !min-h-[35px] !min-w-[30px]" 4439 @change.debounce=" 4440 changeCartItemQuantity(item.key, item.quantity, false); 4441 button_loading = true; 4442 setTimeout(function(){ button_loading = false}, 500); 4443 " 4444 x-model="item.quantity" 4445 > 4446 <div 4447 class="btn__spinner btn--smaller !w-auto" 4448 :class="{ '!visible color__bg-overlay-1 z-10' : button_loading }" 4449 > 4450 <!-- snippets/component__icon.liquid --> 4451 4452 4453<span class="inline-flex align-middle " aria-hidden="true"> 4454 4455 <svg 4456 xmlns="http://www.w3.org/2000/svg" 4457 width="16" 4458 height="16"
4459 viewBox="0 0 24 24" 4460 fill="none" 4461 stroke="currentColor" 4462 stroke-width="2" 4463 stroke-linecap="round" 4464 stroke-linejoin="round" 4465 class="feather feather-loader" 4466 > 4467 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 4468 </svg> 4469 4470</span> 4471 4472 </div> 4473 <button 4474 class="btn btn--smaller btn--plain shrink-0 !rounded-none !min-h-[35px] !min-w-[30px]" 4475 :disabled="button_loading" 4476 title="Increase quantity" 4477 type="button" 4478 @click=" 4479 if(changeCartItemQuantity(item.key, item.quantity+1, false, false)) { 4480 button_loading = true; 4481 item.quantity++; 4482 setTimeout(function(){ button_loading = false}, 500); 4483 } 4484 " 4485 > 4486 <!-- snippets/component__icon.liquid --> 4487 4488 4489<span class="inline-flex align-middle " aria-hidden="true"> 4490 4491 <svg 4492 xmlns="http://www.w3.org/2000/svg" 4493 width="14" 4494 height="14"
4495 viewBox="0 0 24 24" 4496 fill="none" 4497 stroke="currentColor" 4498 stroke-width="2" 4499 stroke-linecap="round" 4500 stroke-linejoin="round" 4501 class="feather feather-plus" 4502 > 4503 <line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line> 4504 </svg> 4505 4506</span> 4507 4508 </button> 4509 </div> 4510 <div class="flex"> 4511 <div 4512 :class="item.product_has_only_default_variant ? 'hidden' : 'mr-2'" 4513 x-data="{ button_loading: false }" 4514 > 4515 <button 4516 class="btn btn--load btn--plain btn--small !rounded-none !min-h-[35px] !min-w-[30px] !border-neutral-200" 4517 :class="{ 'btn--loading' : cart_loading && button_loading }" 4518 :disabled="button_loading" 4519 @click="fetchAndRenderQuickAdd(item.handle, 'cart', true); setQuery(item.variant_id); setTimeout(function(){ button_loading = false}, 500);" 4520 > 4521 Edit 4522 <div class="btn__spinner"> 4523 <!-- snippets/component__icon.liquid --> 4524 4525 4526<span class="inline-flex align-middle " aria-hidden="true"> 4527 4528 <svg 4529 xmlns="http://www.w3.org/2000/svg" 4530 width="20" 4531 height="20"
4532 viewBox="0 0 24 24" 4533 fill="none" 4534 stroke="currentColor" 4535 stroke-width="2" 4536 stroke-linecap="round" 4537 stroke-linejoin="round" 4538 class="feather feather-loader" 4539 > 4540 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 4541 </svg> 4542 4543</span> 4544 4545 </div> 4546 </button> 4547 </div> 4548 4549 <div :id="'js:quickAdd-cart-' + item.handle"></div> 4550 </div> 4551 </div> 4552 </div> 4553 </div> 4554 </div> 4555 </template> 4556 4557 4558 ���<div 4559 class="bottom-4 sticky text-center" 4560 @click="scroll = true;" 4561 x-show="!scroll && cart.items.length > 5" 4562 4563 x-transition:enter="animation-300" 4564 x-transition:enter-start="opacity-0 translate-y-8" 4565 x-transition:enter-end="opacity-100" 4566 x-transition:leave="animation-300" 4567 x-transition:leave-start="opacity-100" 4568 x-transition:leave-end="opacity-0 translate-y-8" 4569 4570 x-cloak 4571 > 4572 <button class="btn btn--plain btn--small shadow-sm" title="Scroll down"> 4573 <!-- snippets/component__icon.liquid --> 4574 4575 4576<span class="inline-flex align-middle " aria-hidden="true"> 4577 4578 <svg 4579 xmlns="http://www.w3.org/2000/svg" 4580 width="20" 4581 height="20"
4582 viewBox="0 0 24 24" 4583 fill="none" 4584 stroke="currentColor" 4585 stroke-width="2" 4586 stroke-linecap="round" 4587 stroke-linejoin="round" 4588 class="feather feather-arrow-down" 4589 > 4590 <line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline> 4591 </svg> 4592 4593</span> 4594 4595 </button> 4596 </div> 4597 </section><aside 4598 class=" 4599 border--t-width mt-auto 4600 color__bg-body color__text 4601 color__border-divider-1 4602 " 4603 x-show="cart.items.length > 0" 4604 x-cloak 4605 > 4606 <div 4607 class="flex flex-wrap" 4608 x-data=" 4609 { 4610 index: 0, 4611 index_scroll: 0, 4612 index_size: 4, 4613 show_arrows: false, 4614 scrollToIndex(index_scroll) { 4615 let slider = this.$refs.slider; 4616 let currentSlide = slider.querySelector('[data-slide="'+ index_scroll + '"]'); 4617 currentSlide.scrollIntoView({behavior: 'smooth', inline: 'start', block: 'nearest'}); 4618 }, 4619 scrollNext() { 4620 this.index ++; 4621 let slider = this.$refs.slider; 4622 if(this.index > this.index_size){ 4623 slider.scrollLeft = 0; 4624 } else { 4625 slider.scrollLeft += slider.offsetWidth-300; 4626 } 4627 }, 4628 scrollBack() { 4629 this.index --; 4630 let slider = this.$refs.slider; 4631 if(this.index < 0){ 4632 slider.scrollLeft = 999999; 4633 } else { 4634 slider.scrollLeft -= slider.offsetWidth-300; 4635 } 4636 } 4637 } 4638 " 4639 ><div 4640 class="w-full p-4 pb-0" 4641 4642 x-cloak 4643 > 4644 <div 4645 class="flex items-center justify-between w-full mb-1" 4646 x-show="cart.total_discount > 0" 4647 > 4648 <span class="">Subtotal</span> 4649 <span 4650 class="" 4651 x-text="Shopify.formatMoney(cart.original_total_price, currency_symbol, true, 'amount', '100')" 4652 ></span> 4653 </div> 4654 <div 4655 class="flex items-center justify-between w-full mb-1" 4656 x-show="cart.total_discount > 0" 4657 > 4658 <span>Discount</span> 4659 <span 4660 x-text="'-' + Shopify.formatMoney(cart.total_discount, currency_symbol, true, 'amount', '100')" 4661 ></span> 4662 </div> 4663 <div class="flex items-center justify-between w-full"> 4664 <span class="flex items-center w-full"> 4665 <div class="text-neutral-800 text-base font-normal">Total</div> 4666 4667 4668 </span> 4669 <strong 4670 id="drawer-cart_total-price" 4671 x-text="Shopify.formatMoney(cart.total_price, currency_symbol, true, 'amount', '100')" 4672 ></strong> 4673 </div> 4674 </div><form 4675 id="drawer-cart_form" 4676 class="w-full px-4 py-4" 4677 action="/cart" 4678 method="post" 4679 x-data="{checkout_button_loading:false}" 4680 @submit.prevent="checkout_button_loading = true; if(enable_audio) { playSound(click_audio) } ;setTimeout(function(){ checkout_button_loading = false}, 5000); window.location.href = '/checkout';" 4681 > 4682 <p class="mb-0"> 4683 4684 <button 4685 type="submit" 4686 name="checkout" 4687 class="!w-full flex flex-row !items-center !justify-between btn btn--load !bg-zinc-800 shadow !border-none" 4688 :class="{ 'btn--loading' : checkout_button_loading }" 4689 :disabled="checkout_button_loading" 4690 > 4691 <div class="btn__spinner"> 4692 <!-- snippets/component__icon.liquid --> 4693 4694 4695<span class="inline-flex align-middle " aria-hidden="true"> 4696 4697 <svg 4698 xmlns="http://www.w3.org/2000/svg" 4699 width="24" 4700 height="24"
4701 viewBox="0 0 24 24" 4702 fill="none" 4703 stroke="currentColor" 4704 stroke-width="2" 4705 stroke-linecap="round" 4706 stroke-linejoin="round" 4707 class="feather feather-loader" 4708 > 4709 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 4710 </svg> 4711 4712</span> 4713 4714 </div> 4715 <div class="btn__content"> 4716 Checkout 4717 4718 </div> 4719 <!-- snippets/component__icon.liquid --> 4720 4721 4722<span class="inline-flex align-middle " aria-hidden="true"> 4723 4724 <svg 4725 xmlns="http://www.w3.org/2000/svg" 4726 width="16" 4727 height="16"
4728 viewBox="0 0 24 24" 4729 fill="none" 4730 stroke="currentColor" 4731 stroke-width="2" 4732 stroke-linecap="round" 4733 stroke-linejoin="round" 4734 class="feather feather-arrow-right inline-block" 4735 > 4736 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 4737 </svg> 4738 4739</span> 4740 4741 </button> 4742 4743 4744 </p> 4745 <div class="type--smaller m-0--clear font-bold mt-2 text-center"> 4746 Shipping, Taxes, and Discounts Applied at Checkout 4747 </div></form> 4748 </div> 4749 </aside> 4750 </div> 4751 </div> 4752 </div> 4753 </div> 4754</section> 4755 4756<!-- snippets/component__alert.liquid --> 4757 4758 4759<div class="md:left-auto md:right-5 md:top-5 color__bg-body color__text border--radius md:w-96 border--width color__border-divider-1 fixed top-0 left-0 right-0 z-50 w-auto overflow-hidden shadow-md" 4760 @click.outside="cart_alert = false" 4761 @keyup.escape.window="cart_alert = false" 4762 x-show="cart_alert" 4763 4764 x-transition:enter="animation-300" 4765 x-transition:enter-start="opacity-0" 4766 x-transition:enter-end="opacity-100" 4767 x-transition:leave="animation-300" 4768 x-transition:leave-start="opacity-100" 4769 x-transition:leave-end="opacity-0" 4770 4771 x-cloak> 4772 4773 <div class="relative p-4 overflow-hidden"> 4774 4775 <div class="color__bg-overlay-1 absolute top-0 left-0 w-full h-1 overflow-hidden"> 4776 <div class="color__bg-secondary animation-5000--all w-0 h-1" 4777 :style="{ width: cart_delay_width }"></div> 4778 </div> 4779 4780 4781 <div class="flex flex-wrap items-center justify-between mb-4"> 4782 4783 <p class="flex items-center mb-0"> 4784 <!-- snippets/component__icon.liquid --> 4785 4786 4787<span class="inline-flex align-middle mr-1" aria-hidden="true"> 4788 4789 <svg 4790 xmlns="http://www.w3.org/2000/svg" 4791 width="24" 4792 height="24"
4793 viewBox="0 0 24 24" 4794 fill="none" 4795 stroke="currentColor" 4796 stroke-width="2" 4797 stroke-linecap="round" 4798 stroke-linejoin="round" 4799 class="feather feather-check" 4800 > 4801 <polyline points="20 6 9 17 4 12"></polyline> 4802 </svg> 4803 4804</span> 4805 Cart updated (<span x-text="cart.item_count"></span>) 4806 </p> 4807 <div class="flex"> 4808 <button class="btn btn--smaller btn--plain" 4809 title="Close" 4810 @click="cart_alert = false"> 4811 <!-- snippets/component__icon.liquid --> 4812 4813 4814<span class="inline-flex align-middle " aria-hidden="true"> 4815 4816 <svg 4817 xmlns="http://www.w3.org/2000/svg" 4818 width="24" 4819 height="24" 4820 viewBox="0 0 24 24" 4821 fill="none" 4822 stroke="currentColor" 4823 stroke-width="2" 4824 stroke-linecap="round" 4825 stroke-linejoin="round" 4826 class="feather feather-x" 4827 > 4828 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 4829 </svg> 4830 4831</span> 4832 4833 </button> 4834 </div> 4835 </div> 4836 4837 4838 4839 4840 4841 <a class="btn btn--small btn--plain !w-full mb-2" 4842 href="/cart"> 4843 View Cart 4844 </a> 4845 4846 <button class="btn btn--small btn--primary !w-full mb-2" @click="checkout_button_loading = true; setTimeout(function(){ checkout_button_loading = false}, 5000); window.location.href = '/checkout';"> 4847 Checkout · 4848 4849 <span class="type__nav ml-1" x-text="Shopify.formatMoney(cart.total_price, currency_symbol, true, 'amount', '100')"></span> 4850 4851 </button> 4852 4853 </div> 4854</div> 4855
4856<script> 4857 window.__initialData = window.__initialData || {}; 4858 Object.assign(window.__initialData, { 4859 progress_bar_threshold: 4900, 4860 }); 4861</script>
4861 4862 4863 4864</div> 4865 <div id="shopify-section-theme__cart-modal" class="shopify-section"><!-- sections/cart-modal.liquid --> 4866 4867 4868<section 4869 class="fixed inset-0 z-[105] overflow-hidden custom-section-cart-popup-modal-container" 4870 x-show="cart_modal " 4871 x-init=" 4872 $watch('cart_modal', value => { 4873 if (value && cart?.recently_added) { 4874 console.log('ð§© Recently added product object:', JSON.parse(JSON.stringify(cart.recently_added))); 4875 } 4876 }); 4877 " 4878 x-cloak> 4879 <div class="flex items-end justify-center min-h-screen px-4 pt-4 text-center sm:block sm:p-0"> 4880 <div 4881 class="fixed inset-0 transition-opacity bg-black bg-opacity-50 -z-10" 4882 @click="theme_scroll = true;" 4883 aria-hidden="true" 4884 x-show="cart_modal" 4885 4886 x-transition:enter="animation-300" 4887 x-transition:enter-start="opacity-0" 4888 x-transition:enter-end="opacity-100" 4889 x-transition:leave="animation-300" 4890 x-transition:leave-start="opacity-100" 4891 x-transition:leave-end="opacity-0" 4892 4893 x-cloak></div> 4894 <div 4895 class="absolute bottom-auto inline-block m-auto text-left align-middle transition-all transform -translate-y-1/2 left-2 right-2 top-1/2 md:left-5 md:right-5 md:max-w-3xl lg:max-w-5xl" 4896 x-show="cart_modal" 4897 x-trap="cart_modal" 4898 4899 x-transition:enter="animation-300" 4900 x-transition:enter-start="opacity-0 translate-y-8" 4901 x-transition:enter-end="opacity-100" 4902 x-transition:leave="animation-300" 4903 x-transition:leave-start="opacity-100" 4904 x-transition:leave-end="opacity-0 translate-y-8" 4905 4906 x-cloak> 4907 <div 4908 class="color__bg-body color__text max-h-[90vh] overflow-y-auto rounded shadow-lg" 4909 x-data="{ button_loading: false, edit: window.location.search.includes('edit') }" 4910 @click.outside="cart_modal = false; hide_header = false; reduce_product_zindex = false; setQuery('');"> 4911 <div 4912 class="flex flex-col h-full shadow-xl color__bg-body" 4913 action="/cart" 4914 method="post"><section class="flex flex-wrap items-center justify-between px-4 py-2 bg-white "> 4915 <div class=""> 4916 <!-- snippets/component__icon.liquid --> 4917 4918 4919<span class="inline-flex align-middle text-scg-green" aria-hidden="true"> 4920 4921 <svg 4922 xmlns="http://www.w3.org/2000/svg" 4923 width="22" 4924 height="22"
4925 viewBox="0 0 24 24" 4926 fill="none" 4927 stroke="currentColor" 4928 stroke-width="2" 4929 stroke-linecap="round" 4930 stroke-linejoin="round" 4931 class="feather feather-check" 4932 > 4933 <polyline points="20 6 9 17 4 12"></polyline> 4934 </svg> 4935 4936</span> 4937 4938 <span class="ml-4 text-base font-bold"> 4939 Added to Cart 4940 </span> 4941 </div> 4942 <div> 4943 <button 4944 class="bg-white text-ll-dark-gray" 4945 title="Close" 4946 @click="cart_modal = false;"> 4947 <!-- snippets/component__icon.liquid --> 4948 4949 4950<span class="inline-flex align-middle " aria-hidden="true"> 4951 4952 <svg 4953 xmlns="http://www.w3.org/2000/svg" 4954 width="26" 4955 height="26" 4956 viewBox="0 0 24 24" 4957 fill="none" 4958 stroke="currentColor" 4959 stroke-width="2" 4960 stroke-linecap="round" 4961 stroke-linejoin="round" 4962 class="feather feather-x" 4963 > 4964 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 4965 </svg> 4966 4967</span> 4968 4969 </button> 4970 </div> 4971 </section> 4972 4973 4974 <div x-data="countdownTimer()" class="countdown-timer-container mx-2 inline-flex items-start justify-center gap-2 bg-[#439529]/10 py-4"> 4975 <div class="text-center"> 4976 <span class="text-base font-normal">Your cart is reserved for 4977 </span> 4978 <span class="text-base font-bold text-[#b83f3f]" x-text="countdownTimerText">10:00</span> 4979 <span class="text-base font-bold text-[#b83f3f]"> 4980 min</span> 4981 </div> 4982 </div><section 4983 class=" flex flex-grow flex-col overflow-y-auto overflow-x-hidden" 4984 x-data=" 4985 { 4986 scroll: false, 4987 animate_index: 0, 4988 animate_delay: 0 4989 } 4990 " 4991 @scroll.throttle="scroll = true"> 4992 4993 4994 <div> 4995 <template x-if="cart.recently_added"> 4996 <div> 4997 <div class=" 4998 border--b-width flex w-full flex-col items-center 4999 justify-between gap-2 px-4 py-2 pb-4 md:flex-row 5000 5001 5002 "> 5003 <a class="flex-none w-full h-full no-underline hover:no-underline md:w-2/3 section-popup-modal-cart-checkout-container-left" :href="cart.recently_added.url"> 5004 <div class="flex flex-row items-center w-full gap-2 md:gap-4"> 5005 <div class="w-1/3 md:w-1/4 section-popup-modal-cart-upsell-card-image-container"> 5006 <div class=" 5007 border--radius max-w-full overflow-hidden object-cover 5008 aspect-[1/1] aspect-w-1 aspect-h-1 5009 color__bg-body after:color__bg-body color__text after:color__text 5010 "> 5011 5012 <picture> 5013 <source :srcset="cart.recently_added.featured_image ? cart.recently_added.featured_image + '&width=300' : ''" media="(min-width: 768px)"> 5014 <img 5015 class=" w-full h-full object-cover animation-1000 color__bg-body after:color__bg-body color__text after:color__text" 5016 loading="lazy" 5017 :src="cart.recently_added.image ? cart.recently_added.image + '&width=300' : ''" 5018 :alt="cart.recently_added.product_title" 5019 width="200" 5020 height="200"> 5021 </picture> 5022 </div> 5023 </div> 5024 <div class="w-2/3 md:w-2/4"> 5025 <p class="cart-item__title mb-0 !leading-tight" x-text="cart.recently_added.product_title"></p> 5026 5027 <template x-for="entry in cart.recently_added.options_with_values"> 5028 <div x-show="entry.name != 'Title' && entry.name != 'price'">
5029 <span class="text-base leading-snug text-zinc-600" x-text="entry.name + ': '"></span> 5030 <span class="text-base leading-snug text-zinc-600" x-text="entry.value"></span> 5031 </div> 5032 </template> 5033 5034 <div 5035 class="flex flex-row gap-2" 5036 x-data="{ cap: 0, price: 0, loadingCap: false }" 5037 x-init=" 5038 console.log('ð cart object:', cart); 5039 5040 $watch('cart.recently_added', (item) => { 5041 if (!item || !item.handle) return; 5042 5043 price = Number(item.final_price ?? 0); 5044 loadingCap = true; 5045 5046 fetch(`/products/${item.handle}.js`) 5047 .then(res => res.json()) 5048 .then(productData => { 5049 const variant = productData.variants.find(v => Number(v.id) === Number(item.variant_id)); 5050 if (variant) { 5051 cap = Number(variant.compare_at_price ?? 0); 5052 } else { 5053 console.warn('â ï¸ Variant not found in product.js for', item.variant_id); 5054 } 5055 }) 5056 .catch(err => console.error('â ï¸ Error fetching product.js', err)) 5057 .finally(() => loadingCap = false); 5058 }); 5059 "> 5060 5061 5062 <!-- Compare-at price --> 5063 <span 5064 class="h6 section-popup-modal-cart-addons-compare-at-price" 5065 x-show="cap > price && cap > 0" 5066 x-cloak> 5067 <s 5068 class="text-base !leading-tight" 5069 style="color:#27272A" 5070 x-text="Shopify.formatMoney(cap, currency_symbol, true, 'amount', '100')"></s> 5071 </span> 5072 <!-- Current price --> 5073 <span 5074 class="h6 section-popup-modal-cart-addons-selling-price" 5075 :style="cap > price && cap > 0 ? 'color:#D2334B' : ''" 5076 x-text="Shopify.formatMoney(price, currency_symbol, true, 'amount', '100')"></span> 5077 </div> 5078 5079 5080 <template x-for="(discount) in ((cart.recently_added && cart.recently_added.discounts) || []).filter((d) => !(cart.cart_level_discount_applications || []).some((cd) => cd.title === d.title))"> 5081 <div class="mt-2"> 5082 5083 <!-- snippets/component__badge.liquid --> 5084 5085 5086<div 5087 id="pdp-badge" 5088 class=" 5089 color__bg-overlay-2 color__overlay-2 border__button--radius inline-flex items-center px-2 py-1 5090 5091 " 5092> 5093 5094 5095 5096 <!-- snippets/component__icon.liquid --> 5097 5098 5099<span class="inline-flex align-middle mr-1 " aria-hidden="true"> 5100 5101 <svg 5102 xmlns="http://www.w3.org/2000/svg" 5103 width="16" 5104 height="16"
5105 viewBox="0 0 24 24" 5106 fill="none" 5107 stroke="currentColor" 5108 stroke-width="2" 5109 stroke-linecap="round" 5110 stroke-linejoin="round" 5111 class="feather feather-tag" 5112 > 5113 <path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line> 5114 </svg> 5115 5116</span> 5117 5118 5119 <span class="type--small !font-bold type__nav flex items-center gap-1 "> 5120 <span class="mr-1 er" x-text="discount.title"></span> 5121 <span class="mr-1 er">·</span> 5122 <span class="er" x-text="Shopify.formatMoney(discount.amount, currency_symbol, true, `amount`, '100')"></span> 5123 </span> 5124</div> 5125 5126 </div> 5127 </template> 5128 </div> 5129 </div> 5130 </a> 5131 <div 5132 class="flex flex-row justify-end flex-grow w-full animation-500 md:w-1/3 md:flex-col md:justify-between section-popup-modal-cart-checkout-container-right-side" 5133 5134 :class=" 5135 { 5136 'opacity-50' : cart_loading } 5137 " 5138 > 5139 <div class="flex items-center justify-between gap-2 my-auto md:justify-end section-popup-modal-cart-checkout-container-right"> 5140 <div class="flex flex-col items-end justify-end section-popup-modal-cart-checkout-container-right"> 5141 <div class="px-2"> 5142 <span class="mr-2 text-base font-semibold text-[#4d4e50]">Cart Subtotal (<span x-text="cart.item_count"></span> 5143 item):</span> 5144 <span class="text-base font-normal text-[#222323] " x-text="Shopify.formatMoney(cart.total_price, currency_symbol, true, 'amount', '100')"></span> 5145 </div> 5146 <div class="flex items-center justify-start section-popup-modal-cart-checkout-container-right-inner"><div 5147 class="flex items-center justify-start w-full gap-4 p-2 pb-4 section-popup-modal-cart-checkout-row" 5148 rel="nofollow" 5149 x-data="{checkout_button_loading:false}"> 5150 5151 <a class="btn btn--plain btn--load !w-full section-popup-modal-cart-checkout-button-secondary" href="/cart"> 5152 <div class="btn__content text-nowrap" style="text-wrap: nowrap;"> 5153 View Cart 5154 </div> 5155 </a> 5156 5157 5158 5159 <button 5160 class="btn btn--primary btn--load block !min-h-max !w-full border border-solid !px-2 section-popup-modal-cart-checkout-button" 5161 @click="checkout_button_loading = true; setTimeout(function(){ checkout_button_loading = false}, 5000); window.location.href = '/checkout';" 5162 :class="{ 'btn--loading' : checkout_button_loading }" 5163 :disabled="checkout_button_loading"> 5164 <div class="btn__spinner"> 5165 5166 <!-- snippets/component__icon.liquid --> 5167 5168 5169<span class="inline-flex align-middle " aria-hidden="true"> 5170 5171 <svg 5172 xmlns="http://www.w3.org/2000/svg" 5173 width="24" 5174 height="24"
5175 viewBox="0 0 24 24" 5176 fill="none" 5177 stroke="currentColor" 5178 stroke-width="2" 5179 stroke-linecap="round" 5180 stroke-linejoin="round" 5181 class="feather feather-loader" 5182 > 5183 <line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line> 5184 </svg> 5185 5186</span> 5187 5188 </div> 5189 <div class="section-popup-modal-cart-checkout-button-icon" style="margin-right: 8px;"><svg width="22" height="22" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg" style=" 5190 margin-top: 2px;"> 5191<path d="M5.01318 3.50909C5.01318 2.71137 5.33008 1.94632 5.89415 1.38225C6.45822 0.818175 7.22327 0.501282 8.02099 0.501282C8.81871 0.501282 9.58376 0.818175 10.1478 1.38225C10.7119 1.94632 11.0288 2.71137 11.0288 3.50909V4.01039H11.5301C12.1949 4.01039 12.8324 4.27447 13.3025 4.74453C13.7725 5.2146 14.0366 5.85214 14.0366 6.5169V11.5299C14.0366 12.1947 13.7725 12.8322 13.3025 13.3023C12.8324 13.7724 12.1949 14.0364 11.5301 14.0364H4.51188C3.84711 14.0364 3.20957 13.7724 2.73951 13.3023C2.26945 12.8322 2.00537 12.1947 2.00537 11.5299V6.5169C2.00537 5.85214 2.26945 5.2146 2.73951 4.74453C3.20957 4.27447 3.84711 4.01039 4.51188 4.01039H5.01318V3.50909ZM8.02099 1.50389C7.48918 1.50389 6.97915 1.71515 6.6031 2.0912C6.22705 2.46725 6.01579 2.97728 6.01579 3.50909V4.01039H10.0262V3.50909C10.0262 2.97728 9.81494 2.46725 9.43889 2.0912C9.06284 1.71515 8.55281 1.50389 8.02099 1.50389ZM8.02099 10.026C8.2869 10.026 8.54192 9.92038 8.72994 9.73236C8.91796 9.54433 9.0236 9.28932 9.0236 9.02341C9.0236 8.7575 8.91796 8.50249 8.72994 8.31446C8.54192 8.12644 8.2869 8.02081 8.02099 8.02081C7.75509 8.02081 7.50007 8.12644 7.31204 8.31446C7.12402 8.50249 7.01839 8.7575 7.01839 9.02341C7.01839 9.28932 7.12402 9.54433 7.31204 9.73236C7.50007 9.92038 7.75509 10.026 8.02099 10.026Z" fill="white"/> 5192</svg></div> 5193 <div class="btn__content"> 5194 Checkout 5195 </div> 5196 </button> 5197 </div> 5198 </div> 5199 </div> 5200 </div> 5201 </div> 5202 </div> 5203 </div> 5204 </template> 5205 </div> 5206 </section><aside 5207 class="m-4 transition-all duration-1000 ease-in-out" 5208 x-data=" 5209 { 5210 product_count: 0, 5211 show_product: false 5212 } 5213 " 5214 x-show="cart.recently_added && product_count > 0" 5215 x-transition:enter="transition-all duration-1000 ease-in-out" 5216 x-transition:enter-start="max-h-0 opacity-0" 5217 x-transition:enter-end="max-h-screen opacity-100" 5218 x-transition:leave="transition-all duration-1000 ease-in-out" 5219 x-transition:leave-start="max-h-screen opacity-100" 5220 x-transition:leave-end="max-h-0 opacity-0" 5221 x-cloak> 5222 <section x-data=" 5223 { 5224 index_slide: 0, 5225 initialLoad: true, 5226 loadingRecomendations : false, 5227 complementary_products: [], 5228 getRecomendations() { 5229 // Clear the previous recommendations 5230 this.complementary_products = []; 5231 this.product_count = 0; // Reset product count to avoid stale data 5232 5233 // Build the recommendations API URL 5234 const url = `${window.Shopify.routes.root}recommendations/products.json?product_id=${cart.recently_added.product_id}&limit=4&intent=complementary`; 5235 5236 // Fetch recommendations 5237 fetch(url) 5238 .then(response => { 5239 if (!response.ok) { 5240 throw new Error(`Error fetching recommendations: ${response.statusText}`); 5241 } 5242 return response.json(); 5243 }) 5244 .then(({ products = [] }) => { 5245 5246 // If no products, clear the UI state and return 5247 if (!products.length) return; 5248 5249 // Filter out products with the 'disable_quick_add' tag or unavailable ones 5250 // Subscription products (with selling plans) are kept and rendered via the Loop widget 5251 const filteredProducts = products.filter(product => { 5252 const tags = product.tags.map(t => t.toLowerCase()); 5253 return product.available && !tags.includes('disable_quick_add'); 5254 }); 5255 5256 if (!filteredProducts.length) { 5257 this.complementary_products = []; 5258 } else { 5259 // â Map ALL filtered products (not just the first one) 5260 this.complementary_products = filteredProducts.map(product => { 5261 const { 5262 compare_at_price, 5263 compare_at_price_max, 5264 compare_at_price_min,
5265 price, 5266 price_min, 5267 price_max, 5268 ...rest 5269 } = product; 5270 5271 return { 5272 compare_at_price, 5273 compare_at_price_max, 5274 compare_at_price_min, 5275 price, 5276 price_min, 5277 price_max, 5278 ...rest 5279 }; 5280 }); 5281 } 5282 5283 // Update UI state 5284 this.loadingRecomendations = true; 5285 this.initialLoad = false; 5286 this.product_count = this.complementary_products.length; 5287 this.show_product = true; 5288 this.$nextTick(() => { this.updateScrollState() }) 5289 }) 5290 .catch(error => { 5291 console.error('Error loading recommendations:', error); 5292 // Handle errors gracefully by resetting state 5293 this.complementary_products = []; 5294 this.product_count = 0; 5295 this.show_product = false; 5296 }); 5297 } 5298 } 5299"> 5300 5301 <div> 5302 <div class="flex flex-col items-center justify-center w-full gap-2 px-2 mb-2 md:px-4 lg:items-start section-popup-modal-cart-addons-header-container"> 5303 <div class="inline-flex items-start justify-start gap-4 section-popup-modal-cart-addons-title"> 5304 <div class="text-xl font-bold uppercase text-[#4d4e50] lg:text-3xl section-popup-modal-cart-addons-title-textv1">Recommended for Your Cart</div> 5305 <div class="text-xl font-bold uppercase text-[#4d4e50] lg:text-3xl section-popup-modal-cart-addons-title-textv2"> 5306 <span class="inline md:hidden">
5306Hand-picked to pair with your cart</span> 5307 <span class="hidden md:inline">Hand-picked to pair <br/> with your cart</span> 5308 </div> 5309 </div> 5310 <div class="hidden text-base font-normal text-[#222323] md:block section-popup-modal-cart-addons-description"> 5311 Our espresso experts hand picked this to pair perfectly with your 5312 <span class="text-base font-normal text-[#222323]" x-text="new DOMParser().parseFromString(cart.recently_added.title, 'text/html').body.textContent"></span>. 5313 </div> 5314 </div> 5315 5316 5317 5318 <div 5319 class="relative w-full overflow-hidden original-upsell-slider-in-modal abt-upsell-slider" 5320 x-data="{ 5321 canScrollLeft: false, 5322 canScrollRight: false, 5323 updateScrollState() { 5324 const el = $refs.slider; 5325 this.canScrollLeft = el.scrollLeft > 0; 5326 this.canScrollRight = el.scrollLeft + el.clientWidth < el.scrollWidth - 22; 5327 }, 5328 scrollNext() { 5329 const el = $refs.slider; 5330 el.scrollBy({ left: el.offsetWidth * 0.99, behavior: 'smooth' }); 5331 setTimeout(() => this.updateScrollState(), 300); 5332 }, 5333 scrollPrev() { 5334 const el = $refs.slider; 5335 el.scrollBy({ left: -el.offsetWidth * 0.99, behavior: 'smooth' }); 5336 setTimeout(() => this.updateScrollState(), 300); 5337 } 5338 }" 5339 x-init=" 5340 $watch('cart_modal', value => { if (value) getRecomendations(); }); 5341 $watch('cart.recently_added', value => { if (value && cart_modal) getRecomendations(); }); 5342 $nextTick(() => setTimeout(() => updateScrollState(), 250)); 5343 " 5344 @scroll.window.debounce.150ms="updateScrollState" 5345 x-show="complementary_products.length > 0" 5346 x-cloak> 5347 <!-- Left arrow --> 5348 <button 5349 type="button" 5350 class="ab-test-cart-upsell-slider-button abt-upsell-arrow abt-upsell-arrow--left" 5351 @click="scrollPrev" 5352 x-show="canScrollLeft" 5353 x-transition.opacity 5354 aria-label="Previous item"> 5355 â¹ 5356 </button> 5357 5358 <!-- Slider content --> 5359 <div 5360 class="inline-flex justify-center w-full px-2 pb-2 overflow-x-auto overflow-y-hidden scroll-smooth whitespace-nowrap md:px-4 upsell-slider-row-container-for-items" 5361 x-ref="slider" 5362 @scroll.debounce.100ms="updateScrollState"> 5363 <template x-for="(item, index) in complementary_products"> 5364 <div 5365 class="transition-all duration-700 ease-in-out abt-upsell-card" 5366 :class="'md:h-auto lg:h-auto relative md:snap-center flex justify-center flex-none whitespace-normal border border-solid rounded-[4px] upsell-slider-row-container-card overflow-hidden upsell upsell--' + item.id" 5367 x-show="item.available && show_product" 5368 x-transition:enter="transition-all duration-700 ease-in-out" 5369 x-transition:enter-start="max-h-0 opacity-0" 5370 x-transition:enter-end="max-h-screen opacity-100" 5371 x-transition:leave="transition-all duration-700 ease-in-out" 5372 x-transition:leave-start="max-h-screen opacity-100" 5373 x-transition:leave-end="max-h-0 opacity-0" 5374 x-cloak> 5375 <div 5376 class="modal-upsell" 5377 x-init=" 5378 (() => { 5379 const _handle = item.handle; 5380 const _hasSP = item.selling_plan_groups && item.selling_plan_groups.length > 0; 5381 const _targetId = 'js:modalUpsell-upsell-item-' + _handle; 5382 if (_hasSP) { 5383 fetch(window.Shopify.routes.root + 'products/' + _handle + '?section_id=modal-upsell-loop') 5384 .then(r => r.text()) 5385 .then(html => { 5386 const el = document.getElementById(_targetId); 5387 if (!el) return; 5388 el.innerHTML = html; 5389 // Re-execute injected scripts so the Loop widget initialises 5390 el.querySelectorAll('script').forEach(s => { 5391 const ns = document.createElement('script');
5392 [...s.attributes].forEach(a => ns.setAttribute(a.name, a.value)); 5393 ns.textContent = s.textContent; 5394 s.parentNode.replaceChild(ns, s); 5395 }); 5396 }); 5397 } else { 5398 fetchAndRenderUpsellItem(_handle, 'upsell-item'); 5399 } 5400 })() 5401 " 5402 :id="'js:modalUpsell-upsell-item-' + item.handle"></div> 5403 </div> 5404 </template> 5405 </div> 5406 5407 <!-- Right arrow --> 5408 <button 5409 type="button" 5410 class="ab-test-cart-upsell-slider-button abt-upsell-arrow abt-upsell-arrow--right" 5411 @click="scrollNext" 5412 x-show="canScrollRight" 5413 x-transition.opacity 5414 aria-label="Next item"> 5415 ⺠5416 </button> 5417 </div> 5418 5419 5420 5421 5422 5423 </div> 5424 </section> 5425 </aside> 5426 </div> 5427 </div> 5428 </div> 5429 </div> 5430</section> 5431<style> 5432 /* disable cart timer */ 5433 .countdown-timer-container { 5434 display: none !important; 5435 } 5436</style> 5437 5438 5439 5440 5441<style> 5442 5443 5444 /* Original states - variant 1 */ 5445 .section-popup-modal-cart-addons-title-textv1 { 5446 display: flex; 5447 } 5448 5449 .section-popup-modal-cart-addons-title-textv2 { 5450 display: none; 5451 } 5452 .new-upsell-slider-in-modal { 5453 display: none; 5454 } 5455 .section-popup-modal-cart-addons-compare-at-price { 5456 display: none; 5457 } 5458 .section-popup-modal-cart-addons-selling-price { 5459 color: #181818 !important; 5460 } 5461 .custom-section-cart-popup-modal-container .color__bg-product-outer { 5462 overflow-x: hidden !important; 5463 } 5464 /* Default: show only one */ 5465 .custom-section-cart-popup-modal-container .upsell-slider-row-container-card { 5466 display: none; 5467 } 5468 .custom-section-cart-popup-modal-container .upsell-slider-row-container-card:first-of-type { 5469 display: flex !important; 5470 } 5471 .section-popup-modal-cart-checkout-button-icon { 5472 display: none; 5473 } 5474 /* End - variant 1 */ 5475 5476 @media (max-width: 768px) { 5477 /* When variant 'c' is active, show all cards */ 5478 .custom-section-cart-popup-modal-container .upsell-slider-row-container-card { 5479 display: flex !important; 5480 } 5481 5482 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-title-textv1 { 5483 display: none !important; 5484 } 5485 5486 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-title-textv2 { 5487 display: flex; 5488 } 5489 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-description { 5490 margin: auto; 5491 display: inline !important; 5492 } 5493 5494 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-row { 5495 flex-direction: row; 5496 display: flex; 5497 gap: 1rem; 5498 } 5499 /* Primary button: larger */ 5500 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-button-primary { 5501 flex: 0 1 220px; 5502 /* base width 220px, can shrink if needed */ 5503 min-width: 180px; 5504 max-width: 240px; 5505 } 5506 5507 /* Secondary button: slightly smaller */ 5508 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-button-secondary { 5509 flex: 0 1 180px; 5510 min-width: 140px; 5511 max-width: 200px; 5512 } 5513 5514 .custom-section-cart-popup-modal-container .ab-test-cart-upsell-slider-button { 5515 border-radius: 25px; 5516 background: white; 5517 display: flex; 5518 } 5519 5520 .custom-section-cart-popup-modal-container .upsell-slider-row-container-for-items { 5521 justify-content: flex-start !important; 5522 } 5523 5524 .custom-section-cart-popup-modal-container .upsell-slider-row-container-card { 5525 border: none !important; 5526 } 5527 5528 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-compare-at-price { 5529 display: block; 5530 } 5531 5532 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-header-container { 5533 margin-bottom: 16px; 5534 } 5535 5536 .custom-section-cart-popup-modal-container .section-popup-modal-cart-upsell-card-image-container { 5537 width: 165px; 5538 margin-left: auto; 5539 } 5540 5541 .custom-section-cart-popup-modal-container .mt-2 .flex.items-center.gap-2 { 5542 margin-bottom: 16px; 5543 } 5544 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-selling-price { 5545 color: #D2334B !important; 5546 } 5547 5548 .custom-section-cart-popup-modal-container .upsell-slider-row-container-card:last-of-type { 5549 margin-right: 20px; 5550 } 5551 5552 .custom-section-cart-popup-modal-container .upsell-modal-component-item-price { 5553 justify-content: center; 5554 } 5555 5556 .custom-section-cart-popup-modal-container .upsell-modal-component-item-atc-button { 5557 align-items: center; 5558 } 5559 5560 .custom-section-cart-popup-modal-container .upsell-modal-component-item-title-and-price-container { 5561 justify-content: center; 5562 width: 100%; 5563 } 5564 5565 .custom-section-cart-popup-modal-container .upsell-modal-component-item-title { 5566 text-align: center; 5567 } 5568 5569 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-right-side { 5570 width: 50% !important; 5571 } 5572 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-right { 5573 width: 100% !important; 5574 } 5575 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-right-inner { 5576 width: 100%; 5577 } 5578 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-left { 5579 width: 50% !important; 5580 } 5581 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-button-icon { 5582 margin-right: 8px; 5583 display: flex !important; 5584 } 5585 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-title { 5586 width: 100%; 5587 justify-content: center; 5588 } 5589 5590 /* Wrapper scroll area */ 5591 .custom-section-cart-popup-modal-container .original-upsell-slider-in-modal [x-ref="slider"] { 5592 display: flex; 5593 gap: 1rem; 5594 scroll-snap-type: x mandatory; 5595 scroll-padding-left: 1rem; 5596 -webkit-overflow-scrolling: touch; 5597 } 5598 5599 /* Each upsell card */ 5600 .custom-section-cart-popup-modal-container .original-upsell-slider-in-modal .upsell { 5601 flex: 0 0 85%; 5602 max-width: 85%; 5603 scroll-snap-align: start; 5604 box-sizing: border-box; 5605 height: min-content; 5606 } 5607 5608 .custom-section-cart-popup-modal-container .original-upsell-slider-in-modal .upsell:hover { 5609 transform: translateY(-2px); 5610 } 5611 5612 /* Variant C upsell styling */ 5613 .custom-section-cart-popup-modal-container .abt-upsell-slider { 5614 display: flex; 5615 gap: 1rem; 5616 overflow-x: auto; 5617 scroll-snap-type: x mandatory; 5618 scroll-padding: 1rem; 5619 justify-content: flex-start; 5620 padding: 1rem 0; 5621 } 5622 5623 .custom-section-cart-popup-modal-container .upsell-modal-product-card-variant-options { 5624 margin: auto; 5625 } 5626 5627 /* Each card fully visible & aligned */ 5628 .custom-section-cart-popup-modal-container .abt-upsell-card { 5629 flex: 0 0 80%; 5630 max-width: 80%; 5631 scroll-snap-align: center; 5632 scroll-snap-stop: always; 5633 } 5634 5635 /* Fix scroll offset on mobile so first card fully visible */ 5636 .custom-section-cart-popup-modal-container .abt-upsell-slider::-webkit-scrollbar {
5637 display: none; 5638 } 5639 5640 .custom-section-cart-popup-modal-container .abt-upsell-slider { 5641 -ms-overflow-style: none; 5642 scrollbar-width: none; 5643 scroll-behavior: smooth; 5644 } 5645 5646 /* Optional: center align titles/buttons below each image */ 5647 .custom-section-cart-popup-modal-container .modal-upsell { 5648 display: flex; 5649 flex-direction: column; 5650 align-items: center; 5651 justify-content: flex-start; 5652 } 5653 5654 .custom-section-cart-popup-modal-container .abt-upsell-slider { 5655 position: relative; 5656 } 5657 5658 .custom-section-cart-popup-modal-container .modal-upsell-item-card { 5659 flex-direction: column !important; 5660 min-width: unset; 5661 } 5662 5663 5664 /* Shared arrow base */ 5665 .custom-section-cart-popup-modal-container .abt-upsell-arrow { 5666 position: absolute; 5667 top: 50%; 5668 transform: translateY(-50%); 5669 width: 40px; 5670 height: 40px; 5671 border-radius: 50%; 5672 background: white; 5673 color: #333; 5674 font-size: 1.75rem; 5675 font-weight: 400; 5676 display: flex; 5677 align-items: center; 5678 justify-content: center; 5679 cursor: pointer; 5680 transition: all 0.2s ease; 5681 z-index: 5; 5682 padding-bottom: 7px; 5683 } 5684 5685 .custom-section-cart-popup-modal-container .abt-upsell-arrow:hover { 5686 background: #f8f8f8; 5687 transform: translateY(-50%) scale(1.05); 5688 } 5689 5690 .custom-section-cart-popup-modal-container .abt-upsell-arrow--left { 5691 left: 0.5rem; 5692 } 5693 5694 .custom-section-cart-popup-modal-container .abt-upsell-arrow--right { 5695 right: 0.5rem; 5696 } 5697 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-row { 5698 flex-direction: column !important; 5699 } 5700 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-left { 5701 width: 100% !important; 5702 } 5703 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-right-side { 5704 width: 100% !important; 5705 justify-content: flex-start; 5706 } 5707 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-container-right { 5708 align-items: flex-start !important; 5709 } 5710 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-button-primary, 5711 .custom-section-cart-popup-modal-container .section-popup-modal-cart-checkout-button-secondary { 5712 width: 100% !important; 5713 max-width: 100%; 5714 flex: 1 1 100%; 5715 } 5716 .custom-section-cart-popup-modal-container .abt-upsell-arrow { 5717 display: flex; 5718 } 5719 .original-upsell-slider-in-modal [x-ref="slider"] { 5720 justify-content: flex-start !important; 5721 padding-left: 1rem; 5722 } 5723 5724 .custom-section-cart-popup-modal-container .original-upsell-slider-in-modal .upsell { 5725 flex: 0 0 100%; 5726 max-width: 100%; 5727 } 5728 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-title, 5729 .custom-section-cart-popup-modal-container .section-popup-modal-cart-addons-description { 5730 text-align: center; 5731 } 5732 .custom-section-cart-popup-modal-container #shopify-section-modal-upsell .hidescrollbar.inline-flex.w-full.overflow-x-auto.overflow-y-hidden.whitespace-nowrap.text-center.px-0 { 5733 padding-left: 0; 5734 } 5735 } 5736 5737 5738 /* Desktop: show two centered cards */ 5739 /* Two centered cards visible on desktop */ 5740 5741 5742 /* 5743 5744 @media (min-width: 1024px) { 5745 .custom-section-cart-popup-modal-container .abt-upsell-slider { 5746 justify-content: center; 5747 overflow: hidden; 5748 } 5749 5750 .custom-section-cart-popup-modal-container .abt-upsell-card { 5751 flex: 0 0 calc(50% - 1rem); 5752 max-width: calc(50% - 1rem); 5753 } 5754 } 5755 5756 @media (min-width: 768px) { 5757 .original-upsell-slider-in-modal [x-ref="slider"] { 5758 overflow-x: auto; 5759 gap: 2rem; 5760 } 5761 5762 .custom-section-cart-popup-modal-container .original-upsell-slider-in-modal .upsell { 5763 flex: 0 0 calc(50% - 1rem); 5764 max-width: calc(50% - 1rem); 5765 transition: transform 0.3s ease; 5766 } 5767 } 5768*/ 5769 5770 5771</style><style> #shopify-section-theme__cart-modal div[x-data="countdownTimer()"] {display: none !important;} </style></div> 5772 <div id="shopify-section-theme__menu" class="shopify-section"><!-- sections/theme__menu.liquid --> 5773 5774 5775 5776 5777<!-- snippets/component__drawer.liquid --> 5778 5779 5780<section 5781 class="fixed inset-0 z-50 overflow-hidden" 5782 x-show="menu_drawer" 5783 x-cloak> 5784 <div class="backdrop-blur-md absolute inset-0 bg-black bg-opacity-50" 5785 aria-hidden="true" 5786 @click="menu_drawer = false; hide_header = false;" 5787 x-show="menu_drawer" 5788 5789 x-transition:enter="animation-300" 5790 x-transition:enter-start="opacity-0" 5791 x-transition:enter-end="opacity-100" 5792 x-transition:leave="animation-300" 5793 x-transition:leave-start="opacity-100" 5794 x-transition:leave-end="opacity-0" 5795 5796 x-cloak> 5797 </div> 5798 <div 5799 class="left-0 fixed inset-y-0 flex max-w-full" 5800 x-trap="menu_drawer" 5801 x-show="menu_drawer" 5802 5803 x-transition:enter="animation-300 opacity-0 -translate-x-8" 5804 x-transition:enter-start="opacity-0 -translate-x-8" 5805 x-transition:enter-end="translate-x-0 opacity-100" 5806 x-transition:leave="animation-300 opacity-100 -translate-x-8" 5807 x-transition:leave-start="translate-x-0 opacity-100" 5808 x-transition:leave-end="opacity-0 -translate-x-8" 5809 5810 x-cloak> 5811 <div class="md:max-w-md w-screen max-w-full"> 5812 <div class="color__bg-body color__text flex flex-col h-full overflow-y-auto shadow-xl"> 5813 �<section class="border--b-width sticky top-0 flex flex-wrap items-center justify-between px-4 py-2 5814 color__bg-body color__text 5815 color__border-divider-1" 5816 @click="menu_nested = false;"> 5817 <div> 5818 5819 <button class="btn btn--smaller 5820 btn btn--plain" 5821 title="Close" 5822 @click="menu_drawer = false;"> 5823 <!-- snippets/component__icon.liquid --> 5824 5825 5826<span class="inline-flex align-middle " aria-hidden="true"> 5827 5828 <svg 5829 xmlns="http://www.w3.org/2000/svg" 5830 width="24" 5831 height="24"
5832 viewBox="0 0 24 24" 5833 fill="none" 5834 stroke="currentColor" 5835 stroke-width="2" 5836 stroke-linecap="round" 5837 stroke-linejoin="round" 5838 class="feather feather-x" 5839 > 5840 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 5841 </svg> 5842 5843</span> 5844 5845 </button> 5846 </div> 5847 <div class="text-right "> 5848 5849 5850 <a 5851 class="relative flex inline-flex items-center pl-4 !no-underline" 5852 href="/cart" 5853 rel="nofollow" 5854 title="Open Cart" 5855 5856 > 5857 <!-- snippets/component__icon.liquid --> 5858 5859 5860<span class="inline-flex align-middle " aria-hidden="true"> 5861 5862 <svg 5863 xmlns="http://www.w3.org/2000/svg" 5864 width="24" 5865 height="24" 5866 viewBox="0 0 24 24" 5867 fill="none" 5868 stroke="currentColor" 5869 stroke-width="2" 5870 stroke-linecap="round" 5871 stroke-linejoin="round" 5872 class="feather feather-shopping-cart" 5873 > 5874 <circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path> 5875 </svg> 5876 5877</span> 5878 5879 <span class="type--smaller color__bg-primary color__primary ml-1 px-2 py-0.5 border__button--radius"> 5880 <span class="type__nav" x-text="cart.item_count">0</span> 5881 </span> 5882 </a> 5883 5884 </div> 5885 </section><section class="relative h-[inherit] overflow-y-auto overflow-x-hidden 5886 color__bg-body color__text"><div 5887 class="w-full" 5888 :class="{ 5889 'border--b-width color__border-divider-1': !flipbook, 5890 'absolute flex items-stretch top-0 h-full': flipbook 5891 }" 5892 x-data="{ flipbook: false }" 5893 @click.outside="flipbook = false;" 5894 x-cloak> 5895 5896 5897 <button type="button" class="flex items-center justify-between w-full px-4 py-4" 5898 x-show="!flipbook" 5899 @click="flipbook = ! flipbook; menu_nested = true;"> 5900 <span class="type__body"> 5901 Shop Gear 5902 </span> 5903 <div> 5904 <!-- snippets/component__icon.liquid --> 5905 5906 5907<span class="inline-flex align-middle " aria-hidden="true"> 5908 5909 <svg 5910 xmlns="http://www.w3.org/2000/svg" 5911 width="24" 5912 height="24"
5913 viewBox="0 0 24 24" 5914 fill="none" 5915 stroke="currentColor" 5916 stroke-width="2" 5917 stroke-linecap="round" 5918 stroke-linejoin="round" 5919 class="feather feather-chevron-right" 5920 > 5921 <polyline points="9 18 15 12 9 6"></polyline> 5922 </svg> 5923 5924</span> 5925 5926 </div> 5927 </button> 5928 <div 5929 class="w-full h-full absolute block items-stretch top-0 z-10 5930 color__bg-body color__text" 5931 x-show="flipbook" 5932 5933 x-transition:enter="animation-100" 5934 x-transition:enter-start="translate-x-24 opacity-0" 5935 x-transition:enter-end="translate-x-0 opacity-100" 5936 x-transition:leave="animation-100" 5937 x-transition:leave-start="translate-x-0 opacity-100" 5938 x-transition:leave-end="translate-x-24 opacity-0" 5939 5940 x-cloak> 5941 <div class="border--b-width sticky top-0 px-4 py-2 color__bg-body color__text color__border-divider-1"> 5942 <button 5943 class="btn btn--small 5944 btn btn--secondary" 5945 @click="flipbook = ! flipbook; menu_nested = false;"> 5946 <!-- snippets/component__icon.liquid --> 5947 5948 5949<span class="inline-flex align-middle " aria-hidden="true"> 5950 5951 <svg 5952 xmlns="http://www.w3.org/2000/svg" 5953 width="20" 5954 height="20"
5955 viewBox="0 0 24 24" 5956 fill="none" 5957 stroke="currentColor" 5958 stroke-width="2" 5959 stroke-linecap="round" 5960 stroke-linejoin="round" 5961 class="feather feather-chevron-left" 5962 > 5963 <polyline points="15 18 9 12 15 6"></polyline> 5964 </svg> 5965 5966</span> 5967 5968 Back 5969 </button> 5970 </div> 5971 5972 5973 5974 5975 5976 5977 5978 <!-- snippets/component__accordion.liquid --> 5979 5980<div 5981 id="" 5982 class=" 5983 border--b-width color__border-divider-1 5984 " 5985 5986 x-data=" 5987 { 5988 5989 accordion: false 5990 5991 } 5992 " 5993> 5994 <button 5995 type="button" 5996 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 5997 @click=" 5998 5999 accordion = ! accordion 6000 6001 " 6002 > 6003 <div class="flex items-center"> 6004 6005 6006 <span class="type__body--bold text-left text-zinc-600"> 6007 Espresso Machines 6008 </span> 6009 </div> 6010 <div x-show=" !accordion "> 6011 <!-- snippets/component__icon.liquid --> 6012 6013 6014<span class="inline-flex align-middle " aria-hidden="true"> 6015 6016 <svg 6017 xmlns="http://www.w3.org/2000/svg" 6018 width="24" 6019 height="24"
6020 viewBox="0 0 24 24" 6021 fill="none" 6022 stroke="currentColor" 6023 stroke-width="2" 6024 stroke-linecap="round" 6025 stroke-linejoin="round" 6026 class="feather feather-chevron-down" 6027 > 6028 <polyline points="6 9 12 15 18 9"></polyline> 6029 </svg> 6030 6031</span> 6032 6033 </div> 6034 <div x-show=" accordion " x-cloak> 6035 <!-- snippets/component__icon.liquid --> 6036 6037 6038<span class="inline-flex align-middle " aria-hidden="true"> 6039 6040 <svg 6041 xmlns="http://www.w3.org/2000/svg" 6042 width="24" 6043 height="24" 6044 viewBox="0 0 24 24" 6045 fill="none" 6046 stroke="currentColor" 6047 stroke-width="2" 6048 stroke-linecap="round" 6049 stroke-linejoin="round" 6050 class="feather feather-chevron-up" 6051 > 6052 <polyline points="18 15 12 9 6 15"></polyline> 6053 </svg> 6054 6055</span> 6056 6057 </div> 6058 </button> 6059 6060 <div 6061 class="accordion-content 6062 color__bg-overlay-1 6063 " 6064 x-show=" accordion " 6065 6066 x-transition:enter="animation-100" 6067 x-transition:enter-start="opacity-0" 6068 x-transition:enter-end="opacity-100" 6069 x-transition:leave="animation-100" 6070 x-transition:leave-start="opacity-100" 6071 x-transition:leave-end="opacity-0" 6072 6073 x-cloak 6074 > 6075 6076 6077 6078 <a href="/collections/espresso-machines" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 6079 <span class="text-left type__body--bold text-zinc-600"> 6080 Shop All Espresso Machines <!-- snippets/component__icon.liquid --> 6081 6082 6083<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 6084 6085 <svg 6086 xmlns="http://www.w3.org/2000/svg" 6087 width="14" 6088 height="14"
6089 viewBox="0 0 24 24" 6090 fill="none" 6091 stroke="currentColor" 6092 stroke-width="2" 6093 stroke-linecap="round" 6094 stroke-linejoin="round" 6095 class="feather feather-arrow-right inline-block" 6096 > 6097 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 6098 </svg> 6099 6100</span> 6101 6102 </span> 6103 </a> 6104 6105 6106 <a href="/collections/semi-automatic" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6107 Semi-Automatic 6108 </a> 6109 6110 <a href="/collections/superautomatic-espresso-machines" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6111 Superautomatic 6112 </a> 6113 6114 <a href="/collections/espresso-machine-bundles" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6115 Bundle and Save! 6116 </a> 6117 6118 6119 </div> 6120</div> 6121 6122 6123 6124 6125 6126 6127 6128 <!-- snippets/component__accordion.liquid --> 6129 6130<div 6131 id="" 6132 class=" 6133 border--b-width color__border-divider-1 6134 " 6135 6136 x-data=" 6137 { 6138 6139 accordion: false 6140 6141 } 6142 " 6143> 6144 <button 6145 type="button" 6146 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 6147 @click=" 6148 6149 accordion = ! accordion 6150 6151 " 6152 > 6153 <div class="flex items-center"> 6154 6155
6156 <span class="type__body--bold text-left text-zinc-600"> 6157 Grinders 6158 </span> 6159 </div> 6160 <div x-show=" !accordion "> 6161 <!-- snippets/component__icon.liquid --> 6162 6163 6164<span class="inline-flex align-middle " aria-hidden="true"> 6165 6166 <svg 6167 xmlns="http://www.w3.org/2000/svg" 6168 width="24" 6169 height="24" 6170 viewBox="0 0 24 24" 6171 fill="none" 6172 stroke="currentColor" 6173 stroke-width="2" 6174 stroke-linecap="round" 6175 stroke-linejoin="round" 6176 class="feather feather-chevron-down" 6177 > 6178 <polyline points="6 9 12 15 18 9"></polyline> 6179 </svg> 6180 6181</span> 6182 6183 </div> 6184 <div x-show=" accordion " x-cloak> 6185 <!-- snippets/component__icon.liquid --> 6186 6187 6188<span class="inline-flex align-middle " aria-hidden="true"> 6189 6190 <svg 6191 xmlns="http://www.w3.org/2000/svg" 6192 width="24" 6193 height="24" 6194 viewBox="0 0 24 24" 6195 fill="none" 6196 stroke="currentColor" 6197 stroke-width="2" 6198 stroke-linecap="round" 6199 stroke-linejoin="round" 6200 class="feather feather-chevron-up" 6201 > 6202 <polyline points="18 15 12 9 6 15"></polyline> 6203 </svg> 6204 6205</span> 6206 6207 </div> 6208 </button> 6209 6210 <div 6211 class="accordion-content 6212 color__bg-overlay-1 6213 " 6214 x-show=" accordion " 6215 6216 x-transition:enter="animation-100" 6217 x-transition:enter-start="opacity-0" 6218 x-transition:enter-end="opacity-100" 6219 x-transition:leave="animation-100" 6220 x-transition:leave-start="opacity-100" 6221 x-transition:leave-end="opacity-0" 6222 6223 x-cloak 6224 > 6225 6226 6227 6228 <a href="/collections/grinders" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 6229 <span class="text-left type__body--bold text-zinc-600"> 6230 Shop All Grinders <!-- snippets/component__icon.liquid --> 6231 6232 6233<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 6234 6235 <svg 6236 xmlns="http://www.w3.org/2000/svg" 6237 width="14" 6238 height="14"
6239 viewBox="0 0 24 24" 6240 fill="none" 6241 stroke="currentColor" 6242 stroke-width="2" 6243 stroke-linecap="round" 6244 stroke-linejoin="round" 6245 class="feather feather-arrow-right inline-block" 6246 > 6247 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 6248 </svg> 6249 6250</span> 6251 6252 </span> 6253 </a> 6254 6255 6256 <a href="/collections/espresso-grinders" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6257 Espresso Grinders 6258 </a> 6259 6260 <a href="/collections/coffee-grinders" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6261 Coffee Grinders 6262 </a> 6263 6264 <a href="/collections/grinder-accessories" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6265 Grinder Accessories 6266 </a> 6267 6268 6269 </div> 6270</div> 6271 6272 6273 6274 6275 6276 6277 6278 <!-- snippets/component__accordion.liquid --> 6279 6280<div 6281 id="" 6282 class=" 6283 border--b-width color__border-divider-1 6284 " 6285 6286 x-data=" 6287 { 6288 6289 accordion: false 6290 6291 } 6292 " 6293> 6294 <button 6295 type="button" 6296 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 6297 @click=" 6298 6299 accordion = ! accordion 6300 6301 " 6302 > 6303 <div class="flex items-center"> 6304 6305
6306 <span class="type__body--bold text-left text-zinc-600"> 6307 Coffee Makers 6308 </span> 6309 </div> 6310 <div x-show=" !accordion "> 6311 <!-- snippets/component__icon.liquid --> 6312 6313 6314<span class="inline-flex align-middle " aria-hidden="true"> 6315 6316 <svg 6317 xmlns="http://www.w3.org/2000/svg" 6318 width="24" 6319 height="24" 6320 viewBox="0 0 24 24" 6321 fill="none" 6322 stroke="currentColor" 6323 stroke-width="2" 6324 stroke-linecap="round" 6325 stroke-linejoin="round" 6326 class="feather feather-chevron-down" 6327 > 6328 <polyline points="6 9 12 15 18 9"></polyline> 6329 </svg> 6330 6331</span> 6332 6333 </div> 6334 <div x-show=" accordion " x-cloak> 6335 <!-- snippets/component__icon.liquid --> 6336 6337 6338<span class="inline-flex align-middle " aria-hidden="true"> 6339 6340 <svg 6341 xmlns="http://www.w3.org/2000/svg" 6342 width="24" 6343 height="24" 6344 viewBox="0 0 24 24" 6345 fill="none" 6346 stroke="currentColor" 6347 stroke-width="2" 6348 stroke-linecap="round" 6349 stroke-linejoin="round" 6350 class="feather feather-chevron-up" 6351 > 6352 <polyline points="18 15 12 9 6 15"></polyline> 6353 </svg> 6354 6355</span> 6356 6357 </div> 6358 </button> 6359 6360 <div 6361 class="accordion-content 6362 color__bg-overlay-1 6363 " 6364 x-show=" accordion " 6365 6366 x-transition:enter="animation-100" 6367 x-transition:enter-start="opacity-0" 6368 x-transition:enter-end="opacity-100" 6369 x-transition:leave="animation-100" 6370 x-transition:leave-start="opacity-100" 6371 x-transition:leave-end="opacity-0" 6372 6373 x-cloak 6374 > 6375 6376 6377 6378 <a href="/collections/coffee-makers" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 6379 <span class="text-left type__body--bold text-zinc-600"> 6380 Shop All Coffee Makers <!-- snippets/component__icon.liquid --> 6381 6382 6383<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 6384 6385 <svg 6386 xmlns="http://www.w3.org/2000/svg" 6387 width="14" 6388 height="14"
6389 viewBox="0 0 24 24" 6390 fill="none" 6391 stroke="currentColor" 6392 stroke-width="2" 6393 stroke-linecap="round" 6394 stroke-linejoin="round" 6395 class="feather feather-arrow-right inline-block" 6396 > 6397 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 6398 </svg> 6399 6400</span> 6401 6402 </span> 6403 </a> 6404 6405 6406 <a href="/collections/drip-brewers" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6407 Drip Brewers 6408 </a> 6409 6410 <a href="/collections/french-presses" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6411 French Presses 6412 </a> 6413 6414 <a href="/collections/stove-top-coffee-makers" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6415 Stove Top 6416 </a> 6417 6418 <a href="/collections/cold-brew" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6419 Cold Brew 6420 </a> 6421 6422 <a href="/collections/pour-overs" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6423 Pour Overs 6424 </a> 6425 6426 6427 </div> 6428</div> 6429 6430 6431 6432 6433 6434 6435 6436 <!-- snippets/component__accordion.liquid --> 6437 6438<div 6439 id="" 6440 class=" 6441 border--b-width color__border-divider-1 6442 " 6443 6444 x-data=" 6445 { 6446 6447 accordion: false 6448 6449 } 6450 " 6451> 6452 <button 6453 type="button" 6454 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 6455 @click=" 6456 6457 accordion = ! accordion 6458 6459 " 6460 > 6461 <div class="flex items-center"> 6462 6463
6464 <span class="type__body--bold text-left text-zinc-600"> 6465 Accessories 6466 </span> 6467 </div> 6468 <div x-show=" !accordion "> 6469 <!-- snippets/component__icon.liquid --> 6470 6471 6472<span class="inline-flex align-middle " aria-hidden="true"> 6473 6474 <svg 6475 xmlns="http://www.w3.org/2000/svg" 6476 width="24" 6477 height="24" 6478 viewBox="0 0 24 24" 6479 fill="none" 6480 stroke="currentColor" 6481 stroke-width="2" 6482 stroke-linecap="round" 6483 stroke-linejoin="round" 6484 class="feather feather-chevron-down" 6485 > 6486 <polyline points="6 9 12 15 18 9"></polyline> 6487 </svg> 6488 6489</span> 6490 6491 </div> 6492 <div x-show=" accordion " x-cloak> 6493 <!-- snippets/component__icon.liquid --> 6494 6495 6496<span class="inline-flex align-middle " aria-hidden="true"> 6497 6498 <svg 6499 xmlns="http://www.w3.org/2000/svg" 6500 width="24" 6501 height="24" 6502 viewBox="0 0 24 24" 6503 fill="none" 6504 stroke="currentColor" 6505 stroke-width="2" 6506 stroke-linecap="round" 6507 stroke-linejoin="round" 6508 class="feather feather-chevron-up" 6509 > 6510 <polyline points="18 15 12 9 6 15"></polyline> 6511 </svg> 6512 6513</span> 6514 6515 </div> 6516 </button> 6517 6518 <div 6519 class="accordion-content 6520 color__bg-overlay-1 6521 " 6522 x-show=" accordion " 6523 6524 x-transition:enter="animation-100" 6525 x-transition:enter-start="opacity-0" 6526 x-transition:enter-end="opacity-100" 6527 x-transition:leave="animation-100" 6528 x-transition:leave-start="opacity-100" 6529 x-transition:leave-end="opacity-0" 6530 6531 x-cloak 6532 > 6533 6534 6535 6536 <a href="/collections/accessories" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 6537 <span class="text-left type__body--bold text-zinc-600"> 6538 Shop All Accessories <!-- snippets/component__icon.liquid --> 6539 6540 6541<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 6542 6543 <svg 6544 xmlns="http://www.w3.org/2000/svg" 6545 width="14" 6546 height="14"
6547 viewBox="0 0 24 24" 6548 fill="none" 6549 stroke="currentColor" 6550 stroke-width="2" 6551 stroke-linecap="round" 6552 stroke-linejoin="round" 6553 class="feather feather-arrow-right inline-block" 6554 > 6555 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 6556 </svg> 6557 6558</span> 6559 6560 </span> 6561 </a> 6562 6563 6564 <a href="/collections/cleaning-supplies" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6565 Cleaning Supplies 6566 </a> 6567 6568 <a href="/collections/filters" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6569 Filters 6570 </a> 6571 6572 <a href="/collections/espresso-accessories" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6573 Espresso Accessories 6574 </a> 6575 6576 <a href="/collections/scales-and-measuring" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6577 Scales and Measuring 6578 </a> 6579 6580 <a href="/collections/coffee-storage" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6581 Coffee Storage 6582 </a> 6583 6584 <a href="/collections/cups" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6585 Cups 6586 </a> 6587 6588 <a href="/collections/kettles" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6589 Kettles 6590 </a> 6591 6592 <a href="/collections/milk-frothers" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6593 Milk Frothers 6594 </a> 6595 6596 <a href="/collections/tea-ware" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6597 Tea Ware 6598 </a> 6599 6600 <a href="/collections/all-parts" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6601 Parts 6602 </a> 6603 6604 <a href="/collections/espresso-machine-maintenance-filters-subscribable" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6605 Subscriptions 6606 </a> 6607 6608 6609 </div> 6610</div> 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 <div 6623 class="flex flex-wrap py-8 " 6624 > 6625 <div class="flex flex-col"> 6626 6627 6628 6629 6630 6631 6632 <a 6633 class=" 6634 type__body block mb-2 pl-4 no-underline uppercase 6635 6636 6637 " 6638 href="/collections/new-arrivals" 6639 > 6640 New Arrivals 6641 </a> 6642 6643 6644 6645 <a 6646 class=" 6647 type__body block mb-2 pl-4 no-underline uppercase 6648 6649 6650 " 6651 href="/collections/staff-pick" 6652 > 6653 Staff Picks 6654 </a> 6655 6656 6657 6658 <a 6659 class=" 6660 type__body block mb-2 pl-4 no-underline uppercase 6661 6662 6663 " 6664 href="/pages/brands" 6665 > 6666 Shop Brands 6667 </a> 6668 6669 6670 6671 <a 6672 class=" 6673 type__body block mb-2 pl-4 no-underline uppercase 6674 6675 6676 " 6677 href="/collections/refurbished" 6678 > 6679 Refurbished 6680 </a> 6681 6682 6683 6684 <a 6685 class=" 6686 type__body block mb-2 pl-4 no-underline uppercase 6687 6688 6689 " 6690 href="/collections/open-box-merchandise" 6691 > 6692 Open Box 6693 </a> 6694 6695 6696 6697 <a 6698 class=" 6699 type__body block mb-2 pl-4 no-underline uppercase 6700 6701 6702 " 6703 href="/collections/closeouts" 6704 > 6705 Closeouts 6706 </a> 6707 6708 6709 6710 <a 6711 class=" 6712 type__body block mb-2 pl-4 no-underline uppercase 6713 6714 color__text-scg-red 6715 " 6716 href="/collections/sale" 6717 > 6718 Sale 6719 </a> 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 </div> 6734 </div> 6735 6736 6737 6738 6739 6740 </div> 6741 6742 6743 </div><div 6744 class="w-full" 6745 :class="{ 6746 'border--b-width color__border-divider-1': !flipbook, 6747 'absolute flex items-stretch top-0 h-full': flipbook 6748 }"
6749 x-data="{ flipbook: false }" 6750 @click.outside="flipbook = false;" 6751 x-cloak> 6752 6753 6754 <button type="button" class="flex items-center justify-between w-full px-4 py-4" 6755 x-show="!flipbook" 6756 @click="flipbook = ! flipbook; menu_nested = true;"> 6757 <span class="type__body"> 6758 Shop Coffee 6759 </span> 6760 <div> 6761 <!-- snippets/component__icon.liquid --> 6762 6763 6764<span class="inline-flex align-middle " aria-hidden="true"> 6765 6766 <svg 6767 xmlns="http://www.w3.org/2000/svg" 6768 width="24" 6769 height="24" 6770 viewBox="0 0 24 24" 6771 fill="none" 6772 stroke="currentColor" 6773 stroke-width="2" 6774 stroke-linecap="round" 6775 stroke-linejoin="round" 6776 class="feather feather-chevron-right" 6777 > 6778 <polyline points="9 18 15 12 9 6"></polyline> 6779 </svg> 6780 6781</span> 6782 6783 </div> 6784 </button> 6785 <div 6786 class="w-full h-full absolute block items-stretch top-0 z-10 6787 color__bg-body color__text" 6788 x-show="flipbook" 6789 6790 x-transition:enter="animation-100" 6791 x-transition:enter-start="translate-x-24 opacity-0" 6792 x-transition:enter-end="translate-x-0 opacity-100" 6793 x-transition:leave="animation-100" 6794 x-transition:leave-start="translate-x-0 opacity-100" 6795 x-transition:leave-end="translate-x-24 opacity-0" 6796 6797 x-cloak> 6798 <div class="border--b-width sticky top-0 px-4 py-2 color__bg-body color__text color__border-divider-1"> 6799 <button 6800 class="btn btn--small 6801 btn btn--secondary" 6802 @click="flipbook = ! flipbook; menu_nested = false;"> 6803 <!-- snippets/component__icon.liquid --> 6804 6805 6806<span class="inline-flex align-middle " aria-hidden="true"> 6807 6808 <svg 6809 xmlns="http://www.w3.org/2000/svg" 6810 width="20" 6811 height="20"
6812 viewBox="0 0 24 24" 6813 fill="none" 6814 stroke="currentColor" 6815 stroke-width="2" 6816 stroke-linecap="round" 6817 stroke-linejoin="round" 6818 class="feather feather-chevron-left" 6819 > 6820 <polyline points="15 18 9 12 15 6"></polyline> 6821 </svg> 6822 6823</span> 6824 6825 Back 6826 </button> 6827 </div> 6828 6829 6830 6831 6832 6833 6834 6835 <!-- snippets/component__accordion.liquid --> 6836 6837<div 6838 id="" 6839 class=" 6840 border--b-width color__border-divider-1 6841 " 6842 6843 x-data=" 6844 { 6845 6846 accordion: false 6847 6848 } 6849 " 6850> 6851 <button 6852 type="button" 6853 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 6854 @click=" 6855 6856 accordion = ! accordion 6857 6858 " 6859 > 6860 <div class="flex items-center"> 6861 6862 6863 <span class="type__body--bold text-left text-zinc-600"> 6864 Coffee 6865 </span> 6866 </div> 6867 <div x-show=" !accordion "> 6868 <!-- snippets/component__icon.liquid --> 6869 6870 6871<span class="inline-flex align-middle " aria-hidden="true"> 6872 6873 <svg 6874 xmlns="http://www.w3.org/2000/svg" 6875 width="24" 6876 height="24"
6877 viewBox="0 0 24 24" 6878 fill="none" 6879 stroke="currentColor" 6880 stroke-width="2" 6881 stroke-linecap="round" 6882 stroke-linejoin="round" 6883 class="feather feather-chevron-down" 6884 > 6885 <polyline points="6 9 12 15 18 9"></polyline> 6886 </svg> 6887 6888</span> 6889 6890 </div> 6891 <div x-show=" accordion " x-cloak> 6892 <!-- snippets/component__icon.liquid --> 6893 6894 6895<span class="inline-flex align-middle " aria-hidden="true"> 6896 6897 <svg 6898 xmlns="http://www.w3.org/2000/svg" 6899 width="24" 6900 height="24" 6901 viewBox="0 0 24 24" 6902 fill="none" 6903 stroke="currentColor" 6904 stroke-width="2" 6905 stroke-linecap="round" 6906 stroke-linejoin="round" 6907 class="feather feather-chevron-up" 6908 > 6909 <polyline points="18 15 12 9 6 15"></polyline> 6910 </svg> 6911 6912</span> 6913 6914 </div> 6915 </button> 6916 6917 <div 6918 class="accordion-content 6919 color__bg-overlay-1 6920 " 6921 x-show=" accordion " 6922 6923 x-transition:enter="animation-100" 6924 x-transition:enter-start="opacity-0" 6925 x-transition:enter-end="opacity-100" 6926 x-transition:leave="animation-100" 6927 x-transition:leave-start="opacity-100" 6928 x-transition:leave-end="opacity-0" 6929 6930 x-cloak 6931 > 6932 6933 6934 6935 <a href="/collections/coffee" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 6936 <span class="text-left type__body--bold text-zinc-600"> 6937 Shop All Coffee <!-- snippets/component__icon.liquid --> 6938 6939 6940<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 6941 6942 <svg 6943 xmlns="http://www.w3.org/2000/svg" 6944 width="14" 6945 height="14"
6946 viewBox="0 0 24 24" 6947 fill="none" 6948 stroke="currentColor" 6949 stroke-width="2" 6950 stroke-linecap="round" 6951 stroke-linejoin="round" 6952 class="feather feather-arrow-right inline-block" 6953 > 6954 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 6955 </svg> 6956 6957</span> 6958 6959 </span> 6960 </a> 6961 6962 6963 <a href="/collections/coffee-new-arrivals" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6964 New Arrivals 6965 </a> 6966 6967 <a href="/collections/staff-picks-coffee" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6968 Staff Picks 6969 </a> 6970 6971 <a href="/pages/roasters" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6972 Shop Roasters 6973 </a> 6974 6975 <a href="https://www.seattlecoffeegear.com/collections/coffee/subscribable" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 6976 Subscriptions 6977 </a> 6978 6979 6980 </div> 6981</div> 6982 6983 6984 6985 6986 6987 6988 6989 <!-- snippets/component__accordion.liquid --> 6990 6991<div 6992 id="" 6993 class=" 6994 border--b-width color__border-divider-1 6995 " 6996 6997 x-data=" 6998 { 6999 7000 accordion: false 7001 7002 } 7003 " 7004> 7005 <button 7006 type="button" 7007 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7008 @click=" 7009 7010 accordion = ! accordion 7011 7012 " 7013 > 7014 <div class="flex items-center"> 7015 7016
7017 <span class="type__body--bold text-left text-zinc-600"> 7018 Roast Level 7019 </span> 7020 </div> 7021 <div x-show=" !accordion "> 7022 <!-- snippets/component__icon.liquid --> 7023 7024 7025<span class="inline-flex align-middle " aria-hidden="true"> 7026 7027 <svg 7028 xmlns="http://www.w3.org/2000/svg" 7029 width="24" 7030 height="24" 7031 viewBox="0 0 24 24" 7032 fill="none" 7033 stroke="currentColor" 7034 stroke-width="2" 7035 stroke-linecap="round" 7036 stroke-linejoin="round" 7037 class="feather feather-chevron-down" 7038 > 7039 <polyline points="6 9 12 15 18 9"></polyline> 7040 </svg> 7041 7042</span> 7043 7044 </div> 7045 <div x-show=" accordion " x-cloak> 7046 <!-- snippets/component__icon.liquid --> 7047 7048 7049<span class="inline-flex align-middle " aria-hidden="true"> 7050 7051 <svg 7052 xmlns="http://www.w3.org/2000/svg" 7053 width="24" 7054 height="24" 7055 viewBox="0 0 24 24" 7056 fill="none" 7057 stroke="currentColor" 7058 stroke-width="2" 7059 stroke-linecap="round" 7060 stroke-linejoin="round" 7061 class="feather feather-chevron-up" 7062 > 7063 <polyline points="18 15 12 9 6 15"></polyline> 7064 </svg> 7065 7066</span> 7067 7068 </div> 7069 </button> 7070 7071 <div 7072 class="accordion-content 7073 color__bg-overlay-1 7074 " 7075 x-show=" accordion " 7076 7077 x-transition:enter="animation-100" 7078 x-transition:enter-start="opacity-0" 7079 x-transition:enter-end="opacity-100" 7080 x-transition:leave="animation-100" 7081 x-transition:leave-start="opacity-100" 7082 x-transition:leave-end="opacity-0" 7083 7084 x-cloak 7085 > 7086 7087 7088 7089 7090 <a href="/collections/light-roast" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7091 Light 7092 </a> 7093 7094 <a href="/collections/medium-roast" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7095 Medium 7096 </a> 7097 7098 <a href="/collections/dark-roast" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7099 Dark 7100 </a> 7101 7102 7103 </div> 7104</div> 7105 7106 7107 7108 7109 7110 7111 7112 <!-- snippets/component__accordion.liquid --> 7113 7114<div 7115 id="" 7116 class=" 7117 border--b-width color__border-divider-1 7118 " 7119 7120 x-data=" 7121 { 7122 7123 accordion: false 7124 7125 } 7126 " 7127> 7128 <button 7129 type="button" 7130 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7131 @click=" 7132 7133 accordion = ! accordion 7134 7135 " 7136 > 7137 <div class="flex items-center"> 7138 7139
7140 <span class="type__body--bold text-left text-zinc-600"> 7141 Taste Profile 7142 </span> 7143 </div> 7144 <div x-show=" !accordion "> 7145 <!-- snippets/component__icon.liquid --> 7146 7147 7148<span class="inline-flex align-middle " aria-hidden="true"> 7149 7150 <svg 7151 xmlns="http://www.w3.org/2000/svg" 7152 width="24" 7153 height="24" 7154 viewBox="0 0 24 24" 7155 fill="none" 7156 stroke="currentColor" 7157 stroke-width="2" 7158 stroke-linecap="round" 7159 stroke-linejoin="round" 7160 class="feather feather-chevron-down" 7161 > 7162 <polyline points="6 9 12 15 18 9"></polyline> 7163 </svg> 7164 7165</span> 7166 7167 </div> 7168 <div x-show=" accordion " x-cloak> 7169 <!-- snippets/component__icon.liquid --> 7170 7171 7172<span class="inline-flex align-middle " aria-hidden="true"> 7173 7174 <svg 7175 xmlns="http://www.w3.org/2000/svg" 7176 width="24" 7177 height="24" 7178 viewBox="0 0 24 24" 7179 fill="none" 7180 stroke="currentColor" 7181 stroke-width="2" 7182 stroke-linecap="round" 7183 stroke-linejoin="round" 7184 class="feather feather-chevron-up" 7185 > 7186 <polyline points="18 15 12 9 6 15"></polyline> 7187 </svg> 7188 7189</span> 7190 7191 </div> 7192 </button> 7193 7194 <div 7195 class="accordion-content 7196 color__bg-overlay-1 7197 " 7198 x-show=" accordion " 7199 7200 x-transition:enter="animation-100" 7201 x-transition:enter-start="opacity-0" 7202 x-transition:enter-end="opacity-100" 7203 x-transition:leave="animation-100" 7204 x-transition:leave-start="opacity-100" 7205 x-transition:leave-end="opacity-0" 7206 7207 x-cloak 7208 > 7209 7210 7211 7212 7213 <a href="/collections/balanced" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7214 Balanced 7215 </a> 7216 7217 <a href="/collections/bright-and-floral" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7218 Bright and Floral 7219 </a> 7220 7221 <a href="/collections/earth-and-smoke" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7222 Earth and Smoke 7223 </a> 7224 7225 <a href="/collections/fruit-forward" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7226 Fruit Forward 7227 </a> 7228 7229 <a href="/collections/rich-and-sweet" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7230 Rich and Sweet 7231 </a> 7232 7233 7234 </div> 7235</div> 7236 7237 7238 7239 7240 7241 7242 7243 <!-- snippets/component__accordion.liquid --> 7244 7245<div 7246 id="" 7247 class=" 7248 border--b-width color__border-divider-1 7249 " 7250 7251 x-data=" 7252 { 7253 7254 accordion: false 7255 7256 } 7257 " 7258> 7259 <button 7260 type="button" 7261 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7262 @click=" 7263 7264 accordion = ! accordion 7265 7266 " 7267 > 7268 <div class="flex items-center"> 7269 7270
7271 <span class="type__body--bold text-left text-zinc-600"> 7272 Brew Method 7273 </span> 7274 </div> 7275 <div x-show=" !accordion "> 7276 <!-- snippets/component__icon.liquid --> 7277 7278 7279<span class="inline-flex align-middle " aria-hidden="true"> 7280 7281 <svg 7282 xmlns="http://www.w3.org/2000/svg" 7283 width="24" 7284 height="24" 7285 viewBox="0 0 24 24" 7286 fill="none" 7287 stroke="currentColor" 7288 stroke-width="2" 7289 stroke-linecap="round" 7290 stroke-linejoin="round" 7291 class="feather feather-chevron-down" 7292 > 7293 <polyline points="6 9 12 15 18 9"></polyline> 7294 </svg> 7295 7296</span> 7297 7298 </div> 7299 <div x-show=" accordion " x-cloak> 7300 <!-- snippets/component__icon.liquid --> 7301 7302 7303<span class="inline-flex align-middle " aria-hidden="true"> 7304 7305 <svg 7306 xmlns="http://www.w3.org/2000/svg" 7307 width="24" 7308 height="24" 7309 viewBox="0 0 24 24" 7310 fill="none" 7311 stroke="currentColor" 7312 stroke-width="2" 7313 stroke-linecap="round" 7314 stroke-linejoin="round" 7315 class="feather feather-chevron-up" 7316 > 7317 <polyline points="18 15 12 9 6 15"></polyline> 7318 </svg> 7319 7320</span> 7321 7322 </div> 7323 </button> 7324 7325 <div 7326 class="accordion-content 7327 color__bg-overlay-1 7328 " 7329 x-show=" accordion " 7330 7331 x-transition:enter="animation-100" 7332 x-transition:enter-start="opacity-0" 7333 x-transition:enter-end="opacity-100" 7334 x-transition:leave="animation-100" 7335 x-transition:leave-start="opacity-100" 7336 x-transition:leave-end="opacity-0" 7337 7338 x-cloak 7339 > 7340 7341 7342 7343 7344 <a href="/collections/superautomatic-friendly" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7345 Superautomatic Friendly 7346 </a> 7347 7348 <a href="/collections/espresso" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7349 Espresso 7350 </a> 7351 7352 <a href="/collections/drip" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7353 Drip Coffee 7354 </a> 7355 7356 <a href="/collections/pour-over-coffee" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7357 Pour Over 7358 </a> 7359 7360 7361 </div> 7362</div> 7363 7364 7365 7366 7367 7368 7369 7370 <!-- snippets/component__accordion.liquid --> 7371 7372<div 7373 id="" 7374 class=" 7375 border--b-width color__border-divider-1 7376 " 7377 7378 x-data=" 7379 { 7380 7381 accordion: false 7382 7383 } 7384 " 7385> 7386 <button 7387 type="button" 7388 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7389 @click=" 7390 7391 accordion = ! accordion 7392 7393 " 7394 > 7395 <div class="flex items-center"> 7396 7397
7398 <span class="type__body--bold text-left text-zinc-600"> 7399 Specialty 7400 </span> 7401 </div> 7402 <div x-show=" !accordion "> 7403 <!-- snippets/component__icon.liquid --> 7404 7405 7406<span class="inline-flex align-middle " aria-hidden="true"> 7407 7408 <svg 7409 xmlns="http://www.w3.org/2000/svg" 7410 width="24" 7411 height="24" 7412 viewBox="0 0 24 24" 7413 fill="none" 7414 stroke="currentColor" 7415 stroke-width="2" 7416 stroke-linecap="round" 7417 stroke-linejoin="round" 7418 class="feather feather-chevron-down" 7419 > 7420 <polyline points="6 9 12 15 18 9"></polyline> 7421 </svg> 7422 7423</span> 7424 7425 </div> 7426 <div x-show=" accordion " x-cloak> 7427 <!-- snippets/component__icon.liquid --> 7428 7429 7430<span class="inline-flex align-middle " aria-hidden="true"> 7431 7432 <svg 7433 xmlns="http://www.w3.org/2000/svg" 7434 width="24" 7435 height="24" 7436 viewBox="0 0 24 24" 7437 fill="none" 7438 stroke="currentColor" 7439 stroke-width="2" 7440 stroke-linecap="round" 7441 stroke-linejoin="round" 7442 class="feather feather-chevron-up" 7443 > 7444 <polyline points="18 15 12 9 6 15"></polyline> 7445 </svg> 7446 7447</span> 7448 7449 </div> 7450 </button> 7451 7452 <div 7453 class="accordion-content 7454 color__bg-overlay-1 7455 " 7456 x-show=" accordion " 7457 7458 x-transition:enter="animation-100" 7459 x-transition:enter-start="opacity-0" 7460 x-transition:enter-end="opacity-100" 7461 x-transition:leave="animation-100" 7462 x-transition:leave-start="opacity-100" 7463 x-transition:leave-end="opacity-0" 7464 7465 x-cloak 7466 > 7467 7468 7469 7470 7471 <a href="/collections/single-origin" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7472 Single Origin 7473 </a> 7474 7475 <a href="/collections/blends" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7476 Blends 7477 </a> 7478 7479 <a href="/collections/decaf" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7480 Decaf 7481 </a> 7482 7483 <a href="/collections/organic" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7484 Organic 7485 </a> 7486 7487 <a href="/collections/european-favorites" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7488 European Favorites 7489 </a> 7490 7491 <a href="/collections/direct-trade" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7492 Fair/Direct Trade 7493 </a> 7494 7495 7496 </div> 7497</div> 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 <a href="/pages/coffee-subscriptions" class="flex flex-wrap px-2 py-8"> 7523 <div class="relative w-full max-w-sm mx-auto"> 7524 7525 <div class="relative w-full h-32 overflow-hidden rounded-lg"> 7526 <img src="//www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock_Mobile.jpg?crop=center&height=192&v=1762893831&width=400" alt="Tony's coffee products including coffee beans, packaging, and a cup of coffee on a dark surface." srcset="//www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock_Mobile.jpg?crop=center&height=168&v=1762893831&width=352 352w, //www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock_Mobile.jpg?crop=center&height=192&v=1762893831&width=400 400w" width="400" height="192" class="w-full h-full object-cover"> 7527 7528 <div class="absolute inset-0 flex flex-col items-start justify-center gap-2"> 7529 7530 <h3 class="px-4 text-xl font-bold text-left text-white drop-shadow-lg"> 7531 SUBSCRIBE & SAVE 7532 </h3> 7533 7534
7535 <span class="px-3 py-1 ml-4 text-sm font-medium text-white rounded-md" 7536 style="background-color: #d3324d;"> 7537 5% Off Every Order 7538 </span> 7539 7540 </div> 7541 </div> 7542 7543 </div> 7544 </a> 7545 7546 7547 7548 7549 7550 7551 </div> 7552 7553 7554 </div><div 7555 class="w-full" 7556 :class="{ 7557 'border--b-width color__border-divider-1': !flipbook, 7558 'absolute flex items-stretch top-0 h-full': flipbook 7559 }" 7560 x-data="{ flipbook: false }" 7561 @click.outside="flipbook = false;" 7562 x-cloak> 7563 7564 7565 <button type="button" class="flex items-center justify-between w-full px-4 py-4" 7566 x-show="!flipbook" 7567 @click="flipbook = ! flipbook; menu_nested = true;"> 7568 <span class="type__body"> 7569 Commercial 7570 </span> 7571 <div> 7572 <!-- snippets/component__icon.liquid --> 7573 7574 7575<span class="inline-flex align-middle " aria-hidden="true"> 7576 7577 <svg 7578 xmlns="http://www.w3.org/2000/svg" 7579 width="24" 7580 height="24"
7581 viewBox="0 0 24 24" 7582 fill="none" 7583 stroke="currentColor" 7584 stroke-width="2" 7585 stroke-linecap="round" 7586 stroke-linejoin="round" 7587 class="feather feather-chevron-right" 7588 > 7589 <polyline points="9 18 15 12 9 6"></polyline> 7590 </svg> 7591 7592</span> 7593 7594 </div> 7595 </button> 7596 <div 7597 class="w-full h-full absolute block items-stretch top-0 z-10 7598 color__bg-body color__text" 7599 x-show="flipbook" 7600 7601 x-transition:enter="animation-100" 7602 x-transition:enter-start="translate-x-24 opacity-0" 7603 x-transition:enter-end="translate-x-0 opacity-100" 7604 x-transition:leave="animation-100" 7605 x-transition:leave-start="translate-x-0 opacity-100" 7606 x-transition:leave-end="translate-x-24 opacity-0" 7607 7608 x-cloak> 7609 <div class="border--b-width sticky top-0 px-4 py-2 color__bg-body color__text color__border-divider-1"> 7610 <button 7611 class="btn btn--small 7612 btn btn--secondary" 7613 @click="flipbook = ! flipbook; menu_nested = false;"> 7614 <!-- snippets/component__icon.liquid --> 7615 7616 7617<span class="inline-flex align-middle " aria-hidden="true"> 7618 7619 <svg 7620 xmlns="http://www.w3.org/2000/svg" 7621 width="20" 7622 height="20"
7623 viewBox="0 0 24 24" 7624 fill="none" 7625 stroke="currentColor" 7626 stroke-width="2" 7627 stroke-linecap="round" 7628 stroke-linejoin="round" 7629 class="feather feather-chevron-left" 7630 > 7631 <polyline points="15 18 9 12 15 6"></polyline> 7632 </svg> 7633 7634</span> 7635 7636 Back 7637 </button> 7638 </div> 7639 7640 7641 7642 7643 7644 7645 7646 <!-- snippets/component__accordion.liquid --> 7647 7648<div 7649 id="" 7650 class=" 7651 border--b-width color__border-divider-1 7652 " 7653 7654 x-data=" 7655 { 7656 7657 accordion: false 7658 7659 } 7660 " 7661> 7662 <button 7663 type="button" 7664 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7665 @click=" 7666 7667 accordion = ! accordion 7668 7669 " 7670 > 7671 <div class="flex items-center"> 7672 7673 7674 <span class="type__body--bold text-left text-zinc-600"> 7675 Commercial Machines 7676 </span> 7677 </div> 7678 <div x-show=" !accordion "> 7679 <!-- snippets/component__icon.liquid --> 7680 7681 7682<span class="inline-flex align-middle " aria-hidden="true"> 7683 7684 <svg 7685 xmlns="http://www.w3.org/2000/svg" 7686 width="24" 7687 height="24"
7688 viewBox="0 0 24 24" 7689 fill="none" 7690 stroke="currentColor" 7691 stroke-width="2" 7692 stroke-linecap="round" 7693 stroke-linejoin="round" 7694 class="feather feather-chevron-down" 7695 > 7696 <polyline points="6 9 12 15 18 9"></polyline> 7697 </svg> 7698 7699</span> 7700 7701 </div> 7702 <div x-show=" accordion " x-cloak> 7703 <!-- snippets/component__icon.liquid --> 7704 7705 7706<span class="inline-flex align-middle " aria-hidden="true"> 7707 7708 <svg 7709 xmlns="http://www.w3.org/2000/svg" 7710 width="24" 7711 height="24" 7712 viewBox="0 0 24 24" 7713 fill="none" 7714 stroke="currentColor" 7715 stroke-width="2" 7716 stroke-linecap="round" 7717 stroke-linejoin="round" 7718 class="feather feather-chevron-up" 7719 > 7720 <polyline points="18 15 12 9 6 15"></polyline> 7721 </svg> 7722 7723</span> 7724 7725 </div> 7726 </button> 7727 7728 <div 7729 class="accordion-content 7730 color__bg-overlay-1 7731 " 7732 x-show=" accordion " 7733 7734 x-transition:enter="animation-100" 7735 x-transition:enter-start="opacity-0" 7736 x-transition:enter-end="opacity-100" 7737 x-transition:leave="animation-100" 7738 x-transition:leave-start="opacity-100" 7739 x-transition:leave-end="opacity-0" 7740 7741 x-cloak 7742 > 7743 7744 7745 7746 <a href="/collections/commercial-espresso-machines" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 7747 <span class="text-left type__body--bold text-zinc-600"> 7748 Shop All Commercial Machines <!-- snippets/component__icon.liquid --> 7749 7750 7751<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 7752 7753 <svg 7754 xmlns="http://www.w3.org/2000/svg" 7755 width="14" 7756 height="14"
7757 viewBox="0 0 24 24" 7758 fill="none" 7759 stroke="currentColor" 7760 stroke-width="2" 7761 stroke-linecap="round" 7762 stroke-linejoin="round" 7763 class="feather feather-arrow-right inline-block" 7764 > 7765 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 7766 </svg> 7767 7768</span> 7769 7770 </span> 7771 </a> 7772 7773 7774 <a href="/collections/commercial-semi-automatic" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7775 Semi-automatic 7776 </a> 7777 7778 <a href="/collections/commercial-superautomatic" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7779 Superautomatic 7780 </a> 7781 7782 7783 </div> 7784</div> 7785 7786 7787 7788 7789 7790 7791 7792 <!-- snippets/component__accordion.liquid --> 7793 7794<div 7795 id="" 7796 class=" 7797 border--b-width color__border-divider-1 7798 " 7799 7800 x-data=" 7801 { 7802 7803 accordion: false 7804 7805 } 7806 " 7807> 7808 <button 7809 type="button" 7810 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7811 @click=" 7812 7813 accordion = ! accordion 7814 7815 " 7816 > 7817 <div class="flex items-center"> 7818 7819
7820 <span class="type__body--bold text-left text-zinc-600"> 7821 Commercial Grinders 7822 </span> 7823 </div> 7824 <div x-show=" !accordion "> 7825 <!-- snippets/component__icon.liquid --> 7826 7827 7828<span class="inline-flex align-middle " aria-hidden="true"> 7829 7830 <svg 7831 xmlns="http://www.w3.org/2000/svg" 7832 width="24" 7833 height="24" 7834 viewBox="0 0 24 24" 7835 fill="none" 7836 stroke="currentColor" 7837 stroke-width="2" 7838 stroke-linecap="round" 7839 stroke-linejoin="round" 7840 class="feather feather-chevron-down" 7841 > 7842 <polyline points="6 9 12 15 18 9"></polyline> 7843 </svg> 7844 7845</span> 7846 7847 </div> 7848 <div x-show=" accordion " x-cloak> 7849 <!-- snippets/component__icon.liquid --> 7850 7851 7852<span class="inline-flex align-middle " aria-hidden="true"> 7853 7854 <svg 7855 xmlns="http://www.w3.org/2000/svg" 7856 width="24" 7857 height="24" 7858 viewBox="0 0 24 24" 7859 fill="none" 7860 stroke="currentColor" 7861 stroke-width="2" 7862 stroke-linecap="round" 7863 stroke-linejoin="round" 7864 class="feather feather-chevron-up" 7865 > 7866 <polyline points="18 15 12 9 6 15"></polyline> 7867 </svg> 7868 7869</span> 7870 7871 </div> 7872 </button> 7873 7874 <div 7875 class="accordion-content 7876 color__bg-overlay-1 7877 " 7878 x-show=" accordion " 7879 7880 x-transition:enter="animation-100" 7881 x-transition:enter-start="opacity-0" 7882 x-transition:enter-end="opacity-100" 7883 x-transition:leave="animation-100" 7884 x-transition:leave-start="opacity-100" 7885 x-transition:leave-end="opacity-0" 7886 7887 x-cloak 7888 > 7889 7890 7891 7892 <a href="/collections/commercial-grinders" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 7893 <span class="text-left type__body--bold text-zinc-600"> 7894 Shop All Commercial Grinders <!-- snippets/component__icon.liquid --> 7895 7896 7897<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 7898 7899 <svg 7900 xmlns="http://www.w3.org/2000/svg" 7901 width="14" 7902 height="14"
7903 viewBox="0 0 24 24" 7904 fill="none" 7905 stroke="currentColor" 7906 stroke-width="2" 7907 stroke-linecap="round" 7908 stroke-linejoin="round" 7909 class="feather feather-arrow-right inline-block" 7910 > 7911 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 7912 </svg> 7913 7914</span> 7915 7916 </span> 7917 </a> 7918 7919 7920 <a href="/collections/commercial-coffee-grinders" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7921 Coffee Grinders 7922 </a> 7923 7924 <a href="/collections/commercial-espresso-grinders" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 7925 Espresso Grinders 7926 </a> 7927 7928 7929 </div> 7930</div> 7931 7932 7933 7934 7935 7936 7937 7938 <!-- snippets/component__accordion.liquid --> 7939 7940<div 7941 id="" 7942 class=" 7943 border--b-width color__border-divider-1 7944 " 7945 7946 x-data=" 7947 { 7948 7949 accordion: false 7950 7951 } 7952 " 7953> 7954 <button 7955 type="button" 7956 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 7957 @click=" 7958 7959 accordion = ! accordion 7960 7961 " 7962 > 7963 <div class="flex items-center"> 7964 7965
7966 <span class="type__body--bold text-left text-zinc-600"> 7967 Commercial Brewing 7968 </span> 7969 </div> 7970 <div x-show=" !accordion "> 7971 <!-- snippets/component__icon.liquid --> 7972 7973 7974<span class="inline-flex align-middle " aria-hidden="true"> 7975 7976 <svg 7977 xmlns="http://www.w3.org/2000/svg" 7978 width="24" 7979 height="24" 7980 viewBox="0 0 24 24" 7981 fill="none" 7982 stroke="currentColor" 7983 stroke-width="2" 7984 stroke-linecap="round" 7985 stroke-linejoin="round" 7986 class="feather feather-chevron-down" 7987 > 7988 <polyline points="6 9 12 15 18 9"></polyline> 7989 </svg> 7990 7991</span> 7992 7993 </div> 7994 <div x-show=" accordion " x-cloak> 7995 <!-- snippets/component__icon.liquid --> 7996 7997 7998<span class="inline-flex align-middle " aria-hidden="true"> 7999 8000 <svg 8001 xmlns="http://www.w3.org/2000/svg" 8002 width="24" 8003 height="24" 8004 viewBox="0 0 24 24" 8005 fill="none" 8006 stroke="currentColor" 8007 stroke-width="2" 8008 stroke-linecap="round" 8009 stroke-linejoin="round" 8010 class="feather feather-chevron-up" 8011 > 8012 <polyline points="18 15 12 9 6 15"></polyline> 8013 </svg> 8014 8015</span> 8016 8017 </div> 8018 </button> 8019 8020 <div 8021 class="accordion-content 8022 color__bg-overlay-1 8023 " 8024 x-show=" accordion " 8025 8026 x-transition:enter="animation-100" 8027 x-transition:enter-start="opacity-0" 8028 x-transition:enter-end="opacity-100" 8029 x-transition:leave="animation-100" 8030 x-transition:leave-start="opacity-100" 8031 x-transition:leave-end="opacity-0" 8032 8033 x-cloak 8034 > 8035 8036 8037 8038 <a href="/collections/commercial-brewing" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 8039 <span class="text-left type__body--bold text-zinc-600"> 8040 Shop All Commercial Brewing <!-- snippets/component__icon.liquid --> 8041 8042 8043<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 8044 8045 <svg 8046 xmlns="http://www.w3.org/2000/svg" 8047 width="14" 8048 height="14"
8049 viewBox="0 0 24 24" 8050 fill="none" 8051 stroke="currentColor" 8052 stroke-width="2" 8053 stroke-linecap="round" 8054 stroke-linejoin="round" 8055 class="feather feather-arrow-right inline-block" 8056 > 8057 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 8058 </svg> 8059 8060</span> 8061 8062 </span> 8063 </a> 8064 8065 8066 <a href="/collections/commercial-drip-brewers" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 8067 Drip 8068 </a> 8069 8070 <a href="/collections/commercial-cold-brew-and-tea" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 8071 Cold Brew and Tea 8072 </a> 8073 8074 8075 </div> 8076</div> 8077 8078 8079 8080 8081 8082 8083 8084 <!-- snippets/component__accordion.liquid --> 8085 8086<div 8087 id="" 8088 class=" 8089 border--b-width color__border-divider-1 8090 " 8091 8092 x-data=" 8093 { 8094 8095 accordion: false 8096 8097 } 8098 " 8099> 8100 <button 8101 type="button" 8102 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 8103 @click=" 8104 8105 accordion = ! accordion 8106 8107 " 8108 > 8109 <div class="flex items-center"> 8110 8111
8112 <span class="type__body--bold text-left text-zinc-600"> 8113 Commercial Accessories 8114 </span> 8115 </div> 8116 <div x-show=" !accordion "> 8117 <!-- snippets/component__icon.liquid --> 8118 8119 8120<span class="inline-flex align-middle " aria-hidden="true"> 8121 8122 <svg 8123 xmlns="http://www.w3.org/2000/svg" 8124 width="24" 8125 height="24" 8126 viewBox="0 0 24 24" 8127 fill="none" 8128 stroke="currentColor" 8129 stroke-width="2" 8130 stroke-linecap="round" 8131 stroke-linejoin="round" 8132 class="feather feather-chevron-down" 8133 > 8134 <polyline points="6 9 12 15 18 9"></polyline> 8135 </svg> 8136 8137</span> 8138 8139 </div> 8140 <div x-show=" accordion " x-cloak> 8141 <!-- snippets/component__icon.liquid --> 8142 8143 8144<span class="inline-flex align-middle " aria-hidden="true"> 8145 8146 <svg 8147 xmlns="http://www.w3.org/2000/svg" 8148 width="24" 8149 height="24" 8150 viewBox="0 0 24 24" 8151 fill="none" 8152 stroke="currentColor" 8153 stroke-width="2" 8154 stroke-linecap="round" 8155 stroke-linejoin="round" 8156 class="feather feather-chevron-up" 8157 > 8158 <polyline points="18 15 12 9 6 15"></polyline> 8159 </svg> 8160 8161</span> 8162 8163 </div> 8164 </button> 8165 8166 <div 8167 class="accordion-content 8168 color__bg-overlay-1 8169 " 8170 x-show=" accordion " 8171 8172 x-transition:enter="animation-100" 8173 x-transition:enter-start="opacity-0" 8174 x-transition:enter-end="opacity-100" 8175 x-transition:leave="animation-100" 8176 x-transition:leave-start="opacity-100" 8177 x-transition:leave-end="opacity-0" 8178 8179 x-cloak 8180 > 8181 8182 8183 8184 <a href="/collections/commercial-accessories" class="flex items-center justify-between w-full px-4 py-4 pl-6 no-underline type__body--bold"> 8185 <span class="text-left type__body--bold text-zinc-600"> 8186 Shop All Commercial Accessories <!-- snippets/component__icon.liquid --> 8187 8188 8189<span class="inline-flex align-middle fill-zinc-600 ml-0.5 mb-0.5" aria-hidden="true"> 8190 8191 <svg 8192 xmlns="http://www.w3.org/2000/svg" 8193 width="14" 8194 height="14"
8195 viewBox="0 0 24 24" 8196 fill="none" 8197 stroke="currentColor" 8198 stroke-width="2" 8199 stroke-linecap="round" 8200 stroke-linejoin="round" 8201 class="feather feather-arrow-right inline-block" 8202 > 8203 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 8204 </svg> 8205 8206</span> 8207 8208 </span> 8209 </a> 8210 8211 8212 <a href="/collections/commercial-maintenance" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 8213 Maintenance 8214 </a> 8215 8216 <a href="/collections/commercial-cleaning-supplies" class="type__body border--t-width color__border-divider-1 flex items-center justify-between w-full px-4 py-4 pl-8 no-underline"> 8217 Cleaning Supplies 8218 </a> 8219 8220 8221 </div> 8222</div> 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 <div 8244 class="flex flex-wrap px-4 py-8 " 8245 > 8246 <div class="p-4 rounded-md color__bg-scg-blue h-fit"> 8247 <h3 class="color__primary">Get started with a free consultation!</h3> 8248 <div class="color__primary"> 8249 <p>Weâll reach out to you to assist with product selection, troubleshooting, and to answer any general questions.</p> 8250 </div> 8251 <a href="/pages/commercial" 8252 class="btn"> 8253 Learn More 8254 </a> 8255 </div> 8256 8257 <div class="pt-4"> 8258 <h4 class="text-lg font-bold !mb-1">Need Assistance?</h4> 8259 <div class="flex flex-col items-start justify-start"> 8260 <div class="flex flex-col px-3 mt-2 "> 8261 <span class="flex items-center"> 8262 <!-- snippets/component__icon.liquid --> 8263 8264 8265<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 8266 8267 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512"> 8268 <path d="M493.09 351.3L384.7 304.8a31.36 31.36 0 0 0-36.5 8.9l-44.1 53.9A350 350 0 0 1 144.5 208l53.9-44.1a31.35 31.35 0 0 0 8.9-36.49l-46.5-108.5A31.33 31.33 0 0 0 125 .81L24.2 24.11A31.05 31.05 0 0 0 0 54.51C0 307.8 205.3 512 457.49 512A31.23 31.23 0 0 0 488 487.7L511.19 387a31.21 31.21 0 0 0-18.1-35.7zM456.89 480C222.4 479.7 32.3 289.7 32.1 55.21l99.6-23 46 107.39-72.8 59.5C153.3 302.3 209.4 358.6 313 407.2l59.5-72.8 107.39 46z"/> 8269 </svg> 8270 8271</span> 8272 8273 Call us at <a href="tel:8663724734" class="color__text-scg-blue ml-2 !no-underline">866-372-4734</a> 8274 </span> 8275 <span class="ml-6 text-sm">8am - 5pm PST, Mon - Fri</span> 8276 </div> 8277 8278 <div class="px-3 mt-2"> 8279 <a href="/policies/contact-information" class="color__text-scg-blue flex items-center !no-underline"> 8280 <!-- snippets/component__icon.liquid --> 8281 8282 8283<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 8284 8285 <svg 8286 xmlns="http://www.w3.org/2000/svg" 8287 width="18" 8288 height="18"
8289 viewBox="0 0 24 24" 8290 fill="none" 8291 stroke="currentColor" 8292 stroke-width="2" 8293 stroke-linecap="round" 8294 stroke-linejoin="round" 8295 class="feather feather-message-circle" 8296 > 8297 <path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path> 8298 </svg> 8299 8300</span> 8301 8302 <span>Live Chat</span> 8303 </a> 8304 </div> 8305 8306 <div class="px-3 mt-2"> 8307 <a href="mailto:[email protected]" class="color__text-scg-blue flex items-center !no-underline"> 8308 <!-- snippets/component__icon.liquid --> 8309 8310 8311<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 8312 8313 <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 512 512"> 8314 <path d="M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM48 96h416c8.8 0 16 7.2 16 16v41.4c-21.9 18.5-53.2 44-150.6 121.3-16.9 13.4-50.2 45.7-73.4 45.3-23.2.4-56.6-31.9-73.4-45.3C85.2 197.4 53.9 171.9 32 153.4V112c0-8.8 7.2-16 16-16zm416 320H48c-8.8 0-16-7.2-16-16V195c22.8 18.7 58.8 47.6 130.7 104.7 20.5 16.4 56.7 52.5 93.3 52.3 36.4.3 72.3-35.5 93.3-52.3 71.9-57.1 107.9-86 130.7-104.7v205c0 8.8-7.2 16-16 16z"/> 8315 </svg> 8316 8317</span> 8318 8319 <span>Email Us</span> 8320 </a> 8321 </div> 8322 8323 <div class="px-3 mt-2"> 8324 <a href="/blogs/scg-blog" class="color__text-scg-blue flex items-center !no-underline"> 8325 <!-- snippets/component__icon.liquid --> 8326 8327 8328<span class="inline-flex align-middle mr-2 color__text" aria-hidden="true"> 8329 8330 <svg 8331 xmlns="http://www.w3.org/2000/svg" 8332 width="22" 8333 height="14"
8334 viewBox="0 0 576 512" 8335 stroke="currentColor" 8336 stroke-width="2" 8337 stroke-linecap="round" 8338 stroke-linejoin="round" 8339 class="feather feather-blog" 8340 > 8341 <path d="M561.91 0C549.44 0 406.51 6.49 320 56.89 233.49 6.49 90.56 0 78.09 0 35.03 0 0 34.34 0 76.55v313.72c0 40.73 32.47 74.3 73.92 76.41 36.78 1.91 128.81 9.5 187.73 38.69 8.19 4.05 17.25 6.29 26.34 6.58v.05h64.02v-.05c9.09-.29 18.15-2.53 26.34-6.58 58.92-29.19 150.95-36.78 187.73-38.69C607.53 464.57 640 431 640 390.27V76.55C640 34.34 604.97 0 561.91 0zM296 438.15c0 11.09-10.96 18.91-21.33 14.96-64.53-24.54-153.96-32.07-198.31-34.38-15.9-.8-28.36-13.3-28.36-28.46V76.55C48 60.81 61.5 48 78.06 48c19.93.1 126.55 7.81 198.53 40.49 11.63 5.28 19.27 16.66 19.28 29.44L296 224v214.15zm296-47.88c0 15.16-12.46 27.66-28.36 28.47-44.35 2.3-133.78 9.83-198.31 34.38-10.37 3.94-21.33-3.87-21.33-14.96V224l.14-106.08c.02-12.78 7.65-24.15 19.28-29.44C435.4 55.81 542.02 48.1 561.94 48 578.5 48 592 60.81 592 76.55v313.72z"/> 8342 </svg> 8343 8344</span> 8345 8346 <span>Blog</span> 8347 </a> 8348 </div> 8349 </div> 8350 </div> 8351 </div> 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 </div> 8364 8365 8366 </div><div 8367 class="w-full" 8368 :class="{ 8369 'border--b-width color__border-divider-1': !flipbook, 8370 'absolute flex items-stretch top-0 h-full': flipbook 8371 }" 8372 x-data="{ flipbook: false }" 8373 @click.outside="flipbook = false;" 8374 x-cloak> 8375 8376 8377 <a href="/collections/sale" class="type__body flex items-center justify-between w-full px-4 py-4 no-underline 8378 8379 "> 8380 <span class="type__body" 8381 x-data="{ linkTitle: 'sale' }" 8382 :class="{ '!text-scg-red': linkTitle.includes('sale') || linkTitle.includes('deal')}" > 8383 SALE 8384 </span> 8385 </a> 8386 8387 8388 </div><div class="flex flex-col mt-8"> 8389 <div class="w-full border--b-width color__border-divider-1"> 8390 <a 8391 class="type__nav flex items-center w-full px-4 py-4 !no-underline" 8392 href="https://account.seattlecoffeegear.com" 8393 rel="nofollow" 8394 title="Log in"> 8395 <!-- snippets/component__icon.liquid --> 8396 8397 8398<span class="inline-flex align-middle " aria-hidden="true"> 8399 8400 <svg 8401 xmlns="http://www.w3.org/2000/svg" 8402 width="18" 8403 height="18"
8404 viewBox="0 0 24 24" 8405 fill="none" 8406 stroke="currentColor" 8407 stroke-width="2" 8408 stroke-linecap="round" 8409 stroke-linejoin="round" 8410 class="feather feather-user" 8411 > 8412 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle> 8413 </svg> 8414 8415</span> 8416 8417 <span class="pl-2 type--small"> 8418 Account 8419 </span> 8420 </a> 8421 </div> 8422 8423 <div class="w-full border--b-width color__border-divider-1"> 8424 <a 8425 class="type__nav flex items-center w-full px-4 py-4 !no-underline" 8426 href="https://seattlecoffeegear.com/pages/resource-hub" 8427 title="Resource Hub"> 8428 <!-- snippets/component__icon.liquid --> 8429 8430 8431<span class="inline-flex align-middle " aria-hidden="true"> 8432 8433 <svg 8434 xmlns="http://www.w3.org/2000/svg" 8435 width="18" 8436 height="18" 8437 viewBox="0 0 24 24" 8438 fill="none" 8439 stroke="currentColor" 8440 stroke-width="2" 8441 stroke-linecap="round" 8442 stroke-linejoin="round" 8443 class="feather feather-help-circle" 8444 > 8445 <circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line> 8446 </svg> 8447 8448</span> 8449 8450 <span class="pl-2 type--small"> 8451 Resource Hub 8452 </span> 8453 </a> 8454 </div> 8455 8456 <div class="w-full border--b-width color__border-divider-1"> 8457 <a 8458 class="type__nav flex items-center w-full px-4 py-4 !no-underline" 8459 href="https://seattlecoffeegear.com/pages/learn-articles" 8460 title="Blog Articles"> 8461 <!-- snippets/component__icon.liquid --> 8462 8463 8464<span class="inline-flex align-middle " aria-hidden="true"> 8465 8466 <svg 8467 xmlns="http://www.w3.org/2000/svg" 8468 width="22" 8469 height="14"
8470 viewBox="0 0 576 512" 8471 stroke="currentColor" 8472 stroke-width="2" 8473 stroke-linecap="round" 8474 stroke-linejoin="round" 8475 class="feather feather-blog" 8476 > 8477 <path d="M561.91 0C549.44 0 406.51 6.49 320 56.89 233.49 6.49 90.56 0 78.09 0 35.03 0 0 34.34 0 76.55v313.72c0 40.73 32.47 74.3 73.92 76.41 36.78 1.91 128.81 9.5 187.73 38.69 8.19 4.05 17.25 6.29 26.34 6.58v.05h64.02v-.05c9.09-.29 18.15-2.53 26.34-6.58 58.92-29.19 150.95-36.78 187.73-38.69C607.53 464.57 640 431 640 390.27V76.55C640 34.34 604.97 0 561.91 0zM296 438.15c0 11.09-10.96 18.91-21.33 14.96-64.53-24.54-153.96-32.07-198.31-34.38-15.9-.8-28.36-13.3-28.36-28.46V76.55C48 60.81 61.5 48 78.06 48c19.93.1 126.55 7.81 198.53 40.49 11.63 5.28 19.27 16.66 19.28 29.44L296 224v214.15zm296-47.88c0 15.16-12.46 27.66-28.36 28.47-44.35 2.3-133.78 9.83-198.31 34.38-10.37 3.94-21.33-3.87-21.33-14.96V224l.14-106.08c.02-12.78 7.65-24.15 19.28-29.44C435.4 55.81 542.02 48.1 561.94 48 578.5 48 592 60.81 592 76.55v313.72z"/> 8478 </svg> 8479 8480</span> 8481 8482 <span class="pl-2 type--small"> 8483 Blog Articles 8484 </span> 8485 </a> 8486 </div> 8487 8488 8489 </div> 8490 8491 </section><aside class="sticky bottom-0 color__bg-body color__text" x-show="!menu_nested"> 8492 <div class="flex flex-wrap"> 8493 8494 <div class="border--t-width color__border-divider-1 w-full"> 8495 <div class="flex flex-wrap px-4 pt-2"> 8496 8497 8498 8499 </div> 8500 </div> 8501 8502 <div class="border--t-width color__border-divider-1 w-full"> 8503 <p class="px-4 py-2 m-0 type--small"></p> 8504 </div> 8505 8506 </div> 8507 </aside> 8508 8509 8510 </div> 8511 </div> 8512 </div> 8513</section> 8514 8515 8516 8517</div> 8518 8519 <!-- BEGIN sections: resource-nav-group --> 8520<div id="shopify-section-sections--26732957827379__resource_nav" class="shopify-section shopify-section-group-resource-nav-group"><!-- sections/resource-nav.liquid --> 8521 8522<nav 8523 class="color__bg-tertiary color__tertiary border-b" 8524 aria-label="Resource navigation" 8525 > 8526 <div class="window--wide"> 8527 <div class="flex flex-col md:flex-row md:items-center gap-3 pt-2 pb-3 md:py-2"> 8528 <ul 8529 id="resource-nav-tabs" 8530 role="menubar" 8531 class=" 8532 flex flex-nowrap overflow-x-auto whitespace-nowrap list-none p-0 m-0 8533 -mx-4 px-4 md:mx-0 md:px-0 flex-1 8534 pb-2 md:pb-0 8535 md:justify-center 8536 md:order-1 8537 " 8538 ><li role="none" class="shrink-0" > 8539 <a 8540 href="/pages/resource-hub" 8541 role="menuitem" 8542 8543 class=" 8544 inline-block px-4 py-3 text-sm no-underline 8545 opacity-75 hover:opacity-100 8546 " 8547 style="font-family: proxima-nova, sans-serif;" 8548 > 8549 SCG Resource Hub 8550 </a> 8551 </li><li role="none" class="shrink-0" > 8552 <a 8553 href="/blogs/learning-center" 8554 role="menuitem" 8555 8556 class=" 8557 inline-block px-4 py-3 text-sm no-underline 8558 opacity-75 hover:opacity-100 8559 " 8560 style="font-family: proxima-nova, sans-serif;" 8561 > 8562 Learning Center 8563 </a> 8564 </li><li role="none" class="shrink-0" > 8565 <a 8566 href="/pages/brand-resources" 8567 role="menuitem" 8568 8569 class=" 8570 inline-block px-4 py-3 text-sm no-underline 8571 opacity-75 hover:opacity-100 8572 " 8573 style="font-family: proxima-nova, sans-serif;" 8574 > 8575 Brand Guides 8576 </a> 8577 </li><li role="none" class="shrink-0" > 8578 <a 8579 href="/pages/product-resource" 8580 role="menuitem" 8581 8582 class=" 8583 inline-block px-4 py-3 text-sm no-underline 8584 opacity-75 hover:opacity-100 8585 " 8586 style="font-family: proxima-nova, sans-serif;" 8587 > 8588 User Manuals 8589 </a> 8590 </li><li role="none" class="shrink-0" > 8591 <a 8592 href="/pages/learn-articles" 8593 role="menuitem" 8594 aria-current="page" 8595 class=" 8596 inline-block px-4 py-3 text-sm no-underline 8597 font-semibold border-b-2 border-current 8598 " 8599 style="font-family: proxima-nova, sans-serif;" 8600 > 8601 Blog 8602 </a> 8603 </li><li role="none" class="shrink-0" > 8604 <a 8605 href="/policies/contact-information" 8606 role="menuitem" 8607 8608 class=" 8609 inline-block px-4 py-3 text-sm no-underline 8610 opacity-75 hover:opacity-100 8611 " 8612 style="font-family: proxima-nova, sans-serif;" 8613 > 8614 Customer Support 8615 </a> 8616 </li><li role="none" class="shrink-0" > 8617 <a 8618 href="/pages/classes" 8619 role="menuitem" 8620 8621 class=" 8622 inline-block px-4 py-3 text-sm no-underline 8623 opacity-75 hover:opacity-100 8624 " 8625 style="font-family: proxima-nova, sans-serif;" 8626 > 8627 Classes 8628 </a> 8629 </li></ul></div> 8630 </div> 8631 </nav> 8632 8633
8633<script> 8634 (function () { 8635 var nav = document.getElementById('resource-nav-tabs'); 8636 if (!nav) return; 8637 var active = nav.querySelector('a[aria-current="page"]'); 8638 if (!active) return; 8639 if (nav.scrollWidth <= nav.clientWidth) return; 8640 var navRect = nav.getBoundingClientRect(); 8641 var activeRect = active.getBoundingClientRect(); 8642 nav.scrollLeft = activeRect.left - navRect.left - (nav.clientWidth - active.offsetWidth) / 2; 8643 })(); 8644 </script>
8644 8645</div> 8646<!-- END sections: resource-nav-group --> 8647 8648 <main id="root" role="main"> 8649 <div id="shopify-section-template--21732448698675__breadcrumb_gyzaX8" class="shopify-section"><!-- sections/breadcrumb.liquid --> 8650 8651<section 8652 class="color__bg-body color__text" 8653 style=" 8654 padding-top:20px; 8655 padding-bottom:20px; 8656 " 8657> 8658 <div 8659 class=" 8660 window--wide 8661 flex justify-center 8662 " 8663 > 8664 <div class="w-full"> 8665 8666 <!-- snippets/page__breadcrumb.liquid --> 8667 8668 8669<nav 8670 class="type--smaller" 8671 role="navigation" 8672 aria-label="breadcrumbs" 8673> 8674 <a 8675 href="/" 8676 title="Home" 8677 class="text-zinc-400 no-underline" 8678 >Home</a> 8679 8680 8681 8682 <span class="text-zinc-400" aria-hidden="true">/</span> 8683 <span class="text-cyan-700">The Best Espresso Machine Reviews And Coffee News</span> 8684</nav> 8685 8686 8687 8688 8689 </div> 8690 </div> 8691</section> 8692 8693 8694</div><div id="shopify-section-template--21732448698675__main" class="shopify-section"><!-- sections/page__main.liquid --> 8695 8696 8697<section 8698 class="color__bg-body color__text" 8699 style=" 8700 padding-top:0px; 8701 padding-bottom:0px; 8702 " 8703> 8704 <div 8705 class=" 8706 window--wide 8707 flex justify-center 8708 " 8709 > 8710 8711 <div class="w-full"> 8712 <h1> 8713 The Best Espresso Machine Reviews And Coffee News 8714 </h1> 8715 <div class="rte"> 8716 8717 </div> 8718 </div> 8719 </div> 8720</section> 8721 8722 8723</div><div id="shopify-section-template--21732448698675__article_grid_new_4nAyeG" class="shopify-section"><!-- sections/article-grid-new.liquid --> 8724 8725 8726<section 8727 class=" 8728 8729 color__bg-body color__text 8730 color__border-divider-1 8731 border--b-width 8732 " 8733> 8734 <div 8735 class="window--wide" 8736 style=" 8737 padding-top:0px; 8738 padding-bottom:0px; 8739 " 8740 > 8741 8742 8743 <div class="flex flex-col md:flex-row gap-8"> 8744 8745 8746 <div class="md:w-3/4 min-w-0"> 8747 8748 8749 8750 8751 8752 <a href="/blogs/scg-blog/rancilio-silvia-pro-x-vs-rocket-appartamento-tca" class="block relative w-full overflow-hidden no-underline hover:no-underline mb-4 8753 border--radius border--width color__border-divider-1 8754 "> 8755 <div class="aspect-w-16 aspect-h-9 aspect-video w-full color__bg-body after:color__bg-body color__text after:color__text"> 8756 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=1200" alt="Rocket Appartamento TCA and Rancilio Silvia Pro X espresso machines pulling shots side by side" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=1200 1200w" width="1200" height="786" loading="eager" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text" sizes="(min-width: 1024px) 75vw, 100vw"> 8757</div> 8758 </a> 8759 8760 8761<h2 class="type__heading--section-heading mb-4 uppercase font-extrabold text-4xl"> 8762 The Latest from the coffee experts at SCG 8763 </h2> 8764 <a href="/blogs/scg-blog/rancilio-silvia-pro-x-vs-rocket-appartamento-tca" class="block no-underline hover:no-underline group mb-8 md:mb-12 8765 8766 "> 8767 <h3 class="type--base type__body--bare mb-0.5 font-semibold !leading-tight "> 8768 Rancilio Silvia Pro X vs. Rocket Appartamento TCA: Which One's Right for You? 8769 </h3> 8770 8771
8772 <span class="type--small mb-1 flex w-full">Two well-regarded Italian machines at a similar price, and neither one wins on pap...</span> 8773 8774 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 8775 8776 <li class="type--small inline-block last:after:hidden 8777 after:content-['\00B7'] 8778 "> 8779 Sep 24, 2026 8780 </li> 8781 8782 8783 </ul> 8784 </a> 8785 8786 8787 8788 8789 8790 8791 8792 8793 <div 8794 class=" 8795 flex mt-8 md:mt-12 8796 8797 justify-start 8798 8799 " 8800 > 8801 <a href="https://www.seattlecoffeegear.com/blogs/scg-blog" class="btn btn--secondary"> 8802 View all articles 8803 </a> 8804 </div> 8805 8806 8807 </div> 8808 8809 8810 8811 <div class="md:w-1/4 shrink-0"> 8812 8813 <div x-data="{ open: true }"> 8814 <button 8815 @click="open = !open" 8816 class="w-full flex items-center justify-between mb-4 md:pointer-events-none" 8817 > 8818 <p class="type__heading--section-heading text-base font-semibold uppercase tracking-wide m-0">Recent Posts</p> 8819 <span class="md:hidden text-xl font-normal leading-none select-none" x-text="open ? 'â' : '+'"></span> 8820 </button> 8821 <div 8822 x-show="open" 8823 x-cloak 8824 x-transition:enter="transition ease-out duration-200" 8825 x-transition:enter-start="opacity-0" 8826 x-transition:enter-end="opacity-100" 8827 x-transition:leave="transition ease-in duration-150" 8828 x-transition:leave-start="opacity-100" 8829 x-transition:leave-end="opacity-0" 8830 > 8831 <div class="flex flex-col gap-4"> 8832 8833 8834 8835 8836 8837 <a 8838 href="/blogs/scg-blog/the-top-three-semi-automatic-espresso-machines-of-2026" 8839 class="flex flex-row gap-3 items-start no-underline hover:no-underline group border border-gray-200 rounded-md p-2" 8840 > 8841 <div class="w-16 h-16 shrink-0 overflow-hidden rounded color__bg-body after:color__bg-body color__text after:color__text"><img src="//www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=200" alt="Top three semi-automatic espresso machines from Breville, Fellow, and Diletta on display" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=200 200w" width="200" height="131" loading="lazy" class="w-full h-full object-cover"> 8842</div> 8843 <span class="type--base font-semibold leading-snug group-hover:underline"> 8844 The Top Three Semi-Automatic Espresso Machines of 2026 (Plus an Honorable Mention) 8845 </span> 8846 </a> 8847 8848 8849 <a 8850 href="/blogs/scg-blog/the-espresso-machine-features-you-actually-want" 8851 class="flex flex-row gap-3 items-start no-underline hover:no-underline group border border-gray-200 rounded-md p-2" 8852 > 8853 <div class="w-16 h-16 shrink-0 overflow-hidden rounded color__bg-body after:color__bg-body color__text after:color__text"><img src="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=200" alt="Espresso machines and grinders on display at a Seattle Coffee Gear showroom counter" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=200 200w" width="200" height="131" loading="lazy" class="w-full h-full object-cover"> 8854</div>
8855 <span class="type--base font-semibold leading-snug group-hover:underline"> 8856 The Espresso Machine Features You Actually Want (Here's What Our Testing Bench Says) 8857 </span> 8858 </a> 8859 8860 8861 <a 8862 href="/blogs/scg-blog/how-does-an-espresso-machine-work-a-no-jargon-guide-to-whats-happening-inside" 8863 class="flex flex-row gap-3 items-start no-underline hover:no-underline group border border-gray-200 rounded-md p-2" 8864 > 8865 <div class="w-16 h-16 shrink-0 overflow-hidden rounded color__bg-body after:color__bg-body color__text after:color__text"><img src="//www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=200" alt="Diletta Bello espresso machine brewing a shot beside a Eureka Libra grinder" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=200 200w" width="200" height="131" loading="lazy" class="w-full h-full object-cover"> 8866</div> 8867 <span class="type--base font-semibold leading-snug group-hover:underline"> 8868 How Does an Espresso Machine Work? A No-Jargon Guide to What's Happening Inside 8869 </span> 8870 </a> 8871 8872 </div> 8873 </div> 8874 </div> 8875 8876 <div class="border-t color__border-divider-1 mt-6 mb-6"></div> 8877 8878 <div x-data="{ open: window.matchMedia('(min-width: 768px)').matches }"> 8879 <button 8880 @click="open = !open" 8881 class="w-full flex items-center justify-between mb-4 md:pointer-events-none" 8882 > 8883 <p class="type__heading--section-heading text-base font-semibold uppercase tracking-wide m-0">Categories</p> 8884 <span class="md:hidden text-xl font-normal leading-none select-none" x-text="open ? 'â' : '+'"></span> 8885 </button> 8886 <div 8887 x-show="open" 8888 x-cloak 8889 x-transition:enter="transition ease-out duration-200" 8890 x-transition:enter-start="opacity-0" 8891 x-transition:enter-end="opacity-100" 8892 x-transition:leave="transition ease-in duration-150" 8893 x-transition:leave-start="opacity-100" 8894 x-transition:leave-end="opacity-0" 8895 class="mb-6" 8896 > 8897 <ul class="flex flex-col gap-3 list-none"> 8898 8899 8900 <li > 8901 <a 8902 href="/blogs/scg-blog" 8903 class="text-xl font-normal leading-snug text-black" 8904 > 8905 All Articles 8906 </a> 8907 </li> 8908 8909 8910 8911 <li > 8912 <a 8913 href="/blogs/scg-blog/tagged/barista-recipes" 8914 class="text-xl font-normal leading-snug text-black" 8915 > 8916 Barista Recipes 8917 </a> 8918 </li> 8919 8920 8921 8922 <li > 8923 <a 8924 href="/blogs/scg-blog/tagged/coffee" 8925 class="text-xl font-normal leading-snug text-black" 8926 > 8927 Coffee 8928 </a> 8929 </li> 8930 8931 8932 8933 <li > 8934 <a 8935 href="/blogs/scg-blog/tagged/education" 8936 class="text-xl font-normal leading-snug text-black" 8937 > 8938 Education 8939 </a> 8940 </li> 8941 8942 8943 8944 <li > 8945 <a 8946 href="/blogs/scg-blog/tagged/news" 8947 class="text-xl font-normal leading-snug text-black" 8948 > 8949 News 8950 </a> 8951 </li> 8952 8953 8954 8955 <li > 8956 <a 8957 href="/blogs/scg-blog/tagged/reviews" 8958 class="text-xl font-normal leading-snug text-black" 8959 > 8960 Reviews 8961 </a> 8962 </li> 8963 8964 8965 </ul> 8966 </div> 8967 </div> 8968 8969 </div> 8970 8971 8972 </div> 8973 8974 </div> 8975</section> 8976 8977 8978</div><div id="shopify-section-template--21732448698675__38b2ee91-d0fa-4
8978169-ae2f-f69e15fa6aa7" class="shopify-section"><!-- sections/article-tagged-grid.liquid --> 8979 8980 8981<section 8982 class=" 8983 8984 color__bg-body color__text 8985 color__border-divider-1 8986 border--b-width 8987 " 8988> 8989 <div 8990 class="window--wide" 8991 style=" 8992 padding-top:40px; 8993 padding-bottom:40px; 8994 " 8995 ><div 8996 class=" 8997 flex flex-row flex-wrap items-end gap-2 pb-4 8998 justify-between 8999 9000 9001 opacity-0 js:animation animation-300 9002 9003 9004 " 9005 9006 data-delay="100" 9007 data-replace=" 9008 { 9009 'opacity-0' : 'opacity-100' 9010 } 9011 " 9012 9013 > 9014 <div class="w-full max-w-prose md:w-auto"><h3 class="type__heading--section-heading mb-1">Barista Recipes</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 9015 Savor Every Sip: Delightful Coffee-Inspired Recipes to Elevate Your Brewing Journey 9016 </div><a 9017 href="/blogs/scg-blog/tagged/barista-recipes" 9018 class=" 9019 flex flex-row items-center 9020 text-base 9021 font-normal 9022 leading-snug 9023 text-cyan-700 9024 underline 9025 " 9026 > 9027 <div>Browse All Barista Recipes</div><!-- snippets/component__icon.liquid --> 9028 9029 9030<span class="inline-flex align-middle ml-1" aria-hidden="true"> 9031 9032 <svg 9033 width="18" 9034 height="18"
9035 viewBox="0 0 15 16" 9036 fill="none" 9037 xmlns="http://www.w3.org/2000/svg" 9038 > 9039 <g id="Arrow"> 9040 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 9041 <g id="np_arrow-right_888647_000000 copy"> 9042 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 9043 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 9044 </g> 9045 </g> 9046 </svg> 9047 9048</span> 9049 9050 </a> 9051 </div> 9052 </div> 9053 <div 9054 class=" 9055 grid 9056 md:grid-cols-4 9057 grid grid-cols-2 9058 " 9059 style=" 9060 column-gap: 8px; 9061 row-gap: 12.0px; 9062 " 9063 > 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 <!-- snippets/component__blog-item.liquid --> 9284 9285 9286<a 9287 href="/blogs/scg-blog/maple-pecan-iced-latte-the-fall-drink-to-skip-the-drive-thru-line-for" 9288 class=" 9289 group relative w-full no-underline hover:no-underline 9290 9291 " 9292> 9293 <div 9294 class="relative mb-4 block w-full overflow-hidden" 9295 > 9296 <div 9297 class=" 9298 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 9299 color__bg-body after:color__bg-body color__text after:color__text 9300 9301 border--radius overflow-hidden 9302 border--width color__border-divider-1 9303 9304 " 9305 > 9306 9307 9308 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&width=1200" alt="Maple Pecan Iced Latte: The Fall Drink to Skip the Drive-Thru Line For - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 9309 </div> 9310 9311 <div 9312 class=" 9313 block whitespace-normal no-underline hover:no-underline 9314 9315 " 9316 > 9317 9318 <div class="mb-2 flex gap-2">
9319 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 9320 <span class="type--smaller">K</span> 9321 </span> 9322 <span class="type--small opacity-75"> 9323 Kelli R 9324 </span> 9325 </div> 9326 9327 <h3 9328 class=" 9329 type--base type__body--bare mb-0.5 font-semibold !leading-tight 9330 9331 " 9332 > 9333 Maple Pecan Iced Latte: The Fall Drink to Skip the Drive-Thru Line For 9334 </h3> 9335 9336 9337 <span class="type--small mb-1 flex w-full"> 9338 This maple pecan iced latte layers a double shot over cold milk, then tops it with... 9339 </span> 9340 9341 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 9342 9343 <li 9344 class=" 9345 type--small inline-block last:after:hidden 9346 after:content-['\00B7'] 9347 " 9348 > 9349 Sep 11, 2026 9350 </li> 9351 9352 9353 </ul> 9354 </div> 9355</a> 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 <!-- snippets/component__blog-item.liquid --> 9504 9505 9506<a 9507 href="/blogs/scg-blog/espresso-tonic-bomb-the-fizzy-coffee-to-wake-you-up" 9508 class=" 9509 group relative w-full no-underline hover:no-underline 9510 9511 " 9512> 9513 <div 9514 class="relative mb-4 block w-full overflow-hidden" 9515 > 9516 <div 9517 class=" 9518 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 9519 color__bg-body after:color__bg-body color__text after:color__text 9520 9521 border--radius overflow-hidden 9522 border--width color__border-divider-1 9523 9524 " 9525 > 9526 9527 9528 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&width=1200" alt="Espresso Tonic Bomb: The Fizzy Coffee to Wake You Up - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 9529 </div> 9530 9531 <div 9532 class=" 9533 block whitespace-normal no-underline hover:no-underline 9534 9535 " 9536 > 9537 9538 <div class="mb-2 flex gap-2">
9539 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 9540 <span class="type--smaller">K</span> 9541 </span> 9542 <span class="type--small opacity-75"> 9543 Kelli R 9544 </span> 9545 </div> 9546 9547 <h3 9548 class=" 9549 type--base type__body--bare mb-0.5 font-semibold !leading-tight 9550 9551 " 9552 > 9553 Espresso Tonic Bomb: The Fizzy Coffee to Wake You Up 9554 </h3> 9555 9556 9557 <span class="type--small mb-1 flex w-full"> 9558 The espresso tonic bomb is a salted-lime coffee drink that turns a simple shot int... 9559 </span> 9560 9561 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 9562 9563 <li 9564 class=" 9565 type--small inline-block last:after:hidden 9566 after:content-['\00B7'] 9567 " 9568 > 9569 Aug 28, 2026 9570 </li> 9571 9572 9573 </ul> 9574 </div> 9575</a> 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 <!-- snippets/component__blog-item.liquid --> 9736 9737 9738<a 9739 href="/blogs/scg-blog/jittery-cola-float-a-true-caffeine-upgraded-treat" 9740 class=" 9741 group relative w-full no-underline hover:no-underline 9742 9743 " 9744> 9745 <div 9746 class="relative mb-4 block w-full overflow-hidden" 9747 > 9748 <div 9749 class=" 9750 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 9751 color__bg-body after:color__bg-body color__text after:color__text 9752 9753 border--radius overflow-hidden 9754 border--width color__border-divider-1 9755 9756 " 9757 > 9758 9759 9760 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&width=1200" alt="Jittery Cola Float: A True Caffeine Upgraded Treat - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 9761 </div> 9762 9763 <div 9764 class=" 9765 block whitespace-normal no-underline hover:no-underline 9766 9767 " 9768 > 9769 9770 <div class="mb-2 flex gap-2">
9771 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 9772 <span class="type--smaller">K</span> 9773 </span> 9774 <span class="type--small opacity-75"> 9775 Kelli R 9776 </span> 9777 </div> 9778 9779 <h3 9780 class=" 9781 type--base type__body--bare mb-0.5 font-semibold !leading-tight 9782 9783 " 9784 > 9785 Jittery Cola Float: A True Caffeine Upgraded Treat 9786 </h3> 9787 9788 9789 <span class="type--small mb-1 flex w-full"> 9790 The Jittery Cola Float takes your childhood soda fountain order and hands it a dou... 9791 </span> 9792 9793 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 9794 9795 <li 9796 class=" 9797 type--small inline-block last:after:hidden 9798 after:content-['\00B7'] 9799 " 9800 > 9801 Aug 14, 2026 9802 </li> 9803 9804 9805 </ul> 9806 </div> 9807</a> 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 <!-- snippets/component__blog-item.liquid --> 9992 9993 9994<a 9995 href="/blogs/scg-blog/espresso-snowcone-the-summer-treat-every-coffee-shop-should-have" 9996 class=" 9997 group relative w-full no-underline hover:no-underline 9998 9999 " 10000> 10001 <div 10002 class="relative mb-4 block w-full overflow-hidden" 10003 > 10004 <div 10005 class=" 10006 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 10007 color__bg-body after:color__bg-body color__text after:color__text 10008 10009 border--radius overflow-hidden 10010 border--width color__border-divider-1 10011 10012 " 10013 > 10014 10015 10016 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&width=1200" alt="Espresso Snowcone: The Summer Treat Every Coffee Shop Should Have - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 10017 </div> 10018 10019 <div 10020 class=" 10021 block whitespace-normal no-underline hover:no-underline 10022 10023 " 10024 > 10025 10026 <div class="mb-2 flex gap-2">
10027 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 10028 <span class="type--smaller">K</span> 10029 </span> 10030 <span class="type--small opacity-75"> 10031 Kelli R 10032 </span> 10033 </div> 10034 10035 <h3 10036 class=" 10037 type--base type__body--bare mb-0.5 font-semibold !leading-tight 10038 10039 " 10040 > 10041 Espresso Snowcone: The Summer Treat Every Coffee Shop Should Have 10042 </h3> 10043 10044 10045 <span class="type--small mb-1 flex w-full"> 10046 Our Espresso Snowcone recipe stacks bold espresso between layers of shaved ice and... 10047 </span> 10048 10049 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 10050 10051 <li 10052 class=" 10053 type--small inline-block last:after:hidden 10054 after:content-['\00B7'] 10055 " 10056 > 10057 Jul 24, 2026 10058 </li> 10059 10060 10061 </ul> 10062 </div> 10063</a> 10064 10065 10066 10067 10068 10069 10070 10071 </div> 10072 10073 </div> 10074</section> 10075 10076 10077</div><div id="shopify-section-template--21732448698675__f27a1cac-0db5-4e00-80d3-3b3a74dd17ad" class="shopify-section"><!-- sections/article-tagged-grid.liquid --> 10078 10079 10080<section 10081 class=" 10082 10083 color__bg-body color__text 10084 color__border-divider-1 10085 border--b-width 10086 " 10087> 10088 <div 10089 class="window--wide" 10090 style=" 10091 padding-top:40px; 10092 padding-bottom:40px; 10093 " 10094 ><div 10095 class=" 10096 flex flex-row flex-wrap items-end gap-2 pb-4 10097 justify-between 10098 10099 10100 opacity-0 js:animation animation-300 10101 10102 10103 " 10104 10105 data-delay="100" 10106 data-replace=" 10107 { 10108 'opacity-0' : 'opacity-100' 10109 } 10110 " 10111 10112 > 10113 <div class="w-full max-w-prose md:w-auto"><h3 class="type__heading--section-heading mb-1">Coffee</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 10114 Crafting Your Coffee Experience: A Comprehensive Collection of Expert Advice for the Perfect Cup 10115 </div><a 10116 href="/blogs/scg-blog/tagged/coffee" 10117 class=" 10118 flex flex-row items-center 10119 text-base 10120 font-normal 10121 leading-snug 10122 text-cyan-700 10123 underline 10124 " 10125 > 10126 <div>Browse All Coffee</div><!-- snippets/component__icon.liquid --> 10127 10128 10129<span class="inline-flex align-middle ml-1" aria-hidden="true"> 10130 10131 <svg 10132 width="18" 10133 height="18"
10134 viewBox="0 0 15 16" 10135 fill="none" 10136 xmlns="http://www.w3.org/2000/svg" 10137 > 10138 <g id="Arrow"> 10139 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 10140 <g id="np_arrow-right_888647_000000 copy"> 10141 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 10142 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 10143 </g> 10144 </g> 10145 </svg> 10146 10147</span> 10148 10149 </a> 10150 </div> 10151 </div> 10152 <div 10153 class=" 10154 grid 10155 md:grid-cols-4 10156 grid grid-cols-2 10157 " 10158 style=" 10159 column-gap: 8px; 10160 row-gap: 12.0px; 10161 " 10162 > 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 <!-- snippets/component__blog-item.liquid --> 10627 10628 10629<a 10630 href="/blogs/scg-blog/how-to-store-coffee-beans-so-they-actually-stay-fresh" 10631 class=" 10632 group relative w-full no-underline hover:no-underline 10633 10634 " 10635> 10636 <div 10637 class="relative mb-4 block w-full overflow-hidden" 10638 > 10639 <div 10640 class=" 10641 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 10642 color__bg-body after:color__bg-body color__text after:color__text 10643 10644 border--radius overflow-hidden 10645 border--width color__border-divider-1 10646 10647 " 10648 > 10649 10650 10651 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&width=1200" alt="Roasted coffee beans spilling from an airtight glass storage c
10651anister - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 10652 </div> 10653 10654 <div 10655 class=" 10656 block whitespace-normal no-underline hover:no-underline 10657 10658 " 10659 > 10660 10661 <div class="mb-2 flex gap-2"> 10662 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 10663 <span class="type--smaller">P</span> 10664 </span> 10665 <span class="type--small opacity-75"> 10666 Pat C 10667 </span> 10668 </div> 10669 10670 <h3 10671 class=" 10672 type--base type__body--bare mb-0.5 font-semibold !leading-tight 10673 10674 " 10675 > 10676 How to Store Coffee Beans (So They Actually Stay Fresh) 10677 </h3> 10678 10679 10680 <span class="type--small mb-1 flex w-full"> 10681 Stale beans are almost never your machine's fault â it's the storage. Here's how t... 10682 </span> 10683 10684 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 10685 10686 <li 10687 class=" 10688 type--small inline-block last:after:hidden 10689 after:content-['\00B7'] 10690 " 10691 > 10692 Aug 24, 2026 10693 </li> 10694 10695 10696 </ul> 10697 </div> 10698</a> 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 <!-- snippets/component__blog-item.liquid --> 10727 10728 10729<a 10730 href="/blogs/scg-blog/crew-review-5-easy-ways-to-make-cold-brew-coffee-at-home" 10731 class=" 10732 group relative w-full no-underline hover:no-underline 10733 10734 " 10735> 10736 <div 10737 class="relative mb-4 block w-full overflow-hidden" 10738 > 10739 <div 10740 class=" 10741 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 10742 color__bg-body after:color__bg-body color__text after:color__text 10743 10744 border--radius overflow-hidden 10745 border--width color__border-divider-1 10746 10747 " 10748 > 10749 10750 10751 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/5_Easy_Ways_to_Make_Cold_Brew_Coffee_at_Home_97b04882-2389-4d8c-8052-44f9a69f1bdb.jpg?v=1787017713&width=1200" alt="Cold brew coffee being poured over ice in a tall glass - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/5_Easy_Ways_to_Make_Cold_Brew_Coffee_at_Home_97b04882-2389-4d8c-8052-44f9a69f1bdb.jpg?v=1787017713&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/5_Easy_Ways_to_Make_Cold_Brew_Coffee_at_Home_97b04882-2389-4d8c-8052-44f9a69f1bdb.jpg?v=1787017713&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/5_Easy_Ways_to_Make_Cold_Brew_Coffee_at_Home_97b04882-2389-4d8c-8052-44f9a69f1bdb.jpg?v=1787017713&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/5_Easy_Ways_to_Make_Cold_Brew_Coffee_at_Home_97b04882-2389-4d8c-8052-44f9a69f1bdb.jpg?v=1787017713&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/5_Easy_Ways_to_Make_Cold_Brew_Coffee_at_Home_97b04882-2389-4d8c-8052-44f9a69f1bdb.jpg?v=1787017713&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 10752 </div> 10753 10754 <div 10755 class=" 10756 block whitespace-normal no-underline hover:no-underline 10757 10758 " 10759 > 10760 10761 <div class="mb-2 flex gap-2">
10762 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 10763 <span class="type--smaller">P</span> 10764 </span> 10765 <span class="type--small opacity-75"> 10766 Pat C 10767 </span> 10768 </div> 10769 10770 <h3 10771 class=" 10772 type--base type__body--bare mb-0.5 font-semibold !leading-tight 10773 10774 " 10775 > 10776 Crew Review: 5 Easy Ways to Make Cold Brew Coffee at Home 10777 </h3> 10778 10779 10780 <span class="type--small mb-1 flex w-full"> 10781 Great cold brew doesn't need fancy gear. We rank five easy at-home methods â flavo... 10782 </span> 10783 10784 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 10785 10786 <li 10787 class=" 10788 type--small inline-block last:after:hidden 10789 after:content-['\00B7'] 10790 " 10791 > 10792 Aug 19, 2026 10793 </li> 10794 10795 10796 </ul> 10797 </div> 10798</a> 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 <!-- snippets/component__blog-item.liquid --> 10823 10824 10825<a 10826 href="/blogs/scg-blog/espresso-vs-ground-coffee-which-is-best" 10827 class=" 10828 group relative w-full no-underline hover:no-underline 10829 10830 " 10831> 10832 <div 10833 class="relative mb-4 block w-full overflow-hidden" 10834 > 10835 <div 10836 class=" 10837 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 10838 color__bg-body after:color__bg-body color__text after:color__text 10839 10840 border--radius overflow-hidden 10841 border--width color__border-divider-1 10842 10843 " 10844 > 10845 10846 10847 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&width=1200" alt="Ground espresso coffee and whole beans compared side by side - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 10848 </div> 10849 10850 <div 10851 class=" 10852 block whitespace-normal no-underline hover:no-underline 10853 10854 " 10855 > 10856 10857 <div class="mb-2 flex gap-2"> 10858 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 10859 <span class="type--smaller">P</span> 10860 </span> 10861 <span class="type--small opacity-75"> 10862 Pat C 10863 </span> 10864 </div> 10865 10866 <h3 10867 class=" 10868 type--base type__body--bare mb-0.5 font-semibold !leading-tight 10869 10870 " 10871 > 10872 Espresso vs Ground Coffee: What's Actually Different (and Why It Matters) 10873 </h3> 10874 10875 10876 <span class="type--small mb-1 flex w-full"> 10877 There's no such thing as an espresso bean. Here's what actually separates espresso... 10878 </span> 10879 10880 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 10881 10882 <li 10883 class=" 10884 type--small inline-block last:after:hidden 10885 after:content-['\00B7'] 10886 " 10887 > 10888 Aug 17, 2026 10889 </li> 10890 10891 10892 </ul> 10893 </div> 10894</a> 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 <!-- snippets/component__blog-item.liquid --> 11403 11404 11405<a
11406 href="/blogs/scg-blog/coming-to-seattle-for-the-world-cup-heres-where-to-get-your-coffee-fix" 11407 class=" 11408 group relative w-full no-underline hover:no-underline 11409 11410 " 11411> 11412 <div 11413 class="relative mb-4 block w-full overflow-hidden" 11414 > 11415 <div 11416 class=" 11417 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 11418 color__bg-body after:color__bg-body color__text after:color__text 11419 11420 border--radius overflow-hidden 11421 border--width color__border-divider-1 11422 11423 " 11424 > 11425 11426 11427 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=1200" alt="Pike Place Market neon sign glowing at sunset in downtown Seattle - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 11428 </div> 11429 11430 <div 11431 class=" 11432 block whitespace-normal no-underline hover:no-underline 11433 11434 " 11435 > 11436 11437 <div class="mb-2 flex gap-2"> 11438 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 11439 <span class="type--smaller">K</span> 11440 </span> 11441 <span class="type--small opacity-75"> 11442 Kelli R 11443 </span> 11444 </div> 11445 11446 <h3 11447 class=" 11448 type--base type__body--bare mb-0.5 font-semibold !leading-tight 11449 11450 " 11451 > 11452 Coming to Seattle for the World Cup? Here's Where to Get Your Coffee Fix 11453 </h3> 11454 11455 11456 <span class="type--small mb-1 flex w-full"> 11457 Heading to Seattle for the 2026 FIFA World Cup? Fuel up between matches at Gloom C... 11458 </span> 11459 11460 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 11461 11462 <li 11463 class=" 11464 type--small inline-block last:after:hidden 11465 after:content-['\00B7'] 11466 " 11467 > 11468 Jul 2, 2026 11469 </li> 11470 11471 11472 </ul> 11473 </div> 11474</a> 11475 11476 11477 11478 11479 11480 11481 11482 </div> 11483 11484 </div> 11485</section> 11486 11487 11488</div><div id="shopify-section-template--21732448698675__0ab49888-04e4-49e5-80ab-f34c8848f59c" class="shopify-section"><!-- sections/article-tagged-grid.liquid --> 11489 11490 11491<section 11492 class=" 11493 11494 color__bg-body color__text 11495 color__border-divider-1 11496 border--b-width 11497 " 11498> 11499 <div 11500 class="window--wide" 11501 style=" 11502 padding-top:40px; 11503 padding-bottom:40px; 11504 " 11505 ><div 11506 class=" 11507 flex flex-row flex-wrap items-end gap-2 pb-4 11508 justify-between 11509 11510 11511 opacity-0 js:animation animation-300 11512 11513 11514 " 11515 11516 data-delay="100" 11517 data-replace=" 11518 { 11519 'opacity-0' : 'opacity-100' 11520 } 11521 " 11522 11523 > 11524 <div class="w-full max-w-prose md:w-auto"><h3 class="type__heading--section-heading mb-1">Education</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 11525 Unlocking the World of Coffee: Expert Education, and Essential Tips & Tricks to Master Your Brew 11526 </div><a 11527 href="/blogs/scg-blog/tagged/education" 11528 class=" 11529 flex flex-row items-center 11530 text-base 11531 font-normal 11532 leading-snug 11533 text-cyan-700 11534 underline 11535 " 11536 > 11537 <div>Browse All Education</div><!-- snippets/component__icon.liquid --> 11538 11539 11540<span class="inline-flex align-middle ml-1" aria-hidden="true"> 11541 11542 <svg 11543 width="18" 11544 height="18"
11545 viewBox="0 0 15 16" 11546 fill="none" 11547 xmlns="http://www.w3.org/2000/svg" 11548 > 11549 <g id="Arrow"> 11550 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 11551 <g id="np_arrow-right_888647_000000 copy"> 11552 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 11553 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 11554 </g> 11555 </g> 11556 </svg> 11557 11558</span> 11559 11560 </a> 11561 </div> 11562 </div> 11563 <div 11564 class=" 11565 grid 11566 md:grid-cols-4 11567 grid grid-cols-2 11568 " 11569 style=" 11570 column-gap: 8px; 11571 row-gap: 12.0px; 11572 " 11573 > 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 <!-- snippets/component__blog-item.liquid --> 11602 11603 11604<a 11605 href="/blogs/scg-blog/rancilio-silvia-pro-x-vs-rocket-appartamento-tca" 11606 class=" 11607 group relative w-full no-underline hover:no-underline 11608 11609 " 11610> 11611 <div 11612 class="relative mb-4 block w-full overflow-hidden" 11613 > 11614 <div 11615 class=" 11616 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 11617 color__bg-body after:color__bg-body color__text after:color__text 11618 11619 border--radius overflow-hidden 11620 border--width color__border-divider-1 11621 11622 " 11623 > 11624 11625 11626 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=1200" alt="Rocket Appartamento TCA and Rancilio Silvia Pro X espresso machines pulling shots side by side - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 11627 </div> 11628 11629 <div 11630 class=" 11631 block whitespace-normal no-underline hover:no-underline 11632 11633 " 11634 > 11635 11636 <div class="mb-2 flex gap-2"> 11637 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 11638 <span class="type--smaller">P</span> 11639 </span> 11640 <span class="type--small opacity-75"> 11641 Pat C 11642 </span> 11643 </div> 11644 11645 <h3 11646 class=" 11647 type--base type__body--bare mb-0.5 font-semibold !leading-tight 11648 11649 " 11650 > 11651 Rancilio Silvia Pro X vs. Rocket Appartamento TCA: Which One's Right for You? 11652 </h3> 11653 11654 11655 <span class="type--small mb-1 flex w-full"> 11656 Two well-regarded Italian machines at a similar price, and neither one wins on pap... 11657 </span> 11658 11659 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 11660 11661 <li 11662 class=" 11663 type--small inline-block last:after:hidden 11664 after:content-['\00B7'] 11665 " 11666 > 11667 Sep 24, 2026 11668 </li> 11669 11670 11671 </ul> 11672 </div> 11673</a> 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 <!-- snippets/component__blog-item.liquid --> 11710 11711 11712<a 11713 href="/blogs/scg-blog/the-top-three-semi-automatic-espresso-machines-of-2026" 11714 class=" 11715 group relative w-full no-underline hover:no-underline 11716 11717 " 11718> 11719 <div 11720 class="relative mb-4 block w-full overflow-hidden" 11721 > 11722 <div 11723 class=" 11724 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 11725 color__bg-body after:color__bg-body color__text after:color__text 11726 11727 border--radius overflow-hidden 11728 border--width color__border-divider-1 11729 11730 " 11731 > 11732 11733 11734 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=1200" alt="Top three semi-automatic espresso machines from Breville, Fellow, and Diletta on display - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Semi-automatic_Espresso_Machine_da80c9ba-6177-4eac-a29b-15583d4ca2f2.jpg?v=1789764787&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 11735 </div> 11736 11737 <div 11738 class=" 11739 block whitespace-normal no-underline hover:no-underline 11740 11741 " 11742 > 11743 11744 <div class="mb-2 flex gap-2">
11745 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 11746 <span class="type--smaller">P</span> 11747 </span> 11748 <span class="type--small opacity-75"> 11749 Pat C 11750 </span> 11751 </div> 11752 11753 <h3 11754 class=" 11755 type--base type__body--bare mb-0.5 font-semibold !leading-tight 11756 11757 " 11758 > 11759 The Top Three Semi-Automatic Espresso Machines of 2026 (Plus an Honorable Mention) 11760 </h3> 11761 11762 11763 <span class="type--small mb-1 flex w-full"> 11764 Ready to pull your own shots? We put this year's semi-automatic espresso machines ... 11765 </span> 11766 11767 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 11768 11769 <li 11770 class=" 11771 type--small inline-block last:after:hidden 11772 after:content-['\00B7'] 11773 " 11774 > 11775 Sep 21, 2026 11776 </li> 11777 11778 11779 </ul> 11780 </div> 11781</a> 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 <!-- snippets/component__blog-item.liquid --> 11810 11811 11812<a 11813 href="/blogs/scg-blog/the-espresso-machine-features-you-actually-want" 11814 class=" 11815 group relative w-full no-underline hover:no-underline 11816 11817 " 11818> 11819 <div 11820 class="relative mb-4 block w-full overflow-hidden" 11821 > 11822 <div 11823 class=" 11824 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 11825 color__bg-body after:color__bg-body color__text after:color__text 11826 11827 border--radius overflow-hidden 11828 border--width color__border-divider-1 11829 11830 " 11831 > 11832 11833 11834 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=1200" alt="Espresso machines and grinders on display at a Seattle Coffee Gear showroom counter - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_If_you_re_buying_an_espresso_machine_131f2a9f-6955-47dd-a93b-acfb370ed4f4.jpg?v=1790115496&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 11835 </div> 11836 11837 <div 11838 class=" 11839 block whitespace-normal no-underline hover:no-underline 11840 11841 " 11842 > 11843 11844 <div class="mb-2 flex gap-2"> 11845 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 11846 <span class="type--smaller">P</span> 11847 </span> 11848 <span class="type--small opacity-75"> 11849 Pat C 11850 </span> 11851 </div> 11852 11853 <h3 11854 class=" 11855 type--base type__body--bare mb-0.5 font-semibold !leading-tight 11856 11857 " 11858 > 11859 The Espresso Machine Features You Actually Want (Here's What Our Testing Bench Says) 11860 </h3> 11861 11862 11863 <span class="type--small mb-1 flex w-full"> 11864 PID, shot timers, and flow control â separated from spec-sheet noise. Here's what ... 11865 </span> 11866 11867 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 11868 11869 <li 11870 class=" 11871 type--small inline-block last:after:hidden 11872 after:content-['\00B7'] 11873 " 11874 > 11875 Sep 19, 2026 11876 </li> 11877 11878 11879 </ul> 11880 </div> 11881</a> 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 <!-- snippets/component__blog-item.liquid --> 11910 11911 11912<a 11913 href="/blogs/scg-blog/how-does-an-espresso-machine-work-a-no-jargon-guide-to-whats-happening-inside" 11914 class=" 11915 group relative w-full no-underline hover:no-underline 11916 11917 " 11918> 11919 <div 11920 class="relative mb-4 block w-full overflow-hidden" 11921 > 11922 <div 11923 class=" 11924 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 11925 color__bg-body after:color__bg-body color__text after:color__text 11926 11927 border--radius overflow-hidden 11928 border--width color__border-divider-1 11929 11930 " 11931 > 11932 11933 11934 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=1200" alt="Diletta Bello espresso machine brewing a shot beside a Eureka Libra grinder - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 11935 </div> 11936 11937 <div 11938 class=" 11939 block whitespace-normal no-underline hover:no-underline 11940 11941 " 11942 > 11943 11944 <div class="mb-2 flex gap-2">
11945 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 11946 <span class="type--smaller">P</span> 11947 </span> 11948 <span class="type--small opacity-75"> 11949 Pat C 11950 </span> 11951 </div> 11952 11953 <h3 11954 class=" 11955 type--base type__body--bare mb-0.5 font-semibold !leading-tight 11956 11957 " 11958 > 11959 How Does an Espresso Machine Work? A No-Jargon Guide to What's Happening Inside 11960 </h3> 11961 11962 11963 <span class="type--small mb-1 flex w-full"> 11964 An espresso machine is really doing one job: forcing hot water through packed coff... 11965 </span> 11966 11967 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 11968 11969 <li 11970 class=" 11971 type--small inline-block last:after:hidden 11972 after:content-['\00B7'] 11973 " 11974 > 11975 Sep 17, 2026 11976 </li> 11977 11978 11979 </ul> 11980 </div> 11981</a> 11982 11983 11984 11985 11986 11987 11988 11989 </div> 11990 11991 </div> 11992</section> 11993 11994 11995</div><div id="shopify-section-template--21732448698675__040ff9d8-2b45-44a6-99fe-0b2b11fa79af" class="shopify-section"><!-- sections/article-tagged-grid.liquid --> 11996 11997 11998<section 11999 class=" 12000 12001 color__bg-body color__text 12002 color__border-divider-1 12003 border--b-width 12004 " 12005> 12006 <div 12007 class="window--wide" 12008 style=" 12009 padding-top:40px; 12010 padding-bottom:40px; 12011 " 12012 ><div 12013 class=" 12014 flex flex-row flex-wrap items-end gap-2 pb-4 12015 justify-between 12016 12017 12018 opacity-0 js:animation animation-300 12019 12020 12021 " 12022 12023 data-delay="100" 12024 data-replace=" 12025 { 12026 'opacity-0' : 'opacity-100' 12027 } 12028 " 12029 12030 > 12031 <div class="w-full max-w-prose md:w-auto"><h3 class="type__heading--section-heading mb-1">News</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 12032 Caffeinate Your Knowledge: Stay Updated with the Latest Coffee News, Trends, and Insights 12033 </div><a 12034 href="/blogs/scg-blog/tagged/news" 12035 class=" 12036 flex flex-row items-center 12037 text-base 12038 font-normal 12039 leading-snug 12040 text-cyan-700 12041 underline 12042 " 12043 > 12044 <div>Browse All News</div><!-- snippets/component__icon.liquid --> 12045 12046 12047<span class="inline-flex align-middle ml-1" aria-hidden="true"> 12048 12049 <svg 12050 width="18" 12051 height="18"
12052 viewBox="0 0 15 16" 12053 fill="none" 12054 xmlns="http://www.w3.org/2000/svg" 12055 > 12056 <g id="Arrow"> 12057 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 12058 <g id="np_arrow-right_888647_000000 copy"> 12059 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 12060 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 12061 </g> 12062 </g> 12063 </svg> 12064 12065</span> 12066 12067 </a> 12068 </div> 12069 </div> 12070 <div 12071 class=" 12072 grid 12073 md:grid-cols-4 12074 grid grid-cols-2 12075 " 12076 style=" 12077 column-gap: 8px; 12078 row-gap: 12.0px; 12079 " 12080 > 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 <!-- snippets/component__blog-item.liquid --> 12421 12422 12423<a 12424 href="/blogs/scg-blog/scgs-best-videos-august-2026-coffee-gear-roundup" 12425 class=" 12426 group relative w-full no-underline hover:no-underline 12427 12428 " 12429> 12430 <div 12431 class="relative mb-4 block w-full overflow-hidden" 12432 > 12433 <div 12434 class=" 12435 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 12436 color__bg-body after:color__bg-body color__text after:color__text 12437 12438 border--radius overflow-hidden 12439 border--width color__border-divider-1 12440 12441 " 12442 > 12443 12444 12445 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&width=1200" alt="SCG crew member smiling between two Terra Kaffe superautomatic espresso machines - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 12446 </div> 12447 12448 <div 12449 class=" 12450 block whitespace-normal no-underline hover:no-underline 12451 12452 " 12453 > 12454 12455 <div class="mb-2 flex gap-2">
12456 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 12457 <span class="type--smaller">P</span> 12458 </span> 12459 <span class="type--small opacity-75"> 12460 Pat C 12461 </span> 12462 </div> 12463 12464 <h3 12465 class=" 12466 type--base type__body--bare mb-0.5 font-semibold !leading-tight 12467 12468 " 12469 > 12470 SCG's Best Videos: August 2026 Coffee & Gear Roundup 12471 </h3> 12472 12473 12474 <span class="type--small mb-1 flex w-full"> 12475 Every video we filmed in August, all in one place â grinder mistakes to avoid, a h... 12476 </span> 12477 12478 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 12479 12480 <li 12481 class=" 12482 type--small inline-block last:after:hidden 12483 after:content-['\00B7'] 12484 " 12485 > 12486 Sep 1, 2026 12487 </li> 12488 12489 12490 </ul> 12491 </div> 12492</a> 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 <!-- snippets/component__blog-item.liquid --> 12873 12874 12875<a 12876 href="/blogs/scg-blog/scgs-best-videos-july-2026-coffee-gear-roundup" 12877 class=" 12878 group relative w-full no-underline hover:no-underline 12879 12880 " 12881> 12882 <div 12883 class="relative mb-4 block w-full overflow-hidden" 12884 > 12885 <div 12886 class=" 12887 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 12888 color__bg-body after:color__bg-body color__text after:color__text 12889 12890 border--radius overflow-hidden 12891 border--width color__border-divider-1 12892 12893 " 12894 > 12895 12896 12897 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&width=1200" alt="SCG host with the LELIT Mara X3 and Bianca espresso machines in July's video recap - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 12898 </div> 12899 12900 <div 12901 class=" 12902 block whitespace-normal no-underline hover:no-underline 12903 12904 " 12905 > 12906 12907 <div class="mb-2 flex gap-2">
12908 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 12909 <span class="type--smaller">P</span> 12910 </span> 12911 <span class="type--small opacity-75"> 12912 Pat C 12913 </span> 12914 </div> 12915 12916 <h3 12917 class=" 12918 type--base type__body--bare mb-0.5 font-semibold !leading-tight 12919 12920 " 12921 > 12922 SCG's Best Videos: July 2026 Coffee & Gear Roundup 12923 </h3> 12924 12925 12926 <span class="type--small mb-1 flex w-full"> 12927 Flow profiling goes mainstream, a new Eureka grinder, and a deep clean. 12928 </span> 12929 12930 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 12931 12932 <li 12933 class=" 12934 type--small inline-block last:after:hidden 12935 after:content-['\00B7'] 12936 " 12937 > 12938 Jul 30, 2026 12939 </li> 12940 12941 12942 </ul> 12943 </div> 12944</a> 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 <!-- snippets/component__blog-item.liquid --> 13289 13290 13291<a
13292 href="/blogs/scg-blog/coming-to-seattle-for-the-world-cup-heres-where-to-get-your-coffee-fix" 13293 class=" 13294 group relative w-full no-underline hover:no-underline 13295 13296 " 13297> 13298 <div 13299 class="relative mb-4 block w-full overflow-hidden" 13300 > 13301 <div 13302 class=" 13303 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 13304 color__bg-body after:color__bg-body color__text after:color__text 13305 13306 border--radius overflow-hidden 13307 border--width color__border-divider-1 13308 13309 " 13310 > 13311 13312 13313 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=1200" alt="Pike Place Market neon sign glowing at sunset in downtown Seattle - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 13314 </div> 13315 13316 <div 13317 class=" 13318 block whitespace-normal no-underline hover:no-underline 13319 13320 " 13321 > 13322 13323 <div class="mb-2 flex gap-2"> 13324 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 13325 <span class="type--smaller">K</span> 13326 </span> 13327 <span class="type--small opacity-75"> 13328 Kelli R 13329 </span> 13330 </div> 13331 13332 <h3 13333 class=" 13334 type--base type__body--bare mb-0.5 font-semibold !leading-tight 13335 13336 " 13337 > 13338 Coming to Seattle for the World Cup? Here's Where to Get Your Coffee Fix 13339 </h3> 13340 13341 13342 <span class="type--small mb-1 flex w-full"> 13343 Heading to Seattle for the 2026 FIFA World Cup? Fuel up between matches at Gloom C... 13344 </span> 13345 13346 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 13347 13348 <li 13349 class=" 13350 type--small inline-block last:after:hidden 13351 after:content-['\00B7'] 13352 " 13353 > 13354 Jul 2, 2026 13355 </li> 13356 13357 13358 </ul> 13359 </div> 13360</a> 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 <!-- snippets/component__blog-item.liquid --> 13429 13430 13431<a 13432 href="/blogs/scg-blog/scgs-best-videos-june-2026-coffee-gear" 13433 class=" 13434 group relative w-full no-underline hover:no-underline 13435 13436 " 13437> 13438 <div 13439 class="relative mb-4 block w-full overflow-hidden" 13440 > 13441 <div 13442 class=" 13443 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 13444 color__bg-body after:color__bg-body color__text after:color__text 13445 13446 border--radius overflow-hidden 13447 border--width color__border-divider-1 13448 13449 " 13450 > 13451 13452 13453 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&width=1200" alt="Barista adjusting a stainless steel Breville Dual Boiler espresso machine on a counter - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 13454 </div> 13455 13456 <div 13457 class=" 13458 block whitespace-normal no-underline hover:no-underline 13459 13460 " 13461 > 13462 13463 <div class="mb-2 flex gap-2">
13464 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 13465 <span class="type--smaller">P</span> 13466 </span> 13467 <span class="type--small opacity-75"> 13468 Pat C 13469 </span> 13470 </div> 13471 13472 <h3 13473 class=" 13474 type--base type__body--bare mb-0.5 font-semibold !leading-tight 13475 13476 " 13477 > 13478 SCG's Best Videos: June 2026 Coffee & Gear 13479 </h3> 13480 13481 13482 <span class="type--small mb-1 flex w-full"> 13483 13484 13485 13486 13487 13488 13489 June was a two-video month, but both are the kind you'll want to bookmark.... 13490 </span> 13491 13492 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 13493 13494 <li 13495 class=" 13496 type--small inline-block last:after:hidden 13497 after:content-['\00B7'] 13498 " 13499 > 13500 Jun 30, 2026 13501 </li> 13502 13503 13504 </ul> 13505 </div> 13506</a> 13507 13508 13509 13510 13511 13512 13513 13514 </div> 13515 13516 </div> 13517</section> 13518 13519 13520</div><div id="shopify-section-template--21732448698675__46b4deac-10e4-4014-859e-43d47c0a57c6" class="shopify-section"><!-- sections/article-tagged-grid.liquid --> 13521 13522 13523<section 13524 class=" 13525 13526 color__bg-body color__text 13527 color__border-divider-1 13528 border--b-width 13529 " 13530> 13531 <div 13532 class="window--wide" 13533 style=" 13534 padding-top:40px; 13535 padding-bottom:40px; 13536 " 13537 ><div 13538 class=" 13539 flex flex-row flex-wrap items-end gap-2 pb-4 13540 justify-between 13541 13542 13543 opacity-0 js:animation animation-300 13544 13545 13546 " 13547 13548 data-delay="100" 13549 data-replace=" 13550 { 13551 'opacity-0' : 'opacity-100' 13552 } 13553 " 13554 13555 > 13556 <div class="w-full max-w-prose md:w-auto"><h3 class="type__heading--section-heading mb-1">Reviews</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 13557 Unveiling the Perfect Brew: Comprehensive Reviews of Coffee and Espresso Brewing Equipment for Every Enthusiast 13558 </div><a 13559 href="/blogs/scg-blog/tagged/reviews" 13560 class=" 13561 flex flex-row items-center 13562 text-base 13563 font-normal 13564 leading-snug 13565 text-cyan-700 13566 underline 13567 " 13568 > 13569 <div>Browse All Reviews</div><!-- snippets/component__icon.liquid --> 13570 13571 13572<span class="inline-flex align-middle ml-1" aria-hidden="true"> 13573 13574 <svg 13575 width="18" 13576 height="18"
13577 viewBox="0 0 15 16" 13578 fill="none" 13579 xmlns="http://www.w3.org/2000/svg" 13580 > 13581 <g id="Arrow"> 13582 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 13583 <g id="np_arrow-right_888647_000000 copy"> 13584 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 13585 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 13586 </g> 13587 </g> 13588 </svg> 13589 13590</span> 13591 13592 </a> 13593 </div> 13594 </div> 13595 <div 13596 class=" 13597 grid 13598 md:grid-cols-4 13599 grid grid-cols-2 13600 " 13601 style=" 13602 column-gap: 8px; 13603 row-gap: 12.0px; 13604 " 13605 > 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 <!-- snippets/component__blog-item.liquid --> 13650 13651 13652<a 13653 href="/blogs/scg-blog/rancilio-silvia-pro-x-vs-rocket-appartamento-tca" 13654 class=" 13655 group relative w-full no-underline hover:no-underline 13656 13657 " 13658> 13659 <div 13660 class="relative mb-4 block w-full overflow-hidden" 13661 > 13662 <div 13663 class=" 13664 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 13665 color__bg-body after:color__bg-body color__text after:color__text 13666 13667 border--radius overflow-hidden 13668 border--width color__border-divider-1 13669 13670 " 13671 > 13672 13673 13674 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=1200" alt="Rocket Appartamento TCA and Rancilio Silvia Pro X espresso machines pulling shots side by side - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Search_Blog_-_Rocket_TCA_vs_Rancilio_Silvia_Pro_X_1d1e9ed5-b98f-4047-88ba-75d5ea4d7680.jpg?v=1790122319&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 13675 </div> 13676 13677 <div 13678 class=" 13679 block whitespace-normal no-underline hover:no-underline 13680 13681 " 13682 > 13683 13684 <div class="mb-2 flex gap-2"> 13685 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 13686 <span class="type--smaller">P</span> 13687 </span> 13688 <span class="type--small opacity-75"> 13689 Pat C 13690 </span> 13691 </div> 13692 13693 <h3 13694 class=" 13695 type--base type__body--bare mb-0.5 font-semibold !leading-tight 13696 13697 " 13698 > 13699 Rancilio Silvia Pro X vs. Rocket Appartamento TCA: Which One's Right for You? 13700 </h3> 13701 13702 13703 <span class="type--small mb-1 flex w-full"> 13704 Two well-regarded Italian machines at a similar price, and neither one wins on pap... 13705 </span> 13706 13707 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 13708 13709 <li 13710 class=" 13711 type--small inline-block last:after:hidden 13712 after:content-['\00B7'] 13713 " 13714 > 13715 Sep 24, 2026 13716 </li> 13717 13718 13719 </ul> 13720 </div> 13721</a> 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 <!-- snippets/component__blog-item.liquid --> 13878 13879 13880<a 13881 href="/blogs/scg-blog/the-top-three-super-automatic-espresso-machines-of-2026-plus-an-honorable-mention" 13882 class=" 13883 group relative w-full no-underline hover:no-underline 13884 13885 " 13886> 13887 <div 13888 class="relative mb-4 block w-full overflow-hidden" 13889 > 13890 <div 13891 class=" 13892 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 13893 color__bg-body after:color__bg-body color__text after:color__text 13894 13895 border--radius overflow-hidden 13896 border--width color__border-divider-1 13897 13898 " 13899 > 13900 13901 13902 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&width=1200" alt="Top super automatic espresso machines of 2026: Terra Kaffe Demi, Philips Café Aromis, De'Longhi Rivelia - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 13903 </div> 13904 13905 <div 13906 class=" 13907 block whitespace-normal no-underline hover:no-underline 13908 13909 " 13910 > 13911 13912 <div class="mb-2 flex gap-2">
13913 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 13914 <span class="type--smaller">P</span> 13915 </span> 13916 <span class="type--small opacity-75"> 13917 Pat C 13918 </span> 13919 </div> 13920 13921 <h3 13922 class=" 13923 type--base type__body--bare mb-0.5 font-semibold !leading-tight 13924 13925 " 13926 > 13927 The Top Three Super Automatic Espresso Machines of 2026 (Plus an Honorable Mention) 13928 </h3> 13929 13930 13931 <span class="type--small mb-1 flex w-full"> 13932 Our tested shortlist of the best super automatic espresso machines for 2026 â the ... 13933 </span> 13934 13935 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 13936 13937 <li 13938 class=" 13939 type--small inline-block last:after:hidden 13940 after:content-['\00B7'] 13941 " 13942 > 13943 Sep 14, 2026 13944 </li> 13945 13946 13947 </ul> 13948 </div> 13949</a> 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 <!-- snippets/component__blog-item.liquid --> 14062 14063 14064<a 14065 href="/blogs/scg-blog/crew-review-rocket-r58-tune-espresso-machine" 14066 class=" 14067 group relative w-full no-underline hover:no-underline 14068 14069 " 14070> 14071 <div 14072 class="relative mb-4 block w-full overflow-hidden" 14073 > 14074 <div 14075 class=" 14076 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 14077 color__bg-body after:color__bg-body color__text after:color__text 14078 14079 border--radius overflow-hidden 14080 border--width color__border-divider-1 14081 14082 " 14083 > 14084 14085 14086 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&width=1200" alt="Black Rocket R58 Tune espresso machine with angled PID display in SCG showroom - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 14087 </div> 14088 14089 <div 14090 class=" 14091 block whitespace-normal no-underline hover:no-underline 14092 14093 " 14094 > 14095 14096 <div class="mb-2 flex gap-2">
14097 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 14098 <span class="type--smaller">P</span> 14099 </span> 14100 <span class="type--small opacity-75"> 14101 Pat C 14102 </span> 14103 </div> 14104 14105 <h3 14106 class=" 14107 type--base type__body--bare mb-0.5 font-semibold !leading-tight 14108 14109 " 14110 > 14111 Crew Review: Rocket R58 Tune Espresso Machine 14112 </h3> 14113 14114 14115 <span class="type--small mb-1 flex w-full"> 14116 Rocket's classic R58 gets a top-to-bottom rework â new colorways, a relocated PID ... 14117 </span> 14118 14119 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 14120 14121 <li 14122 class=" 14123 type--small inline-block last:after:hidden 14124 after:content-['\00B7'] 14125 " 14126 > 14127 Sep 8, 2026 14128 </li> 14129 14130 14131 </ul> 14132 </div> 14133</a> 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 <!-- snippets/component__blog-item.liquid --> 14198 14199 14200<a 14201 href="/blogs/scg-blog/crew-review-rocket-espresso-spluga-grinder" 14202 class=" 14203 group relative w-full no-underline hover:no-underline 14204 14205 " 14206> 14207 <div 14208 class="relative mb-4 block w-full overflow-hidden" 14209 > 14210 <div 14211 class=" 14212 aspect-w-16 aspect-h-9 aspect-video w-full object-cover 14213 color__bg-body after:color__bg-body color__text after:color__text 14214 14215 border--radius overflow-hidden 14216 border--width color__border-divider-1 14217 14218 " 14219 > 14220 14221 14222 <img src="//www.seattlecoffeegear.com/cdn/shop/articles/New_Product_-_Rocket_Espresso_Spluga_Grinder__Everything_You_Need_to_Know_5487402a-9e5b-436c-8389-ae4d6ebbfa09.jpg?v=1788221204&width=1200" alt="Rocket Espresso Spluga grinder dispensing espresso grounds into a portafilter - Seattle Coffee Gear" srcset="//www.seattlecoffeegear.com/cdn/shop/articles/New_Product_-_Rocket_Espresso_Spluga_Grinder__Everything_You_Need_to_Know_5487402a-9e5b-436c-8389-ae4d6ebbfa09.jpg?v=1788221204&width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/New_Product_-_Rocket_Espresso_Spluga_Grinder__Everything_You_Need_to_Know_5487402a-9e5b-436c-8389-ae4d6ebbfa09.jpg?v=1788221204&width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/New_Product_-_Rocket_Espresso_Spluga_Grinder__Everything_You_Need_to_Know_5487402a-9e5b-436c-8389-ae4d6ebbfa09.jpg?v=1788221204&width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/New_Product_-_Rocket_Espresso_Spluga_Grinder__Everything_You_Need_to_Know_5487402a-9e5b-436c-8389-ae4d6ebbfa09.jpg?v=1788221204&width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/New_Product_-_Rocket_Espresso_Spluga_Grinder__Everything_You_Need_to_Know_5487402a-9e5b-436c-8389-ae4d6ebbfa09.jpg?v=1788221204&width=1200 1200w" width="1200" height="786" loading="lazy" class="w-full h-full object-cover aspect-video color__bg-body after:color__bg-body color__text after:color__text " sizes="(min-width: 1024px) 33vw, (min-width: 768px) 50vw, 100vw">�</div> 14223 </div> 14224 14225 <div 14226 class=" 14227 block whitespace-normal no-underline hover:no-underline 14228 14229 " 14230 > 14231 14232 <div class="mb-2 flex gap-2"> 14233 <span class="color__bg-overlay-2 inline-flex h-5 w-5 items-center justify-center rounded-full"> 14234 <span class="type--smaller">P</span> 14235 </span> 14236 <span class="type--small opacity-75"> 14237 Pat C 14238 </span> 14239 </div> 14240 14241 <h3 14242 class=" 14243 type--base type__body--bare mb-0.5 font-semibold !leading-tight 14244 14245 " 14246 > 14247 Crew Review: Rocket Espresso Spluga Grinder 14248 </h3> 14249 14250
14251 <span class="type--small mb-1 flex w-full"> 14252 Rocket's new Spluga grinder promises prosumer performance in a home-friendly footp... 14253 </span> 14254 14255 <ul class="flex flex-wrap items-center gap-x-1 gap-y-0.5 p-0 opacity-75"> 14256 14257 <li 14258 class=" 14259 type--small inline-block last:after:hidden 14260 after:content-['\00B7'] 14261 " 14262 > 14263 Aug 31, 2026 14264 </li> 14265 14266 14267 </ul> 14268 </div> 14269</a> 14270 14271 14272 14273 14274 14275 14276 14277 </div> 14278 14279 </div> 14280</section> 14281 14282 14283</div><div id="shopify-section-template--21732448698675__article_tagged_grid_VLFhW8" class="shopify-section"><!-- sections/article-tagged-grid.liquid --> 14284 14285 14286<section 14287 class=" 14288 14289 color__bg-body color__text 14290 color__border-divider-1 14291 border--b-width 14292 " 14293> 14294 <div 14295 class="window--wide" 14296 style=" 14297 padding-top:40px; 14298 padding-bottom:40px; 14299 " 14300 ><div 14301 class=" 14302 flex flex-row flex-wrap items-end gap-2 pb-4 14303 justify-between 14304 14305 14306 opacity-0 js:animation animation-300 14307 14308 14309 " 14310 14311 data-delay="100" 14312 data-replace=" 14313 { 14314 'opacity-0' : 'opacity-100' 14315 } 14316 " 14317 14318 > 14319 <div class="w-full max-w-prose md:w-auto"><h3 class="type__heading--section-heading mb-1">Legacy Articles</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 14320 You've found some Seattle Coffee Gear legacy content! We hope you find this information useful, but please be aware some of it may be outdated or no longer accurate. Enjoy! 14321 </div><a 14322 href="/blogs/scg-blog/tagged/legacy" 14323 class=" 14324 flex flex-row items-center 14325 text-base 14326 font-normal 14327 leading-snug 14328 text-cyan-700 14329 underline 14330 " 14331 > 14332 <div>Browse All Legacy Articles</div><!-- snippets/component__icon.liquid --> 14333 14334 14335<span class="inline-flex align-middle ml-1" aria-hidden="true"> 14336 14337 <svg 14338 width="18" 14339 height="18"
14340 viewBox="0 0 15 16" 14341 fill="none" 14342 xmlns="http://www.w3.org/2000/svg" 14343 > 14344 <g id="Arrow"> 14345 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 14346 <g id="np_arrow-right_888647_000000 copy"> 14347 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 14348 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 14349 </g> 14350 </g> 14351 </svg> 14352 14353</span> 14354 14355 </a> 14356 </div> 14357 </div> 14358 </div> 14359</section> 14360 14361 14362</div><div id="shopify-section-template--21732448698675__article_featured_grid_X8niTR" class="shopify-section"><!-- sections/article-featured-grid.liquid --> 14363 14364 14365<section 14366 class=" 14367 14368 color__bg-body color__text 14369 color__border-divider-1 14370 border--b-width 14371 " 14372> 14373 <div 14374 class=" 14375 !px-0 14376 window--wide 14377 " 14378 style=" 14379 padding-top:40px; 14380 padding-bottom:20px; 14381 " 14382 ><!-- snippets/component__slider.liquid --> 14383 14384 14385<div 14386 class=" 14387 flex flex-wrap 14388 14389 " 14390> 14391 <div 14392 class="relative w-full" 14393 x-data=" 14394 { 14395 index: 1, 14396 index_size: 0, 14397 show_arrows: false, 14398 isOverflown(element) { 14399 return element.scrollWidth > element.clientWidth; 14400 }, 14401 14402 scrollToIndex(index_scroll) { 14403 let slider = this.$refs.slider; 14404 let currentSlide = slider.querySelector('[data-slide="' + index_scroll + '"]'); 14405 if (currentSlide) { 14406 let sliderWidth = slider.offsetWidth; 14407 let currentSlidePosition = currentSlide.offsetLeft; 14408 let currentSlideWidth = currentSlide.offsetWidth; 14409 let centerPosition = currentSlidePosition + currentSlideWidth / 2 - sliderWidth / 2; 14410 14411 slider.scrollTo({ 14412 top: 0, 14413 left: centerPosition, 14414 behavior: 'smooth' 14415 }); 14416 } 14417 }, 14418 14419 scrollNext() { 14420 let slider = this.$refs.slider; 14421 let scrolledToEnd = (el) => { 14422 if(el.scrollLeft + el.offsetWidth == el.scrollWidth){ 14423 return true; 14424 } else { 14425 return false; 14426 } 14427 } 14428 if(this.index >= (this.index_size - 1) || scrolledToEnd(slider)){ 14429 this.index = 1; 14430 this.scrollToIndex(0); 14431 } else { 14432 this.index++ 14433 this.scrollToIndex(this.index); 14434 } 14435 }, 14436 14437 scrollBack() { 14438 let slider = this.$refs.slider; 14439 if(this.index <= 0 || slider.scrollLeft == 0){ 14440 this.index = (this.index_size - 1); 14441 this.scrollToIndex(this.index); 14442 } else { 14443 this.index-- 14444 this.scrollToIndex(this.index); 14445 } 14446 } 14447 } 14448 " 14449 > 14450 <div class="flex w-full flex-row"> 14451 <!-- snippets/component__section-header.liquid --> 14452�<div 14453 class=" 14454 flex flex-row flex-wrap items-end gap-2 pb-4 14455 14456 px-4 w-full md:w-2/3 14457 14458 14459 opacity-0 js:animation animation-300 14460 14461 14462 " 14463 14464 data-delay="100" 14465 data-replace=" 14466 { 14467 'opacity-0' : 'opacity-100' 14468 } 14469 " 14470 14471 > 14472 <span class=""> 14473 <div class="w-full max-w-prose md:w-auto "><h3 class="type__heading--section-heading mb-1 ">Seattle Coffee Gear Blog</h3><div class="m-0--clear mb-1 text-base font-normal leading-snug text-zinc-600"> 14474 We write about all things coffee, espresso and tea! Visit our blog to stay in-the-know and read up on the latest product news. From semi-automatic espresso machine comparisons to coffee recipes and more, enjoy our collection of blog posts from industry experts. 14475 </div><a 14476 href="/pages/authors" 14477 class=" 14478 flex flex-row items-center 14479 text-base 14480 font-normal 14481 leading-snug 14482 text-cyan-700 14483 underline 14484 " 14485 > 14486 <div>About Our Authors</div><!-- snippets/component__icon.liquid --> 14487 14488 14489<span class="inline-flex align-middle ml-1" aria-hidden="true"> 14490 14491 <svg 14492 width="18" 14493 height="18"
14494 viewBox="0 0 15 16" 14495 fill="none" 14496 xmlns="http://www.w3.org/2000/svg" 14497 > 14498 <g id="Arrow"> 14499 <circle id="Oval Copy" cx="7.5" cy="8" r="7.08333" fill="white" stroke="#217A97" stroke-width="0.833333"/> 14500 <g id="np_arrow-right_888647_000000 copy"> 14501 <path id="Path" d="M3 7.47656H10.7933V8.52113H3V7.47656Z" fill="#217A97"/> 14502 <path id="Path_2" d="M8.63197 11.5L7.92773 10.7684L10.5929 8L7.92773 5.23163L8.63197 4.5L12.0004 8.00001L8.63197 11.5Z" fill="#217A97"/> 14503 </g> 14504 </g> 14505 </svg> 14506 14507</span> 14508 14509 </a></div> 14510 </span> 14511 14512 </div> 14513�<div class="hidden justify-end gap-4 pb-4 md:flex md:w-1/3 window--wide"> 14514 <div 14515 14516 x-show="show_arrows" 14517 14518 > 14519 <button 14520 class="btn btn--plain btn--small !rounded-full" 14521 title="Previous slide" 14522 14523 x-transition:enter="animation-300" 14524 x-transition:enter-start="opacity-0" 14525 x-transition:enter-end="opacity-100" 14526 x-transition:leave="animation-300" 14527 x-transition:leave-start="opacity-100" 14528 x-transition:leave-end="opacity-0" 14529 14530 x-cloak 14531 @click="scrollBack();" 14532 > 14533 <!-- snippets/component__icon.liquid --> 14534 14535 14536<span class="inline-flex align-middle " aria-hidden="true"> 14537 14538 <svg 14539 xmlns="http://www.w3.org/2000/svg" 14540 width="20" 14541 height="20"
14542 viewBox="0 0 24 24" 14543 fill="none" 14544 stroke="currentColor" 14545 stroke-width="2" 14546 stroke-linecap="round" 14547 stroke-linejoin="round" 14548 class="feather feather-arrow-left inline-block" 14549 > 14550 <line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline> 14551 </svg> 14552 14553</span> 14554 14555 </button> 14556 </div> 14557 <div 14558 14559 x-show="show_arrows" 14560 14561 > 14562 <button 14563 class="btn btn--plain btn--small !rounded-full" 14564 title="Next slide" 14565 14566 x-transition:enter="animation-300" 14567 x-transition:enter-start="opacity-0" 14568 x-transition:enter-end="opacity-100" 14569 x-transition:leave="animation-300" 14570 x-transition:leave-start="opacity-100" 14571 x-transition:leave-end="opacity-0" 14572 14573 x-cloak 14574 @click="scrollNext();" 14575 > 14576 <!-- snippets/component__icon.liquid --> 14577 14578 14579<span class="inline-flex align-middle " aria-hidden="true"> 14580 14581 <svg 14582 xmlns="http://www.w3.org/2000/svg" 14583 width="20" 14584 height="20"
14585 viewBox="0 0 24 24" 14586 fill="none" 14587 stroke="currentColor" 14588 stroke-width="2" 14589 stroke-linecap="round" 14590 stroke-linejoin="round" 14591 class="feather feather-arrow-right inline-block" 14592 > 14593 <line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline> 14594 </svg> 14595 14596</span> 14597 14598 </button> 14599 </div> 14600 </div> 14601 </div> 14602 <div 14603 class="hidescrollbar inline-flex w-full overflow-x-auto overflow-y-hidden scroll-smooth whitespace-nowrap px-4 md:snap-x px-4" 14604 style=" 14605 column-gap: 8px; 14606 row-gap: 12.0px; 14607 " 14608 x-init="setTimeout(function(){ if (isOverflown($el)) show_arrows = true}, 600);" 14609 x-ref="slider" 14610 > 14611 14612 14613 14614 </div> 14615 14616 </div> 14617</div> 14618 14619 </div> 14620</section> 14621 14622 14623</div> 14624 14625 �</main> 14626 14627 <!-- BEGIN sections: footer-group --> 14628<div id="shopify-section-sections--21256152088883__theme_footer" class="shopify-section shopify-section-group-footer-group"><!-- sections/theme__footer.liquid --> 14629 14630 14631<footer 14632 class=" 14633 relative 14634 14635 " 14636> 14637 14638 14639 14640 <nav class="md:hidden color__bg-overlay-1 color__text"> 14641 14642 14643 14644 14645 14646 <!-- snippets/component__accordion.liquid --> 14647 14648<div 14649 id="" 14650 class=" 14651 border--t-width color__border-divider-1 no-js--hide 14652 " 14653 14654 x-data=" 14655 { 14656 14657 accordion: false 14658 14659 } 14660 " 14661> 14662 <button 14663 type="button" 14664 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 14665 @click=" 14666 14667 accordion = ! accordion 14668 14669 " 14670 > 14671 <div class="flex items-center"> 14672 14673
14674 <span class="type__body--bold text-left "> 14675 Questions? 14676 </span> 14677 </div> 14678 <div x-show=" !accordion "> 14679 <!-- snippets/component__icon.liquid --> 14680 14681 14682<span class="inline-flex align-middle " aria-hidden="true"> 14683 14684 <svg 14685 xmlns="http://www.w3.org/2000/svg" 14686 width="24" 14687 height="24" 14688 viewBox="0 0 24 24" 14689 fill="none" 14690 stroke="currentColor" 14691 stroke-width="2" 14692 stroke-linecap="round" 14693 stroke-linejoin="round" 14694 class="feather feather-chevron-down" 14695 > 14696 <polyline points="6 9 12 15 18 9"></polyline> 14697 </svg> 14698 14699</span> 14700 14701 </div> 14702 <div x-show=" accordion " x-cloak> 14703 <!-- snippets/component__icon.liquid --> 14704 14705 14706<span class="inline-flex align-middle " aria-hidden="true"> 14707 14708 <svg 14709 xmlns="http://www.w3.org/2000/svg" 14710 width="24" 14711 height="24" 14712 viewBox="0 0 24 24" 14713 fill="none" 14714 stroke="currentColor" 14715 stroke-width="2" 14716 stroke-linecap="round" 14717 stroke-linejoin="round" 14718 class="feather feather-chevron-up" 14719 > 14720 <polyline points="18 15 12 9 6 15"></polyline> 14721 </svg> 14722 14723</span> 14724 14725 </div> 14726 </button> 14727 14728 <div 14729 class="accordion-content 14730 14731 " 14732 x-show=" accordion " 14733 14734 x-transition:enter="animation-100" 14735 x-transition:enter-start="opacity-0" 14736 x-transition:enter-end="opacity-100" 14737 x-transition:leave="animation-100" 14738 x-transition:leave-start="opacity-100" 14739 x-transition:leave-end="opacity-0" 14740 14741 x-cloak 14742 > 14743 14744 14745 <a href="/policies/contact-information" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14746 color__border-divider-1"> 14747 Contact Us 14748 </a> 14749 14750 14751 <a href="/pages/commercial-support" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14752 color__border-divider-1"> 14753 Commercial Support 14754 </a> 14755 14756 14757 <a href="/policies/shipping-policy" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14758 color__border-divider-1"> 14759 Order & Shipping Policy 14760 </a> 14761 14762 14763 <a href="/policies/refund-policy" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14764 color__border-divider-1"> 14765 Return Policy 14766 </a> 14767 14768 14769 <a href="/pages/cart-exclusions" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14770 color__border-divider-1"> 14771 *Promotion Exclusions 14772 </a> 14773 14774 14775 <a href="/pages/scg-promise" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14776 color__border-divider-1"> 14777 Price Matching 14778 </a> 14779 14780 14781 14782 </div> 14783</div> 14784 14785 14786 <noscript> 14787 <a 14788 class="border--t-width color__border-divider-1 block w-full p-4 no-underline" 14789 href="#" 14790 >Questions?</a> 14791 14792 <a 14793 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 14794 href="/policies/contact-information" 14795 >Contact Us</a> 14796 14797 14798 <a 14799 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 14800 href="/pages/commercial-support" 14801 >Commercial Support</a> 14802 14803 14804 <a 14805 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 14806 href="/policies/shipping-policy" 14807 >Order & Shipping Policy</a> 14808 14809 14810 <a 14811 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 14812 href="/policies/refund-policy" 14813 >Return Policy</a> 14814 14815 14816 <a 14817 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 14818 href="/pages/cart-exclusions" 14819 >*Promotion Exclusions</a> 14820 14821 14822 <a 14823 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 14824 href="/pages/scg-promise" 14825 >Price Matching</a> 14826 14827 14828 </noscript> 14829 14830 14831 </nav> 14832 14833 14834 14835 <nav class="md:hidden color__bg-overlay-1 color__text"> 14836 14837 14838 14839 14840 14841 <!-- snippets/component__accordion.liquid --> 14842 14843<div 14844 id="" 14845 class=" 14846 border--t-width color__border-divider-1 no-js--hide 14847 " 14848 14849 x-data=" 14850 { 14851 14852 accordion: false 14853 14854 } 14855 " 14856> 14857 <button 14858 type="button" 14859 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 14860 @click=" 14861 14862 accordion = ! accordion 14863 14864 " 14865 > 14866 <div class="flex items-center"> 14867 14868
14869 <span class="type__body--bold text-left "> 14870 More From SCG 14871 </span> 14872 </div> 14873 <div x-show=" !accordion "> 14874 <!-- snippets/component__icon.liquid --> 14875 14876 14877<span class="inline-flex align-middle " aria-hidden="true"> 14878 14879 <svg 14880 xmlns="http://www.w3.org/2000/svg" 14881 width="24" 14882 height="24" 14883 viewBox="0 0 24 24" 14884 fill="none" 14885 stroke="currentColor" 14886 stroke-width="2" 14887 stroke-linecap="round" 14888 stroke-linejoin="round" 14889 class="feather feather-chevron-down" 14890 > 14891 <polyline points="6 9 12 15 18 9"></polyline> 14892 </svg> 14893 14894</span> 14895 14896 </div> 14897 <div x-show=" accordion " x-cloak> 14898 <!-- snippets/component__icon.liquid --> 14899 14900 14901<span class="inline-flex align-middle " aria-hidden="true"> 14902 14903 <svg 14904 xmlns="http://www.w3.org/2000/svg" 14905 width="24" 14906 height="24" 14907 viewBox="0 0 24 24" 14908 fill="none" 14909 stroke="currentColor" 14910 stroke-width="2" 14911 stroke-linecap="round" 14912 stroke-linejoin="round" 14913 class="feather feather-chevron-up" 14914 > 14915 <polyline points="18 15 12 9 6 15"></polyline> 14916 </svg> 14917 14918</span> 14919 14920 </div> 14921 </button> 14922 14923 <div 14924 class="accordion-content 14925 14926 " 14927 x-show=" accordion " 14928 14929 x-transition:enter="animation-100" 14930 x-transition:enter-start="opacity-0" 14931 x-transition:enter-end="opacity-100" 14932 x-transition:leave="animation-100" 14933 x-transition:leave-start="opacity-100" 14934 x-transition:leave-end="opacity-0" 14935 14936 x-cloak 14937 > 14938 14939 14940 <a href="/pages/repairs-service" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14941 color__border-divider-1"> 14942 Repairs & Service 14943 </a> 14944 14945 14946 <a href="/pages/learn-articles" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14947 color__border-divider-1"> 14948 Blog 14949 </a> 14950 14951 14952 <a href="/pages/podcast" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14953 color__border-divider-1"> 14954 SCG Podcast 14955 </a> 14956 14957 14958 <a href="/pages/retail" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14959 color__border-divider-1"> 14960 Retail Stores 14961 </a> 14962 14963 14964 <a href="/pages/classes" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14965 color__border-divider-1"> 14966 Classes & Events 14967 </a> 14968 14969 14970 <a href="/pages/product-resource" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14971 color__border-divider-1"> 14972 Product Resources 14973 </a> 14974 14975 14976 <a href="/collections/all" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14977 color__border-divider-1"> 14978 Shop All Products 14979 </a> 14980 14981 14982 <a href="https://www.seattlecoffeegear.com/pages/shop-explore" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 14983 color__border-divider-1"> 14984 Product Collections 14985 </a> 14986 14987 14988 14989 </div> 14990</div> 14991 14992 14993 <noscript> 14994 <a 14995 class="border--t-width color__border-divider-1 block w-full p-4 no-underline" 14996 href="#" 14997 >More From SCG</a> 14998 14999 <a 15000 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15001 href="/pages/repairs-service" 15002 >Repairs & Service</a> 15003 15004 15005 <a 15006 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15007 href="/pages/learn-articles" 15008 >Blog</a> 15009 15010 15011 <a 15012 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15013 href="/pages/podcast" 15014 >SCG Podcast</a> 15015 15016 15017 <a 15018 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15019 href="/pages/retail" 15020 >Retail Stores</a> 15021 15022 15023 <a 15024 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15025 href="/pages/classes" 15026 >
15026Classes & Events</a> 15027 15028 15029 <a 15030 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15031 href="/pages/product-resource" 15032 >Product Resources</a> 15033 15034 15035 <a 15036 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15037 href="/collections/all" 15038 >Shop All Products</a> 15039 15040 15041 <a 15042 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15043 href="https://www.seattlecoffeegear.com/pages/shop-explore" 15044 >Product Collections</a> 15045 15046 15047 </noscript> 15048 15049 15050 </nav> 15051 15052 15053 15054 <nav class="md:hidden color__bg-overlay-1 color__text"> 15055 15056 15057 15058 15059 15060 <!-- snippets/component__accordion.liquid --> 15061 15062<div 15063 id="" 15064 class=" 15065 border--t-width color__border-divider-1 no-js--hide 15066 " 15067 15068 x-data=" 15069 { 15070 15071 accordion: false 15072 15073 } 15074 " 15075> 15076 <button 15077 type="button" 15078 class="mb-1 flex w-full items-center justify-between py-2 px-4 " 15079 @click=" 15080 15081 accordion = ! accordion 15082 15083 " 15084 > 15085 <div class="flex items-center"> 15086 15087
15088 <span class="type__body--bold text-left "> 15089 Company 15090 </span> 15091 </div> 15092 <div x-show=" !accordion "> 15093 <!-- snippets/component__icon.liquid --> 15094 15095 15096<span class="inline-flex align-middle " aria-hidden="true"> 15097 15098 <svg 15099 xmlns="http://www.w3.org/2000/svg" 15100 width="24" 15101 height="24" 15102 viewBox="0 0 24 24" 15103 fill="none" 15104 stroke="currentColor" 15105 stroke-width="2" 15106 stroke-linecap="round" 15107 stroke-linejoin="round" 15108 class="feather feather-chevron-down" 15109 > 15110 <polyline points="6 9 12 15 18 9"></polyline> 15111 </svg> 15112 15113</span> 15114 15115 </div> 15116 <div x-show=" accordion " x-cloak> 15117 <!-- snippets/component__icon.liquid --> 15118 15119 15120<span class="inline-flex align-middle " aria-hidden="true"> 15121 15122 <svg 15123 xmlns="http://www.w3.org/2000/svg" 15124 width="24" 15125 height="24" 15126 viewBox="0 0 24 24" 15127 fill="none" 15128 stroke="currentColor" 15129 stroke-width="2" 15130 stroke-linecap="round" 15131 stroke-linejoin="round" 15132 class="feather feather-chevron-up" 15133 > 15134 <polyline points="18 15 12 9 6 15"></polyline> 15135 </svg> 15136 15137</span> 15138 15139 </div> 15140 </button> 15141 15142 <div 15143 class="accordion-content 15144 15145 " 15146 x-show=" accordion " 15147 15148 x-transition:enter="animation-100" 15149 x-transition:enter-start="opacity-0" 15150 x-transition:enter-end="opacity-100" 15151 x-transition:leave="animation-100" 15152 x-transition:leave-start="opacity-100" 15153 x-transition:leave-end="opacity-0" 15154 15155 x-cloak 15156 > 15157 15158 15159 <a href="/pages/about-us" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 15160 color__border-divider-1"> 15161 Our Story 15162 </a> 15163 15164 15165 <a href="/pages/scg-crew" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 15166 color__border-divider-1"> 15167 SCG Crew 15168 </a> 15169 15170 15171 <a href="https://jobs.lever.co/cscgeneration-2?department=Seattle%20Coffee%20Gear" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 15172 color__border-divider-1"> 15173 Careers 15174 </a> 15175 15176 15177 <a href="/pages/media-kit" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 15178 color__border-divider-1"> 15179 Media Partners 15180 </a> 15181 15182 15183 <a href="/policies/terms-of-service" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 15184 color__border-divider-1"> 15185 Terms of Use 15186 </a> 15187 15188 15189 <a href="/policies/privacy-policy" class="type__body border--t-width flex w-full items-center justify-between px-4 py-4 pl-8 no-underline 15190 color__border-divider-1"> 15191 Privacy Policy 15192 </a> 15193 15194 15195 15196 </div> 15197</div> 15198 15199 15200 <noscript> 15201 <a 15202 class="border--t-width color__border-divider-1 block w-full p-4 no-underline" 15203 href="#" 15204 >Company</a> 15205 15206 <a 15207 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15208 href="/pages/about-us" 15209 >Our Story</a> 15210 15211 15212 <a 15213 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15214 href="/pages/scg-crew" 15215 >SCG Crew</a> 15216 15217 15218 <a 15219 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15220 href="https://jobs.lever.co/cscgeneration-2?department=Seattle%20Coffee%20Gear" 15221 >Careers</a> 15222 15223 15224 <a 15225 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15226 href="/pages/media-kit" 15227 >Media Partners</a> 15228 15229 15230 <a 15231 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15232 href="/policies/terms-of-service" 15233 >Terms of Use</a> 15234 15235 15236 <a 15237 class="border--t-width color__border-divider-1 block w-full p-4 !pl-8 no-underline" 15238 href="/policies/privacy-policy" 15239 >Privacy Policy</a> 15240 15241 15242 </noscript> 15243 15244 15245 </nav> 15246 15247 15248 15249 <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /> 15250 <section 15251 class=" 15252 border--t-width py-8 md:hidden 15253 color__bg-overlay-1 color__text 15254 color__border-divider-1 15255 " 15256 > 15257 <div class="window--wide"> 15258 <h3 class="type__body--bold type--base mb-2"> 15259 Join The List 15260 </h3> 15261 15262 15263 15264 15265 <div class="m-0--clear mb-2"> 15266 <p>Exclusive offers, new arrivals, & freshly brewed coffee content</p> 15267 </div> 15268 <label for="customerEmail_footer" class="sr-only">Email</label> 15269 <input 15270 id="customerEmail_footer" 15271 class="form-input mb-2 flex-grow" 15272 name="contact[email]" 15273 type="email" 15274 placeholder="Enter your email" 15275 autocorrect="off" 15276 autocapitalize="off" 15277 > 15278 <button type="submit" class="btn--small whitespace-nowrap btn btn--secondary">
15279 <span class="btn__content">Subscribe</span> 15280 </button> 15281 <div class="m-0--clear type--smaller mt-2 opacity-50"> 15282 15283 </div> 15284 15285 </div> 15286 </section> 15287 </form> 15288 15289 15290 15291 15292 15293 15294 <nav 15295 class=" 15296 border--t-width hidden md:block 15297 color__border-divider-1 15298 color__bg-overlay-1 color__text 15299 " 15300 > 15301 <div 15302 class="window--wide" 15303 > 15304 <div 15305 class="flex overflow-hidden py-8" 15306 > 15307 <div 15308 class="flex grow flex-wrap justify-between gap-12" 15309 > 15310 15311 15312 <div> 15313 15314 <div 15315 class=" 15316 type__body--bold mb-3 block no-underline 15317 15318 " 15319 > 15320 Questions? 15321 </div> 15322 15323 <a href="/policies/contact-information" class="mb-2 block no-underline opacity-50"> 15324 Contact Us 15325 </a> 15326 15327 15328 <a href="/pages/commercial-support" class="mb-2 block no-underline opacity-50"> 15329 Commercial Support 15330 </a> 15331 15332 15333 <a href="/policies/shipping-policy" class="mb-2 block no-underline opacity-50"> 15334 Order & Shipping Policy 15335 </a> 15336 15337 15338 <a href="/policies/refund-policy" class="mb-2 block no-underline opacity-50"> 15339 Return Policy 15340 </a> 15341 15342 15343 <a href="/pages/cart-exclusions" class="mb-2 block no-underline opacity-50"> 15344 *Promotion Exclusions 15345 </a> 15346 15347 15348 <a href="/pages/scg-promise" class="mb-2 block no-underline opacity-50"> 15349 Price Matching 15350 </a> 15351 15352 15353 15354 </div> 15355 15356 15357 15358 15359 15360 <div> 15361 15362 <div 15363 class=" 15364 type__body--bold mb-3 block no-underline 15365 15366 " 15367 > 15368 More From SCG 15369 </div> 15370 15371 <a href="/pages/repairs-service" class="mb-2 block no-underline opacity-50"> 15372 Repairs & Service 15373 </a> 15374 15375 15376 <a href="/pages/learn-articles" class="mb-2 block no-underline opacity-50"> 15377 Blog 15378 </a> 15379 15380 15381 <a href="/pages/podcast" class="mb-2 block no-underline opacity-50"> 15382 SCG Podcast 15383 </a> 15384 15385 15386 <a href="/pages/retail" class="mb-2 block no-underline opacity-50"> 15387 Retail Stores 15388 </a> 15389 15390 15391 <a href="/pages/classes" class="mb-2 block no-underline opacity-50"> 15392 Classes & Events 15393 </a> 15394 15395 15396 <a href="/pages/product-resource" class="mb-2 block no-underline opacity-50"> 15397 Product Resources 15398 </a> 15399 15400 15401 <a href="/collections/all" class="mb-2 block no-underline opacity-50"> 15402 Shop All Products 15403 </a> 15404 15405 15406 <a href="https://www.seattlecoffeegear.com/pages/shop-explore" class="mb-2 block no-underline opacity-50"> 15407 Product Collections 15408 </a> 15409 15410 15411 15412 </div> 15413 15414 15415 15416 15417 15418 <div> 15419 15420 <div 15421 class=" 15422 type__body--bold mb-3 block no-underline 15423 15424 " 15425 > 15426 Company 15427 </div> 15428 15429 <a href="/pages/about-us" class="mb-2 block no-underline opacity-50"> 15430 Our Story 15431 </a> 15432 15433 15434 <a href="/pages/scg-crew" class="mb-2 block no-underline opacity-50"> 15435 SCG Crew 15436 </a> 15437 15438 15439 <a href="https://jobs.lever.co/cscgeneration-2?department=Seattle%20Coffee%20Gear" class="mb-2 block no-underline opacity-50"> 15440 Careers 15441 </a> 15442 15443 15444 <a href="/pages/media-kit" class="mb-2 block no-underline opacity-50"> 15445 Media Partners 15446 </a> 15447 15448 15449 <a href="/policies/terms-of-service" class="mb-2 block no-underline opacity-50"> 15450 Terms of Use 15451 </a> 15452 15453 15454 <a href="/policies/privacy-policy" class="mb-2 block no-underline opacity-50"> 15455 Privacy Policy 15456 </a> 15457 15458 15459 15460 </div> 15461 15462 15463 15464 15465 15466 <div class="max-w-[250px]"> 15467 15468 15469 15470 15471 <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /> 15472 <h3 class="type__body--bold type--base mb-2"> 15473 Join The List 15474 </h3> 15475 15476 15477 15478 15479 <div class="m-0--clear mb-2"> 15480 <p>Exclusive offers, new arrivals, & freshly brewed coffee content</p> 15481 </div> 15482 <label for="newsletter_input_footer" class="sr-only">Email</label> 15483 <input 15484 id="newsletter_input_footer" 15485 class="form-input mb-2 flex-grow" 15486 name="contact[email]" 15487 type="email" 15488 placeholder="Enter your email" 15489 autocorrect="off" 15490 autocapitalize="off" 15491 > 15492 <button 15493 type="submit" 15494 class="btn--small whitespace-nowrap btn btn--secondary" 15495 >
15496 <span class="btn__content">Subscribe</span> 15497 </button> 15498 <div class="m-0--clear type--smaller mt-2 opacity-50"> 15499 15500 </div> 15501 15502 </form> 15503 </div> 15504 15505 15506 15507 15508 </div> 15509 </div> 15510 </div> 15511 </nav> 15512 15513 15514 <section 15515 class=" 15516 border--t-width flex flex-wrap gap-4 py-2 15517 color__bg-overlay-1 color__text 15518 color__border-divider-1 15519 " 15520 > 15521 15522 <div 15523 class=" 15524 flex w-full flex-wrap items-center justify-between gap-4 pt-2 15525 window--wide 15526 " 15527 > 15528 15529 <div 15530 class="flex w-full gap-2 md:w-auto" 15531 > 15532 15533 <a 15534 href="https://www.tiktok.com/@seattlecoffeegear" 15535 target="_blank" 15536 title="TikTok" 15537 class="inline-flex no-underline opacity-50 hover:no-underline" 15538 > 15539 <!-- snippets/component__icon.liquid --> 15540 15541 15542<span class="inline-flex align-middle " aria-hidden="true"> 15543 15544 <svg 15545 aria-hidden="true" 15546 width="20" 15547 height="20" 15548 focusable="false" 15549 data-prefix="fab" 15550 data-icon="tiktok" 15551 class="svg-inline--fa fa-tiktok fa-w-14" 15552 role="img" 15553 xmlns="http://www.w3.org/2000/svg"
15554 viewBox="0 0 448 512" 15555 > 15556 <path fill="currentColor" d="M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"></path> 15557 </svg> 15558 15559</span> 15560 15561 </a> 15562 15563 15564 <a 15565 href="https://www.instagram.com/seattlecoffeegear" 15566 target="_blank" 15567 title="Instagram" 15568 class="inline-flex no-underline opacity-50 hover:no-underline" 15569 > 15570 <!-- snippets/component__icon.liquid --> 15571 15572 15573<span class="inline-flex align-middle " aria-hidden="true"> 15574 15575 <svg 15576 aria-hidden="true" 15577 width="20" 15578 height="20" 15579 focusable="false" 15580 data-prefix="fab" 15581 data-icon="instagram" 15582 class="svg-inline--fa fa-instagram fa-w-14" 15583 role="img" 15584 xmlns="http://www.w3.org/2000/svg" 15585 viewBox="0 0 448 512" 15586 > 15587 <path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path> 15588 </svg> 15589 15590</span> 15591 15592 </a> 15593 15594 15595 <a 15596 href="https://www.facebook.com/SeattleCoffeeGear" 15597 target="_blank" 15598 title="Facebook" 15599 class="inline-flex no-underline opacity-50 hover:no-underline" 15600 > 15601 <!-- snippets/component__icon.liquid --> 15602 15603 15604<span class="inline-flex align-middle " aria-hidden="true"> 15605 15606 <svg 15607 aria-hidden="true" 15608 width="20" 15609 height="20" 15610 focusable="false" 15611 data-prefix="fab" 15612 data-icon="facebook" 15613 class="svg-inline--fa fa-facebook fa-w-16" 15614 role="img" 15615 xmlns="http://www.w3.org/2000/svg"
15616 viewBox="0 0 512 512" 15617 > 15618 <path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path> 15619 </svg> 15620 15621</span> 15622 15623 </a> 15624 15625 15626 <a 15627 href="https://www.pinterest.com/seattlecoffeegear/" 15628 target="_blank" 15629 title="Pinterest" 15630 class="inline-flex no-underline opacity-50 hover:no-underline" 15631 > 15632 <!-- snippets/component__icon.liquid --> 15633 15634 15635<span class="inline-flex align-middle " aria-hidden="true"> 15636 15637 <svg 15638 aria-hidden="true" 15639 width="20" 15640 height="20" 15641 focusable="false" 15642 data-prefix="fab" 15643 data-icon="pinterest" 15644 class="svg-inline--fa fa-pinterest fa-w-16" 15645 role="img" 15646 xmlns="http://www.w3.org/2000/svg"
15647 viewBox="0 0 496 512" 15648 > 15649 <path fill="currentColor" d="M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"></path> 15650 </svg> 15651 15652</span> 15653 15654 </a> 15655 15656 15657 15658 15659 15660 <a 15661 href="https://linkedin.com/company/seattle-coffee-gear" 15662 target="_blank" 15663 title="LinkedIn" 15664 class="inline-flex no-underline opacity-50 hover:no-underline" 15665 > 15666 <!-- snippets/component__icon.liquid --> 15667 15668 15669<span class="inline-flex align-middle " aria-hidden="true"> 15670 15671 <svg 15672 aria-hidden="true" 15673 width="20" 15674 height="20" 15675 focusable="false" 15676 data-prefix="fab" 15677 data-icon="linkedin" 15678 class="svg-inline--fa fa-linkedin fa-w-14" 15679 role="img" 15680 xmlns="http://www.w3.org/2000/svg"
15681 viewBox="0 0 448 512" 15682 > 15683 <path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path> 15684 </svg> 15685 15686</span> 15687 15688 </a> 15689 15690 15691 15692 <a 15693 href="https://youtube.com/c/Seattlecoffeegearinfo" 15694 target="_blank" 15695 title="YouTube" 15696 class="inline-flex no-underline opacity-50 hover:no-underline" 15697 > 15698 <!-- snippets/component__icon.liquid --> 15699 15700 15701<span class="inline-flex align-middle " aria-hidden="true"> 15702 15703 <svg 15704 aria-hidden="true" 15705 width="20" 15706 height="20" 15707 focusable="false" 15708 data-prefix="fab" 15709 data-icon="youtube" 15710 class="svg-inline--fa fa-youtube fa-w-18" 15711 role="img" 15712 xmlns="http://www.w3.org/2000/svg"
15713 viewBox="0 0 576 512" 15714 > 15715 <path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path> 15716 </svg> 15717 15718</span> 15719 15720 </a> 15721 15722 15723 </div> 15724 15725 15726 15727 <div> 15728 15729 <ul class="m-0 flex w-full list-none flex-wrap gap-2 p-0 md:justify-end" role="list"> 15730 15731 15732 <li> 15733 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778
1573316.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 15734 15735 </li> 15736 15737 <li> 15738 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg> 15739 15740 </li> 15741 15742 <li> 15743 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/><path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 15744 15745 </li> 15746 15747 <li> 15748 <svg class="icon icon--full-color" viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-discover">Discover</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"/><path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"/><path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"/><path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"/><path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"/><path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"/><path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"/><defs><linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse"><stop stop-color="#F89F20"/><stop offset=".25" stop-color="#F79A20"/><stop offset=".533" stop-color="#F68D20"/><stop offset=".62" stop-color="#F58720"/><stop offset=".723" stop-color="#F48120"/><stop offset="1" stop-color="#F37521"/></linearGradient><linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse"><stop stop-color="#F58720"/><stop offset=".359" stop-color="#E16F27"/><stop offset=".703" stop-color="#D4602C"/><stop offset=".982" stop-color="#D05B2E"/></linearGradient></defs></svg> 15749 </li> 15750 15751 <li> 15752 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114
15752c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg> 15753 15754 </li> 15755 15756 <li> 15757 <svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal"><title id="pi-paypal">PayPal</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"/><path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"/><path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2
157570-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"/></svg> 15758 </li> 15759 15760 <li> 15761 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-amazon"><title id="pi-amazon">Amazon</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" fill-rule="nonzero" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF" fill-rule="nonzero"/><path d="M25.26 16.23c-1.697 1.48-4.157 2.27-6.275 2.27-2.97 0-5.644-1.3-7.666-3.463-.16-.17-.018-.402.173-.27 2.183 1.504 4.882 2.408 7.67 2.408 1.88 0 3.95-.46 5.85-1.416.288-.145.53.222.248.47v.001zm.706-.957c-.216-.328-1.434-.155-1.98-.078-.167.024-.193-.148-.043-.27.97-.81 2.562-.576 2.748-.305.187.272-.047 2.16-.96 3.063-.14.138-.272.064-.21-.12.205-.604.664-1.96.446-2.29h-.001z" fill="#F90" fill-rule="nonzero"/><path d="M21.814 15.291c-.574-.498-.676-.73-.993-1.205-.947 1.012-1.618 1.315-2.85 1.315-1.453 0-2.587-.938-2.587-2.818 0-1.467.762-2.467 1.844-2.955.94-.433 2.25-.51 3.25-.628v-.235c0-.43.033-.94-.208-1.31-.212-.333-.616-.47-.97-.47-.66 0-1.25.353-1.392 1.085-.03.163-.144.323-.3.33l-1.677-.187c-.14-.033-.296-.153-.257-.38.386-2.125 2.223-2.766 3.867-2.766.84 0 1.94.234 2.604.9.842.82.762 1.918.762 3.11v2.818c0 .847.335 1.22.65 1.676.113.164.138.36-.003.482-.353.308-.98.88-1.326 1.2a.367.367 0 0 1-.414.038zm-1.659-2.533c.34-.626.323-1.214.323-1.918v-.392c-1.25 0-2.57.28-2.57 1.82 0 .782.386 1.31 1.05 1.31.487 0 .922-.312 1.197-.82z" fill="#221F1F"/></svg> 15762 15763 </li> 15764 15765 <li> 15766 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
1576606zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg> 15767 15768 </li> 15769 15770 <li> 15771 <svg class="icon icon--full-color" version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" />
15771<path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg> 15772 15773 </li> 15774 15775 <li> 15776 <svg class="icon icon--full-color" viewBox="0 0 38 24" width="38" height="24" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pi-venmo"><title id="pi-venmo">Venmo</title><g fill="none" fill-rule="evenodd"><rect fill-opacity=".07" fill="#000" width="38" height="24" rx="3"/><path fill="#3D95CE" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M24.675 8.36c0 3.064-2.557 7.045-4.633 9.84h-4.74L13.4 6.57l4.151-.402 1.005 8.275c.94-1.566 2.099-4.025 2.099-5.702 0-.918-.154-1.543-.394-2.058l3.78-.783c.437.738.634 1.499.634 2.46z" fill="#FFF" fill-rule="nonzero"/></g></svg> 15777 15778 </li> 15779 15780 </ul> 15781 15782 </div> 15783 </div> 15784 15785 15786 <div 15787 class=" 15788 flex w-full flex-wrap items-center justify-between gap-4 15789 window--wide 15790 " 15791 > 15792 15793 15794 15795 15796 <div 15797 class="flex w-full flex-1 flex-wrap gap-2 md:w-auto md:text-right" 15798 > 15799 15800 <div class="m-0--clear type--smaller w-full opacity-50"> 15801 15802 15803 Copyright 2026 ©. All rights reserved. 15804 </div> 15805 </div> 15806 </div> 15807 </section> 15808</footer> 15809 15810 15811<style> #shopify-section-sections--21256152088883__theme_footer [aria-labelledby="pi-venmo"] {display: none;} </style></div> 15812<!-- END sections: footer-group --> 15813 <!-- BEGIN sections: overlay-group --> 15814<div id="shopify-section-sections--21364686750003__theme_scrollup" class="shopify-section shopify-section-group-overlay-group"><!-- sections/theme__scrollup.liquid --> 15815 15816 15817<section> 15818 15819</section> 15820 15821 15822</div><div id="shopify-section-sections--21364686750003__theme_age-verification" class="shopify-section shopify-section-group-overlay-group"><!-- sections/theme__age-verification.liquid --> 15823 15824 15825 15826 15827 15828 15829</div> 15830<!-- END sections: overlay-group --> 15831 15832 <!-- snippets/theme__localization-popup.liquid --> 15833 15834 15835 15836<!-- snippets/component__popup.liquid --> 15837 15838 15839<section 15840 role="dialog" 15841 aria-modal="true" 15842 class="fixed inset-0 z-50 overflow-hidden" 15843 @keyup.escape.window="localization_popup = false;" 15844 x-show="localization_popup" 15845 x-cloak> 15846 <div class="sm:block sm:p-0 flex items-end justify-center min-h-screen px-4 pt-4 text-center"> 15847 <div aria-hidden="true" 15848 class="fixed inset-0 transition-opacity bg-black bg-opacity-50" 15849 @click="localization_popup = false;" 15850 x-show="localization_popup" 15851 15852 x-transition:enter="animation-300" 15853 x-transition:enter-start="opacity-0" 15854 x-transition:enter-end="opacity-100" 15855 x-transition:leave="animation-300" 15856 x-transition:leave-start="opacity-100" 15857 x-transition:leave-end="opacity-0" 15858 15859 x-cloak> 15860 </div> 15861 <div class="md:left-5 md:bottom-auto md:right-5 md:top-1/2 md:align-middle md:max-w-md md:-translate-y-1/2 absolute bottom-0 left-0 right-0 inline-block m-auto text-left align-bottom transition-all transform" 15862 x-show="localization_popup" 15863 x-trap="localization_popup" 15864 15865 x-transition:enter="animation-300" 15866 x-transition:enter-start="opacity-0 translate-y-8" 15867 x-transition:enter-end="opacity-100" 15868 x-transition:leave="animation-300" 15869 x-transition:leave-start="opacity-100" 15870 x-transition:leave-end="opacity-0 translate-y-8" 15871 15872 x-cloak> 15873 <div class="md:px-0 px-4 py-4"> 15874 <button class="btn btn--smaller btn--plain" 15875 type="button" 15876 title="Close" 15877 @click="localization_popup = false;"> 15878 <!-- snippets/component__icon.liquid --> 15879 15880 15881<span class="inline-flex align-middle " aria-hidden="true"> 15882 15883 <svg 15884 xmlns="http://www.w3.org/2000/svg" 15885 width="24" 15886 height="24"
15887 viewBox="0 0 24 24" 15888 fill="none" 15889 stroke="currentColor" 15890 stroke-width="2" 15891 stroke-linecap="round" 15892 stroke-linejoin="round" 15893 class="feather feather-x" 15894 > 15895 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 15896 </svg> 15897 15898</span> 15899 15900 </button> 15901 </div> 15902 <div class="mobile-border--radius-b-0 color__bg-body border--radius overflow-y-auto shadow-lg max-h-[70vh]" 15903 @click.outside="localization_popup = false;"> 15904 15905 15906 15907 15908 15909 <!-- snippets/script__localization.liquid --> 15910 15911
15912<script> 15913 class LocalizationForm extends HTMLElement { 15914 15915 constructor() { 15916 super(); 15917 this.elements = { 15918 input: this.querySelector('input[name="language_code"], input[name="country_code"]'), 15919 button: this.querySelector('button'), 15920 }; 15921 this.querySelectorAll('[id^="language_selection_"]').forEach(item => item.addEventListener('click', this.onItemClick.bind(this))); 15922 this.querySelectorAll('[id^="country_selection_"]').forEach(item => item.addEventListener('click', this.onItemClick.bind(this))); 15923 } 15924 15925 onItemClick(event) { 15926 event.preventDefault(); 15927 const form = this.querySelector('form'); 15928 this.elements.input.value = event.currentTarget.dataset.value; 15929 if (form) form.submit(); 15930 } 15931 15932 openSelector() { 15933 this.elements.button.focus(); 15934 this.elements.button.setAttribute('aria-expanded', (this.elements.button.getAttribute('aria-expanded') === 'false').toString()); 15935 } 15936 15937 } 15938 15939 customElements.define('localization-form', LocalizationForm); 15940</script>
15940 15941 15942 15943 </div> 15944 </div> 15945 </div> 15946</section> 15947 <!-- snippets/theme__audio-popup.liquid --> 15948 15949 15950 15951<!-- snippets/component__popup.liquid --> 15952 15953 15954<section 15955 role="dialog" 15956 aria-modal="true" 15957 class="fixed inset-0 z-50 overflow-hidden" 15958 @keyup.escape.window="audio_popup = false;" 15959 x-show="audio_popup" 15960 x-cloak> 15961 <div class="sm:block sm:p-0 flex items-end justify-center min-h-screen px-4 pt-4 text-center"> 15962 <div aria-hidden="true" 15963 class="fixed inset-0 transition-opacity bg-black bg-opacity-50" 15964 @click="audio_popup = false;" 15965 x-show="audio_popup" 15966 15967 x-transition:enter="animation-300" 15968 x-transition:enter-start="opacity-0" 15969 x-transition:enter-end="opacity-100" 15970 x-transition:leave="animation-300" 15971 x-transition:leave-start="opacity-100" 15972 x-transition:leave-end="opacity-0" 15973 15974 x-cloak> 15975 </div> 15976 <div class="md:left-5 md:bottom-auto md:right-5 md:top-1/2 md:align-middle md:max-w-md md:-translate-y-1/2 absolute bottom-0 left-0 right-0 inline-block m-auto text-left align-bottom transition-all transform" 15977 x-show="audio_popup" 15978 x-trap="audio_popup" 15979 15980 x-transition:enter="animation-300" 15981 x-transition:enter-start="opacity-0 translate-y-8" 15982 x-transition:enter-end="opacity-100" 15983 x-transition:leave="animation-300" 15984 x-transition:leave-start="opacity-100" 15985 x-transition:leave-end="opacity-0 translate-y-8" 15986 15987 x-cloak> 15988 <div class="md:px-0 px-4 py-4"> 15989 <button class="btn btn--smaller btn--plain" 15990 type="button" 15991 title="Close" 15992 @click="audio_popup = false;"> 15993 <!-- snippets/component__icon.liquid --> 15994 15995 15996<span class="inline-flex align-middle " aria-hidden="true"> 15997 15998 <svg 15999 xmlns="http://www.w3.org/2000/svg" 16000 width="24" 16001 height="24"
16002 viewBox="0 0 24 24" 16003 fill="none" 16004 stroke="currentColor" 16005 stroke-width="2" 16006 stroke-linecap="round" 16007 stroke-linejoin="round" 16008 class="feather feather-x" 16009 > 16010 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 16011 </svg> 16012 16013</span> 16014 16015 </button> 16016 </div> 16017 <div class="mobile-border--radius-b-0 color__bg-body border--radius overflow-y-auto shadow-lg max-h-[70vh]" 16018 @click.outside="audio_popup = false;"> 16019 16020 <button class="type__nav border--b-width color__border-divider-1 hover:color__bg-overlay-1 block w-full p-4 text-left no-underline" 16021 @click.prevent="enable_audio = true; localStorage.setItem('paper_enable_audio', 'true')"> 16022 <span x-show="enable_audio == true"> 16023 <!-- snippets/component__icon.liquid --> 16024 16025 16026<span class="inline-flex align-middle mr-1" aria-hidden="true"> 16027 16028 <svg 16029 xmlns="http://www.w3.org/2000/svg" 16030 width="16" 16031 height="16"
16032 viewBox="0 0 24 24" 16033 fill="none" 16034 stroke="currentColor" 16035 stroke-width="2" 16036 stroke-linecap="round" 16037 stroke-linejoin="round" 16038 class="feather feather-check" 16039 > 16040 <polyline points="20 6 9 17 4 12"></polyline> 16041 </svg> 16042 16043</span> 16044 16045 </span> 16046 Enable audio 16047 </button> 16048 <button class="type__nav hover:color__bg-overlay-1 block w-full p-4 text-left no-underline" 16049 @click.prevent="enable_audio = false; localStorage.setItem('paper_enable_audio', 'false')"> 16050 <span x-show="enable_audio == false"> 16051 <!-- snippets/component__icon.liquid --> 16052 16053 16054<span class="inline-flex align-middle mr-1" aria-hidden="true"> 16055 16056 <svg 16057 xmlns="http://www.w3.org/2000/svg" 16058 width="16" 16059 height="16" 16060 viewBox="0 0 24 24" 16061 fill="none" 16062 stroke="currentColor" 16063 stroke-width="2" 16064 stroke-linecap="round" 16065 stroke-linejoin="round" 16066 class="feather feather-check" 16067 > 16068 <polyline points="20 6 9 17 4 12"></polyline> 16069 </svg> 16070 16071</span> 16072 16073 </span> 16074 Disable audio 16075 </button> 16076 16077 </div> 16078 </div> 16079 </div> 16080</section> 16081 <!-- snippets/theme__error-popup.liquid --> 16082 16083 16084 16085<!-- snippets/component__alert.liquid --> 16086 16087 16088<div class="md:left-auto md:right-5 md:top-5 color__bg-body color__text border--radius md:w-96 border--width color__border-divider-1 fixed top-0 left-0 right-0 z-50 w-auto overflow-hidden shadow-md" 16089 @click.outside="show_alert = false" 16090 @keyup.escape.window="show_alert = false" 16091 x-show="show_alert" 16092 16093 x-transition:enter="animation-300" 16094 x-transition:enter-start="opacity-0" 16095 x-transition:enter-end="opacity-100" 16096 x-transition:leave="animation-300" 16097 x-transition:leave-start="opacity-100" 16098 x-transition:leave-end="opacity-0" 16099 16100 x-cloak> 16101 16102 <div class="relative p-4 overflow-hidden"> 16103 16104 16105 <div class="flex flex-wrap items-center justify-between mb-4"> 16106 <p class="flex items-center mb-0" 16107 x-text="error_title"></p> 16108 <button class="btn btn--smaller btn--plain" 16109 title="Close" 16110 @click="show_alert = false"> 16111 <!-- snippets/component__icon.liquid --> 16112 16113 16114<span class="inline-flex align-middle " aria-hidden="true"> 16115 16116 <svg 16117 xmlns="http://www.w3.org/2000/svg" 16118 width="24" 16119 height="24"
16120 viewBox="0 0 24 24" 16121 fill="none" 16122 stroke="currentColor" 16123 stroke-width="2" 16124 stroke-linecap="round" 16125 stroke-linejoin="round" 16126 class="feather feather-x" 16127 > 16128 <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> 16129 </svg> 16130 16131</span> 16132 16133 </button> 16134 </div> 16135 <div> 16136 <p class="mb-0" 16137 x-text="error_message"></p> 16138 </div> 16139 16140 </div> 16141</div> 16142
16142<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 16142
16142
16143<script type="importmap"> 16144 { 16145 "imports": { 16146 "alpinejs": "https://cdn.jsdelivr.net/npm/[email protected]/dist/module.esm.min.js", 16147 "@alpinejs/focus": "https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/module.esm.min.js", 16148 "@alpinejs/intersect": "https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/module.esm.min.js", 16149 "theme/bsl": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-bsl.js?v=178919795351328436801778794383", 16150 "theme/globals": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-globals.js?v=97689550620484394861778794386", 16151 "theme/cart": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-cart.js?v=8454857801186883541789418852", 16152 "theme/search": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-search.js?v=108326625697426168021778794387", 16153 "theme/collections": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-collections.js?v=180017826159887890011778794384", 16154 "theme/util": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-util.js?v=182505900553291918701778794388", 16155 "theme/tagalys": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-tagalys.js?v=14532526135575393141789574321", 16156 "theme/cookies": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-cookies.js?v=98591664362376396351778794385", 16157 "theme/promo-messaging": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-promo-messaging.js?v=47486882762788507031778794386", 16158 "theme/animation": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-animation-observer.js?v=164527484286546929671778794382", 16159 "theme/format-money": "//www.seattlecoffeegear.com/cdn/shop/t/4/assets/theme-format-money.js?v=115398150903042036341778794385" 16160 } 16161 } 16162</script>
16162 16163
16164<script src="https://cdn.jsdelivr.net/npm/[email protected]/instantpage.min.js" type="module"></script>
16164 16165
16166<script src="//www.seattlecoffeegear.com/cdn/shop/t/4/assets/page-search.js?v=125269946050982813451778794379" type="module"></script>
16166<script src="//www.seattlecoffeegear.com/cdn/shop/t/4/assets/main.js?v=168803651101593317931778794378" type="module"></script>
16166 16167 16168 <!-- snippets/theme__scripts.liquid --> 16169 16170
16171<script> 16172 window.__initialData = window.__initialData || {}; 16173 Object.assign(window.__initialData, { 16174 // Audio related properties 16175 16176 16177 16178 enable_audio: false, 16179 audio_popup: false, 16180 // Scroll related properties 16181 is_scrolled: false, 16182 prev_scroll_pos: 0, 16183 scroll_up: false, 16184 scroll_up_force: true, 16185 hide_header: false, 16186 reduce_product_zindex: false, 16187 // Mouse position properties 16188 mouse_x: 0, 16189 mouse_y: 0, 16190 // Menu related properties 16191 menu_drawer: false, 16192 menu_nested: false, 16193 // Popup related properties 16194 age_popup: localStorage.getItem("agePopupConfirmed") ? true : false, 16195 filter_popup: false, 16196 localization_popup: false, 16197 // Alert related properties 16198 show_alert: false, 16199 error_title: 'Something went wrong...', 16200 error_message: '', 16201 // Product related properties 16202 recent_products: localStorage.getItem("recentlyViewedProducts") ? JSON.parse(localStorage.getItem("recentlyViewedProducts")) : [], 16203 incomplete_fields: false, 16204 selectedImageIndex: 0, 16205 // Cart related properties 16206 cart_drawer: false, 16207 cart_modal: false, 16208 cart_loading: false, 16209 cart_alert: false, 16210 cart_delay: 5000, 16211 cart_delay_width: 0, 16212 cart_behavior: 'alert', 16213 cart: { 16214 items: [], 16215 note: null, 16216 item_count: 0, 16217 recently_added: {}, 16218 total_price: 0, 16219 original_total_price: 0, 16220 total_discount: 0, 16221 shipping_gap: 0, 16222 shipping_progress: '0%', 16223 }, 16224 // Search related properties 16225 search_loading: false, 16226 search_active: false, 16227 search_items: [], 16228 search_items_collections: [], 16229 search_items_pages: [], 16230 search_items_articles: [], 16231 search_items_queries: [], 16232 // Collection and pagination related properties 16233 collection_loading: false, 16234 currency_symbol: '$' , 16235 button_loading: false 16236 }); 16237</script>
16237 16238 16239 16240 16241<!-- snippets/script__design-mode.liquid --> 16242 16243 16244 16245 16246 <!-- All Pages Scripts --> 16247
16248<script 16249 src="https://storage.googleapis.com/tagalys-front-end-components/tagalys-api-connector-2.0.0-beta2.min.js" 16250 defer 16251 ></script>
16251 16252 16253<!-- Affirm - Updated for cookieless contexts -->
16254<script> 16255 // Configure Affirm with latest settings 16256 var _affirm_config = { 16257 public_api_key: '9KH69N77B4WOA1C7', 16258 script: 'https://cdn1.affirm.com/js/v2/affirm.js', 16259 // Enable cookieless mode (falls back to localStorage/IndexedDB) 16260 use_vcn: false, 16261 // Add error handling for third-party cookie restrictions 16262 onError: function(error) { 16263 console.warn('Affirm SDK:', error.message || 'Third-party cookies unavailable - using fallback'); 16264 // Show static fallback messaging 16265 document.querySelectorAll('.affirm-as-low-as').forEach(function(el) { 16266 if (!el.textContent.trim()) { 16267 var amount = el.getAttribute('data-amount'); 16268 if (amount) { 16269 var monthlyPayment = Math.ceil(amount / 100 / 12); // Rough estimate: divide by 12 months 16270 el.innerHTML = '<span class="affirm-fallback">Financing available from $' + monthlyPayment + '/month. <a href="https://www.affirm.com/how-it-works" target="_blank" rel="noopener">Learn more</a></span>'; 16271 el.style.display = 'block'; 16272 } 16273 } 16274 }); 16275 } 16276 }; 16277 16278 // Async loader with error handling 16279 (function (l, g, m, e, a, f, b) { 16280 var d, 16281 c = l[m] || {}, 16282 h = document.createElement(f), 16283 n = document.getElementsByTagName(f)[0], 16284 k = function (a, b, c) { 16285 return function () { 16286 a[b]._.push([c, arguments]); 16287 }; 16288 }; 16289 c[e] = k(c, e, 'set'); 16290 d = c[e]; 16291 c[a] = {}; 16292 c[a]._ = []; 16293 d._ = []; 16294 c[a][b] = k(c, a, b); 16295 a = 0; 16296 for (b = 'set add save post open empty reset on off trigger ready setProduct'.split(' '); a < b.length; a++) 16297 d[b[a]] = k(c, e, b[a]); 16298 a = 0; 16299 for (b = ['get', 'token', 'url', 'items']; a < b.length; a++) d[b[a]] = function () {}; 16300 16301 // Add error handling for script load failures 16302 h.onerror = function() { 16303 console.warn('Affirm script failed to load - showing fallback messaging'); 16304 if (typeof g.onError === 'function') { 16305 g.onError({ message: 'Script load failed' }); 16306 } 16307 }; 16308 16309 h.async = !0; 16310 h.src = g[f]; 16311 n.parentNode.insertBefore(h, n); 16312 delete g[f]; 16313 d(g); 16314 l[m] = c; 16315 })(window, _affirm_config, 'affirm', 'checkout', 'ui', 'script', 'ready'); 16316 16317 // Fallback timeout: if Affirm doesn't load within 5 seconds, show static content 16318 setTimeout(function() { 16319 if (typeof window.affirm === 'undefined' || !window.affirm.ui) { 16320 console.warn('Affirm SDK did not initialize - using static fallback'); 16321 if (typeof _affirm_config.onError === 'function') { 16322 _affirm_config.onError({ message: 'SDK timeout' }); 16323 } 16324 } 16325 }, 5000); 16326</script>
16326 16327<!-- End Affirm --> 16328 16329 16330<!-- Extend - Add necessary SDK script tags and configure the store -->
16331<script src="https://sdk.helloextend.com/extend-sdk-client/v1/extend-sdk-client.min.js" defer="defer"></script>
vendor: 1 bytes, line 16331
16331
16332<script 16333 src="https://sdk.helloextend.com/extend-sdk-client-shopify-addon/v1/extend-sdk-client-shopify-addon.min.js" 16334 defer="defer" 16335></script>
vendor: 1 bytes, line 16335
16335
16336<script> 16337 window.addEventListener('DOMContentLoaded', function () { 16338 window.Extend.config({ storeId: '2d398a03-5a18-4507-870c-93ed4fdbcd8e', environment: 'production' }); 16339 window.Extend.integration = {}; 16340 16341 // Extend - Analytics and writeLogs boolean 16342 window.Extend.integration.analytics = true; 16343 16344 // Set to true while developing integration for better debugging - Be sure to set to false before going live 16345 window.Extend.integration.writeLogs = false; 16346 16347 // Extend - QA Cypress booleans 16348 window.Extend.integration.isExtendPdpOfferEnabled = true; 16349 window.Extend.integration.isExtendOfferModalEnabled = true; 16350 window.Extend.integration.isExtendMainCartOfferEnabled = true; 16351 16352 // Extend - QA Cypress SP booleans 16353 window.Extend.integration.isShippingProtectionEnabled = false; 16354 window.Extend.integration.isSpCheckOutExt = false; 16355 window.Extend.integration.isShippingProtectionOptOut = true; 16356 window.Extend.integration.isShippingProtectionOnMainCart = false; 16357 16358 // Only defines utils if Extend and ExtendShopify is defined 16359 if (window.Extend && window.ExtendShopify) { 16360 const extendUtils = { 16361 /* 16362 * takes in object and logs it if writeLogs is true 16363 * @param {object} objToLog will be an object of information to log 16364 */ 16365 logger: (objToLog) => { 16366 try { 16367 if (Extend.integration.writeLogs) { 16368 console.log('EXTEND: ', objToLog); 16369 } 16370 } catch (error) { 16371 console.warn('EXTEND: ' + error); 16372 } 16373 }, 16374 }; 16375 window.Extend.integration.utils = extendUtils; 16376 } 16377 }); 16378</script>
16378 16379 16380<!-- Extend - Render aftermarket integration snippet -->
16381<script> 16382 window.addEventListener('DOMContentLoaded', function () { 16383 if ( 16384 window.Extend && 16385 window.ExtendShopify && 16386 window.Shopify && 16387 window.Shopify.currency && 16388 window.Shopify.currency.active === 'USD' 16389 ) { 16390 try { 16391 // Get params from URL 16392 const params = new URL(document.location).searchParams; 16393 16394 // Check if leadToken or leadtoken is in the URL 16395 let leadToken = params.get('leadToken') ? params.get('leadToken') : params.get('leadtoken'); 16396 16397 if (leadToken) { 16398 Extend.aftermarketModal.open({ 16399 leadToken: leadToken, 16400 onClose: function (plan, product, quantity) { 16401 if (plan && product) { 16402 ExtendShopify.addPlanToCart( 16403 { 16404 plan: plan, 16405 product: product, 16406 leadToken: leadToken, 16407 quantity: quantity || 1, 16408 }, 16409 function () { 16410 window.location = '/cart'; 16411 } 16412 ); 16413 } 16414 }, 16415 }); 16416 } 16417 } catch (error) { 16418 console.error('EXTEND: ' + error); 16419 } 16420 } 16421 }); 16422</script>
16422 16423 16424 16425<!-- Extend - Render analytics -->
16426<script> 16427 // run scripts on DOMContentLoaded to avoid affecting site load time 16428 window.addEventListener('DOMContentLoaded', function () { 16429 // Only run ajax integration if Extend and ExtendShopify is defined, the currency is set to USD and analytics are enabled 16430 if ( 16431 window.Extend && 16432 window.ExtendShopify && 16433 Extend.integration.analytics && 16434 window.Shopify && 16435 window.Shopify.currency && 16436 window.Shopify.currency.active === 'USD' 16437 ) { 16438 /***********************/ 16439 /* util functions */ 16440 /***********************/ 16441 16442 // getPlanId - Takes in the cart and a product ID and returns the plan ID for that product 16443 function getPlanId(cart, productId) { 16444 let planId; 16445 cart.items.forEach(function (item) { 16446 if (item.properties.Ref && item.properties.Ref === productId) planId = item.sku.toString(); 16447 }); 16448 return planId; 16449 } 16450 16451 /***********************/ 16452 /* end util functions */ 16453 /***********************/ 16454 16455 // productAnalytics() - Takes in the product ID and quantity at the time it is added to the cart 16456 let productAnalytics = function (prodId, prodQty) { 16457 if (prodId) { 16458 if (!prodQty) prodQty = 1; 16459 16460 Extend.trackProductAddedToCart({ productId: prodId.toString(), productQuantity: parseInt(prodQty) }); 16461 } else { 16462 console.warn('Extend: Product id is ' + prodId); 16463 } 16464 }; 16465 16466 // cartAnalytics() - Takes in the oldCart and the newCart at a point where the cart updates 16467 let cartAnalytics = function (oldCart, newCart) { 16468 try { 16469 //if there is an old or new cart with items. 16470 if (oldCart && newCart && oldCart.items && newCart.items) { 16471 // Triggers if an item has been removed 16472 if (oldCart.items.length > newCart.items.length) { 16473 oldCart.items.forEach(function (currentItem) { 16474 let productFound = false; 16475 newCart.items.forEach(function (currentNewItem) { 16476 if (currentItem.id == currentNewItem.id) { 16477 productFound = true; 16478 } 16479 }); 16480 16481 // making sdk call of which product was removed from cart 16482 if (productFound === false) { 16483 if (currentItem.vendor === 'Extend' && currentItem && currentItem.sku && currentItem.properties.Ref) { 16484 Extend.trackOfferRemovedFromCart({ 16485 productId: currentItem.properties.Ref.toString(), 16486 planId: currentItem.sku.toString(), 16487 }); 16488 } else if (currentItem.id) { 16489 Extend.trackProductRemovedFromCart({ productId: currentItem.id.toString() }); 16490 } 16491 } 16492 }); 16493 16494 // Triggers if an item quantity has changed 16495 } else if (oldCart.item_count != newCart.item_count) { 16496 oldCart.items.forEach(function (currentItem) { 16497 newCart.items.forEach(function (currentNewItem) { 16498 // Runs when the updated item is found if its not an Extend warranty 16499 if ( 16500 currentItem.id == currentNewItem.id && 16501 currentItem.quantity != currentNewItem.quantity && 16502 currentItem.vendor != 'Extend' 16503 ) { 16504 if ( 16505 currentItem.id && 16506 currentNewItem.quantity && 16507 ExtendShopify.warrantyAlreadyInCart(currentItem.id.toString(), oldCart.items) 16508 ) { 16509 // Gets the associated plan ID using the product ID 16510 let planId = getPlanId(newCart, currentItem.id.toString()); 16511 16512 // Product has warranty in cart 16513 Extend.trackOfferUpdated({ 16514 productId: currentItem.id.toString(), 16515 planId: planId, 16516 updates: { 16517 warrantyQuantity: parseInt(currentNewItem.quantity), 16518 productQuantity: parseInt(currentNewItem.quantity), 16519 }, 16520 }); 16521 } else if (currentItem.id && currentNewItem.quantity) { 16522 // Product has no warranty in cart 16523 Extend.trackProductUpdated({ 16524 productId: currentItem.id.toString(), 16525 updates: { 16526 productQuantity: parseInt(currentNewItem.quantity), 16527 }, 16528 }); 16529 } 16530 } 16531 }); 16532 }); 16533 } 16534 } else { 16535 console.warn('EXTEND: corrupt cart objects'); 16536 } 16537 } catch (error) { 16538 console.error('EXTEND: ' + error); 16539 } 16540 }; 16541 16542 window.Extend.integration.productAnalytics = productAnalytics; 16543 window.Extend.integration.cartAnalytics = cartAnalytics; 16544 } 16545 }); 16546</script>
16546 16547 16548 16549<!-- Extend -- Load sidecart integration script -->
16550<script> 16551 // run scripts on DOMContentLoaded to avoid affecting site load time 16552 window.addEventListener('DOMContentLoaded', function () { 16553 16554 // Only run ajax integration if Extend and ExtendShopify is defined, and the currency is set to USD 16555 if (window.Extend && window.ExtendShopify && window.Shopify && window.Shopify.currency && window.Shopify.currency.active === 'USD') { 16556 16557 /*****************************************/ 16558 /* Global Variables - THEME SPECIFIC */ 16559 /*****************************************/ 16560 16561 let cartRowItem = '#drawer-cart_form .drawer-cart-item'; // This is the container element for each item in the cart 16562 let cartRowItemTitle = '.drawer-cart-item__title'; // This is the title anchor element for the product 16563 let cartRowItemImage = '.drawer-cart-item__image'; // This is the product image or image anchor element 16564 let cartRowItemQuantity = '.drawer-cart-item__quantity'; // This is the input element containing the product quantity 16565 let warrantyContainer = '.drawer-cart-item__info'; // This is the container where the offer will be appended 16566 let warrantyOriginalMeta = '.drawer-cart-item__info .type--smaller'; // Each warranty metadata item we want to remove. 16567 let metadataContainer = '.drawer-cart-item__info'; // This is where warranty metadata will be appended (Product and Term) 16568 let offerClass = 'extend-side-cart-offer'; // This is the class that will be assigned to each Extend offer 16569 let titleReformat = false; // If warranty titles contain various extra characters, set this to true. Sets title to 'Extend Protection Plan' 16570 let localCart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}; // Shopify Cart Object on initial load 16571 let regEx = /\d+$/; 16572 const extendUtils = window.Extend.integration.utils; 16573 const extendLogger = extendUtils.logger; 16574 16575 // QA Cypress variables 16576 window.Extend.integration.sideCartRowItem = cartRowItem; 16577 window.Extend.integration.sideCartRowItemTitle = cartRowItemTitle; 16578 window.Extend.integration.sideCartRowItemImage = cartRowItemImage; 16579 window.Extend.integration.sideCartRowItemQuantity = cartRowItemQuantity; 16580 window.Extend.integration.sideWarrantyContainer = warrantyContainer; 16581 window.Extend.integration.sideWarrantyOriginalMeta = warrantyOriginalMeta; 16582 window.Extend.integration.sideMetadataContainer = metadataContainer; 16583 window.Extend.integration.sideCartOffer = offerClass; 16584 16585 // Fail safe for cart 16586 if (!localCart) { 16587 console.error("EXTEND: Exiting - localCart unavailable") 16588 return false; 16589 } 16590 16591 /***********************/ 16592 /* util functions */ 16593 /***********************/ 16594 // findAll(element) - querySelectorAll to search for children in document OR a parentElement 16595 function findAll(elementToFind, parentElement) { 16596 const items = parentElement 16597 ? parentElement.querySelectorAll(elementToFind) 16598 : document.querySelectorAll(elementToFind); 16599 return items; 16600 } 16601 16602 /**************************************/ 16603 /* refreshCart - THEME SPECIFIC */ 16604 /**************************************/ 16605 // Refresh the cart (hard refresh by default) 16606 function refreshCart() { 16607 fetch("/cart.js", { 16608 credentials: "same-origin", 16609 method: "GET", 16610 headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } 16611 }).then(function (updatedCart) { 16612 return updatedCart.json().then(({ items, total_price }) => { 16613 if (localCart.items.length != items.length) { 16614 return location.href = location.hash ? location.href.substring(0, location.href.indexOf("#")) : location.href; 16615 } 16616 16617 const currentCartItemElements = document.querySelectorAll(cartRowItem); 16618 Array.from(currentCartItemElements).forEac
16618h(function (element, index) { 16619 16620 if (items[index].title.indexOf('Extend Protection') > -1) { 16621 let newItemPrice = items[index].price * items[index].quantity 16622 newItemPrice = newItemPrice.toString() 16623 let newItemPriceSpan = element.querySelector('.drawer-cart-item__price'); 16624 16625 if (newItemPrice.length > 5) { 16626 newItemPrice = newItemPrice.substring(0, newItemPrice.length - 5) + "," + newItemPrice.substring(newItemPrice.length - 5); 16627 } 16628 newItemPrice = newItemPrice.substring(0, newItemPrice.length - 2) + "." + newItemPrice.substring(newItemPrice.length - 2); 16629 16630 16631 newItemPriceSpan.innerHTML = '$' + newItemPrice; 16632 } 16633 16634 const quantity = element.querySelector(cartRowItemQuantity); 16635 if (quantity.value != items[index].quantity) { 16636 quantity.value = items[index].quantity; 16637 } 16638 }); 16639 16640 window.setTimeout(function () { 16641 handleStyling(); 16642 16643 let newPrice = total_price.toString(); 16644 if (newPrice.length > 5) { 16645 newPrice = newPrice.substring(0, newPrice.length - 5) + "," + newPrice.substring(newPrice.length - 5); 16646 } 16647 16648 newPrice = newPrice.substring(0, newPrice.length - 2) + "." + newPrice.substring(newPrice.length - 2); 16649 document.querySelector("#drawer-cart_total-price").innerHTML = "$" + newPrice; 16650 if (document.querySelector('.drawer-cart_checkout-price')) document.querySelector('.drawer-cart_checkout-price').innerHTML = "$" + newPrice; 16651 }, 500); 16652 }); 16653 }); 16654 } 16655 16656 /***********************/ 16657 /* createElement */ 16658 /***********************/ 16659 // createElement(product) - Takes in the product element, and creates the Extend offer element + appends the offer 16660 function createElement(product, index) { 16661 try { 16662 // Removes existing offer elements before creating new ones 16663 let extendOffer = product.querySelector('.' + offerClass); 16664 if (extendOffer) 16665 extendOffer.remove(); 16666 16667 // Grab URL from title anchor href 16668 let url = product.querySelector(cartRowItemTitle).href; 16669 16670 // Grabs variant ID from URL if available, otherwise from localCart 16671 let variantId = (url && url.match(regEx)) ? url.match(regEx)[0] : localCart.items[index].id; 16672 16673 if (!variantId) { 16674 throw new Error("Exiting - variantId unavailable") 16675 } 16676 // Select quantity value - Side Cart 16677 let quantity = product.querySelector(cartRowItemQuantity).value; 16678 16679 // Parent container to append ajax offer 16680 let container = product.querySelector(warrantyContainer); 16681 16682 extendLogger({ variantId, quantity, container }); 16683 16684 // Fail safes 16685 if (!variantId || !quantity || !container) { 16686 throw new Error("Exiting - variant, quantity or container unavailable"); 16687 } 16688 16689 // Create new element & set class, data-extend-variant, and data-extend-quantity attributes 16690 let newExtendOffer = document.createElement('div'); 16691 newExtendOffer.className = offerClass; 16692 newExtendOffer.setAttribute('data-extend-variant', variantId); 16693 newExtendOffer.setAttribute('data-extend-quantity', quantity); 16694 16695 // Append the offer to the container element (THEME SPECIFIC) 16696 container.parentElement.parentElement.insertBefore(newExtendOffer, container.parentElement.parentElement.querySelector('.drawer-cart_quantity-container')); 16697 } catch (error) { 16698 console.error("EXTEND:", error); 16699 } 16700 } 16701 16702 /************************/ 16703 /* Handle Styling */ 16704 /************************/ 16705 // Finds all cartRowItems and styles only Extend warranties 16706 function handleStyling() { 16707 16708 findAll(cartRowItem).forEach(function (el, index) { 16709 try { 16710 // Grab the title of the current item 16711 let title = el.querySelector(cartRowItemTitle); 16712 extendLogger({ title }); 16713 16714 // Title fail safe 16715 if (!title) { 16716 throw new Error("Exiting - title unavailable"); 16717 } 16718 16719 el.querySelectorAll('button').forEach(function (each) { 16720 if (each.innerText.indexOf('Edit') > -1) each.remove() 16721 }) 16722 16723 // If it's a warranty set isExtend to true and remove links
16724 if (title.innerText.toLowerCase().indexOf('extend protection') > -1) { // Grab the image of the current item and fail safe 16725 // Select and remove pointerEvents from warranty title 16726 title.parentElement.style.pointerEvents = 'none'; 16727 16728 if (titleReformat === true) { 16729 title.innerText = 'Extend Protection Plan'; 16730 }; 16731 16732 let image = el.querySelector(cartRowItemImage); 16733 extendLogger({ image }); 16734 16735 if (!image) { 16736 throw new Error("Exiting - image unavailable"); 16737 } 16738 16739 // Select and remove pointerEvents from warranty image 16740 image.style.pointerEvents = 'none'; 16741 16742 /**************************************/ 16743 /* THEME SPECIFIC STYLING START */ 16744 /**************************************/ 16745 16746 // Removes old metadata 16747 if (el.querySelector(warrantyOriginalMeta)) { 16748 findAll(warrantyOriginalMeta, el).forEach(function (each) { 16749 each.remove(); 16750 }) 16751 } 16752 16753 // Selects where to append warranty metadata 16754 let contentContainer = el.querySelector(metadataContainer) 16755 let warrantyProductData; 16756 let warrantyTermData; 16757 16758 if (localCart.items[index].options_with_values && localCart.items[index].options_with_values[1]) { // Finds the ref id string in the product info string and replaces with an empty string 16759 let regexReplace = localCart.items[index].options_with_values[0].value.match(/\-\d{5,}/g); 16760 warrantyProductData = localCart.items[index].options_with_values[0].value.replace(regexReplace, ''); 16761 warrantyTermData = localCart.items[index].options_with_values[1].value; 16762 } else { 16763 warrantyProductData = localCart.items[index].properties.Product; 16764 warrantyTermData = localCart.items[index].properties.Term; 16765 } 16766 16767 // For category offers, fetch title by filtering through cart for warranted product refId 16768 if (warrantyProductData === "Covered Product") { 16769 const coveredProdId = localCart.items[index].properties['_Extend.ProductId']; 16770 const coveredProdTitle = localCart.items.filter((item) => item.id.toString() == coveredProdId)[0].title; 16771 warrantyProductData = coveredProdTitle; 16772 } 16773 16774 // Appends Product and Term metadata 16775 if (el.querySelector(metadataContainer)) { 16776 let warrantyProductName = document.createElement('p'); 16777 warrantyProductName.className = 'extend-warranty-info'; 16778 warrantyProductName.innerHTML = '<b style="font-size: 13px;">Product: </b>' + warrantyProductData; 16779 warrantyProductName.style.margin = '0'; 16780 warrantyProductName.setAttribute('data-cy', 'warranty-description-product'); 16781 let warrantyProductTerm = document.createElement('p') 16782 warrantyProductTerm.className = 'extend-warranty-info'; 16783 warrantyProductTerm.innerHTML = '<b style="font-size: 13px;">Term: </b>' + warrantyTermData; 16784 warrantyProductTerm.style.margin = '0'; 16785 warrantyProductTerm.setAttribute('data-cy', 'warranty-description-term'); 16786 16787 // Only append the metadata if it's not already there 16788 if (!el.querySelector('.extend-warranty-info')) { 16789 contentContainer.append(warrantyProductName, warrantyProductTerm); 16790 } 16791 16792 } 16793 16794 /**************************************/ 16795 /* THEME SPECIFIC STYLING END */ 16796 /**************************************/ 16797 16798 } else { // Create an offer element for each product 16799 if (el.querySelector('.extend-warranty-info')) el.querySelectorAll('.extend-warranty-info').forEach(function(each) {each.remove()}) 16800 createElement(el, index); 16801 } 16802 } catch (error) { 16803 console.error("EXTEND:", error); 16804 } 16805 }); 16806 } 16807 16808 /************************/ 16809 /* initializeCartOffer */ 16810 /************************/ 16811 // Invokes handleStyling and finds all offers in the cart, handling both normalization and balancing 16812 function initializeCartOffer() { 16813 16814 // Handles styling and creates offer elements 16815 handleStyling(); 16816 16817 // Find all offer elements
16818 findAll('.' + offerClass).forEach(function (el) { 16819 16820 // Grab attributes out of element 16821 let variantId = el.getAttribute('data-extend-variant'); 16822 let quantity = el.getAttribute('data-extend-quantity'); 16823 16824 16825 // Grabs the product category and price from the current item metadata 16826 let productCategory; 16827 let productPrice; 16828 if (localCart.items.filter(item => item.id.toString() === variantId).length > 0) { 16829 productCategory = localCart.items.filter(item => item.id.toString() === variantId)[0].product_type 16830 productPrice = parseInt(localCart.items.filter(item => item.id.toString() === variantId)[0].price); 16831 } 16832 16833 // If there's already a warranty in cart, return 16834 if (ExtendShopify.warrantyAlreadyInCart(variantId, localCart.items)) { 16835 return true; 16836 } else { 16837 // Render all other buttons 16838 Extend.buttons.renderSimpleOffer(el, { 16839 referenceId: variantId, 16840 price: productPrice, 16841 category: productCategory, 16842 onAddToCart: function (options) { 16843 ExtendShopify.addPlanToCart({ 16844 plan: options.plan, 16845 product: options.product, 16846 quantity: quantity 16847 }, function (err) { 16848 try { 16849 // An error occurred 16850 if (err) { 16851 throw new Error({ "Exiting - Error in onAddToCart": error }); 16852 } else { 16853 refreshCart(); 16854 } 16855 } catch (error) { 16856 console.error("EXTEND:", error) 16857 } 16858 }); 16859 } 16860 }); 16861 } 16862 }) 16863 16864 // Normalization ensures there is a 1:1 relationship between the product and the warranty 16865 ExtendShopify.normalizeCart({ 16866 cart: localCart, 16867 balance: true 16868 }, function (err, data) { 16869 try { 16870 // An error occurred 16871 if (err) { 16872 throw new Error({ "Exiting - Error in normalizeCart": error }); 16873 } else if (data && data.updates) { // Calls refreshCart to update the cart for normalization 16874 refreshCart(); 16875 } else { 16876 extendLogger("no cart updates") 16877 } 16878 } catch (error) { 16879 console.error("EXTEND:", error) 16880 } 16881 }); 16882 } 16883 16884 // Function to run when the content of the element changes 16885 function contentChanged(mutationsList, observer) { 16886 for (let mutation of mutationsList) { 16887 if (mutation.type === 'childList' && mutation.target.id === 'drawer-cart_total-price') { 16888 // The content of #cart_total-price has changed 16889 window.dispatchEvent(new Event('refreshAjaxSideCart')) 16890 } 16891 } 16892 } 16893 const targetNode = document.querySelector('#drawer-cart_total-price'); 16894 const observer = new MutationObserver(contentChanged); 16895 const config = { childList: true, subtree: true }; 16896 observer.observe(targetNode, config); 16897 16898 window.addEventListener('refreshAjaxSideCart', function (e) { 16899 fetch('/cart.js', { 16900 credentials: 'same-origin', 16901 method: 'GET', 16902 headers: { 16903 'Content-Type': 'application/json', 16904 'X-Requested-With': 'XMLHttpRequest' 16905 } 16906 }) 16907 .then((e) => { 16908 e.json() 16909 .then((e) => { 16910 if (window.Extend.integration.analytics) 16911 window.Extend.integration.cartAnalytics(localCart, e); 16912 16913 localCart = e; 16914 initializeCartOffer(); 16915 }) 16916 .catch((error) => { 16917 console.error("EXTEND:", error) 16918 }); 16919 }) 16920 .catch((error) => { 16921 console.error("EXTEND: Failed to fetch cart - ", error) 16922 }); 16923 }); 16924 } 16925 }); 16926</script>
16926 16927 16928<style> 16929 .extend-warranty-info { 16930 font-size: 13px; 16931 } 16932 16933 .extend-side-cart-offer { 16934 margin-top: 5px; 16935 } 16936 16937 .extend-side-cart-offer iframe { 16938 height: 30px !important; 16939 } 16940 16941 #extend-offers-modal-iframe { 16942 z-index: 99999999999 !important; 16943 } 16944 16945 #extend-learn-more-modal-iframe { 16946 z-index: 99999999999 !important; 16947 } 16948</style> 16949 16950 16951 16952 16953 16954 16955<!-- Extend - End Extend code --> 16956 16957
16958<script defer async> 16959 (function (d) { 16960 var s = d.createElement('script'); 16961 /* uncomment the following line to override default position*/ 16962 /* s.setAttribute("data-position", 3);*/ 16963 /* uncomment the following line to override default size (values: small, large)*/ 16964 /* s.setAttribute("data-size", "small");*/ 16965 /* uncomment the following line to override default language (e.g., fr, de, es, he, nl, etc.)*/ 16966 /* s.setAttribute("data-language", "language");*/ 16967 /* uncomment the following line to override color set via widget (e.g., #053f67)*/ 16968 /* s.setAttribute("data-color", "#053e67");*/ 16969 /* uncomment the following line to override type set via widget (1=person, 2=chair, 3=eye, 4=text)*/ 16970 /* s.setAttribute("data-type", "1");*/ 16971 /* s.setAttribute("data-statement_text:", "Our Accessibility Statement");*/ 16972 /* s.setAttribute("data-statement_url", "http://www.example.com/accessibility")";*/ 16973 /* uncomment the following line to override support on mobile devices*/ 16974 /* s.setAttribute("data-mobile", true);*/ 16975 /* uncomment the following line to set custom trigger action for accessibility menu*/ 16976 /* s.setAttribute("data-trigger", "triggerId")*/ 16977 s.setAttribute('data-account', 'cMPVK3zicN'); 16978 s.setAttribute('src', 'https://cdn.userway.org/widget.js'); 16979 (d.body || d.head).appendChild(s); 16980 })(document); 16981</script>
16981 16982
16983<script type="text/javascript"> 16984 (function () { 16985 'use strict'; 16986 var e = null, 16987 n = '48761', 16988 additional = '', 16989 t, 16990 r, 16991 i; 16992 try { 16993 t = top.document.referer !== '' ? encodeURIComponent(top.document.referrer.substring(0, 2048)) : ''; 16994 } catch (o) { 16995 t = document.referrer !== null ? document.referrer.toString().substring(0, 2048) : ''; 16996 } 16997 try { 16998 i = parent.location.href !== '' ? encodeURIComponent(parent.location.href.toString().substring(0, 2048)) : ''; 16999 } catch (a) { 17000 try { 17001 i !== null ? encodeURIComponent(i.toString().substring(0, 2048)) : ''; 17002 } catch (f) { 17003 i = ''; 17004 } 17005 } 17006 var l, 17007 c = document.createElement('script'), 17008 h = null, 17009 p = document.getElementsByTagName('script'), 17010 d = Number(p.length) - 1, 17011 v = document.getElementsByTagName('script')[d]; 17012 if (typeof l === 'undefined') { 17013 l = Math.floor(Math.random() * 1e17); 17014 } 17015 h = 'https://dx.mountain.com/spx?' + 'shaid=' + n + '&tdr=' + t + '&plh=' + i + '&cb=' + l + additional; 17016 c.type = 'text/javascript'; 17017 c.async = true; 17018 c.src = h; 17019 v.parentNode.insertBefore(c, v); 17020 })(); 17021</script>
17021 17022
17023<script> 17024 (function () { 17025 'use strict'; 17026 17027 // Function to update gift section visibility based on subscription selection 17028 function updateGiftSectionVisibility() { 17029 const subscriptionRadio = document.querySelector('.loop-subscription-group-radio:checked'); 17030 const giftSection = document.querySelector('.loop-gw-container'); 17031 17032 if (giftSection) { 17033 giftSection.style.display = subscriptionRadio ? 'none' : 'block'; 17034 } 17035 } 17036 17037 // Run initial check 17038 function initialize() { 17039 updateGiftSectionVisibility(); 17040 17041 // Event-driven: Listen for radio button changes 17042 const radioButtons = document.querySelectorAll('input[name="loop_purchase_option"]'); 17043 radioButtons.forEach(function(radio) { 17044 radio.addEventListener('change', updateGiftSectionVisibility); 17045 }); 17046 17047 // Fallback: MutationObserver for dynamically added radio buttons 17048 // (in case Loop widget adds them after page load) 17049 const observer = new MutationObserver(function(mutations) { 17050 let needsUpdate = false; 17051 17052 mutations.forEach(function(mutation) { 17053 // Check if radio buttons or gift section were added/modified 17054 if (mutation.type === 'childList') { 17055 mutation.addedNodes.forEach(function(node) { 17056 if (node.nodeType === 1) { // Element node
17057 // Check if added node contains Loop radio buttons 17058 if (node.matches && node.matches('input[name="loop_purchase_option"]')) { 17059 node.addEventListener('change', updateGiftSectionVisibility); 17060 needsUpdate = true; 17061 } else if (node.querySelector) { 17062 const radios = node.querySelectorAll('input[name="loop_purchase_option"]'); 17063 radios.forEach(function(radio) { 17064 radio.addEventListener('change', updateGiftSectionVisibility); 17065 }); 17066 if (radios.length > 0) needsUpdate = true; 17067 } 17068 17069 // Check if gift section was added 17070 if ((node.matches && node.matches('.loop-gw-container')) || 17071 (node.querySelector && node.querySelector('.loop-gw-container'))) { 17072 needsUpdate = true; 17073 } 17074 } 17075 }); 17076 } else if (mutation.type === 'attributes' && 17077 mutation.target.matches && 17078 mutation.target.matches('input[name="loop_purchase_option"]')) { 17079 // Radio button attributes changed (e.g., checked state) 17080 needsUpdate = true; 17081 } 17082 }); 17083 17084 if (needsUpdate) { 17085 updateGiftSectionVisibility(); 17086 } 17087 }); 17088 17089 // Observe the product form for changes 17090 const productForm = document.querySelector('form[action="/cart/add"]') || document.body; 17091 if (productForm) { 17092 observer.observe(productForm, { 17093 childList: true, 17094 subtree: true, 17095 attributes: true, 17096 attributeFilter: ['checked'] 17097 }); 17098 } 17099 } 17100 17101 // Wait for DOM to be ready 17102 if (document.readyState === 'loading') { 17103 document.addEventListener('DOMContentLoaded', initialize); 17104 } else { 17105 initialize(); 17106 } 17107 })(); 17108</script>
17108 17109 17110 17111<!-- Homepage Specific Scripts --> 17112 17113 17114<!-- Product Specific Scripts --> 17115 17116 </div> 17117<!-- Navidium disabled
17118<script src="https://cdn.navidiumapp.com/navidium-widgets/extension/navidium-extension-checker.js"></script>
vendor: 2 bytes, line 17118
17118
17119<script> 17120 fetch('/cart/update.js', { 17121 method: 'POST', 17122 headers: { 17123 'Content-Type': 'application/json' 17124 }, 17125 body: JSON.stringify({ 17126 attributes: { 17127 _nvd_opted_in: 1 17128 } 17129 }) 17130 }); 17131</script>
17131 17132--> 17133 <style> [data-testid="hub-widget-container"] {display: none !important;} </style> 17134<!-- Failed to render app block "1530068250781986104": app block path "shopify://apps/fbp-fast-bundle/blocks/fast_bundle/9e87fbe2-9041-4c23-acf5-322413994cef" does not exist --><div id="shopify-block-AOUhadktlbTJPcUMyU__5735339852805025236" class="shopify-block shopify-app-block"> 17135 17136 17137 17138 17139
17140<script type="text/javascript"> 17141 (() => { 17142 const pixleeApiKey = "AZEdZV1lT9zETRDMg2Lu"; 17143 const pixleeAccountId = 1948; 17144 const pixleeAttributionWindow = Number.parseInt(30, 10); 17145 const pixleeWebPixelActive = true; 17146 const pixleeUseLegacyCartFallback = pixleeWebPixelActive === false; 17147 const pixleeRequireCookieConsent = false; 17148 const pixleeEnvironment = "production"; 17149 const pixleeWidgetScriptSrc ='https://assets.pxlecdn.com/assets/pixlee_widget_1_0_0.js'; 17150 const pixleeEventsScriptSrc ='https://assets.pixlee.com/assets/pixlee_events.js'; 17151 const pixleeAnalyticsInboundUrl = pixleeEnvironment === 'production' 17152 ? 'https://inbound-analytics.pixlee.com' 17153 : 'https://inbound-analytics-staging.pixlee.com'; 17154 17155 const attributionWindow = pixleeAttributionWindow > 0 ? pixleeAttributionWindow : 30; 17156 17157 const state = { 17158 widgetScriptId: 'pixlee_widget_script', 17159 eventsScriptId: 'pixlee_events_script', 17160 eventsLoaded: false, 17161 eventsLoadPromise: null, 17162 legacyCartTrackingStarted: false, 17163 cartSnapshotTimer: null, 17164 consentApi: null 17165 }; 17166 17167 const log = (type, ...args) => { 17168 if (typeof console !== 'undefined' && typeof console[type] === 'function') { 17169 console[type](...args); 17170 } 17171 }; 17172 17173 const onReady = (fn) => { 17174 if (document.readyState === 'loading') { 17175 document.addEventListener('DOMContentLoaded', fn, { once: true }); 17176 } else { 17177 fn(); 17178 } 17179 }; 17180 17181 const loadScript = (src, opts = {}) => 17182 new Promise((resolve, reject) => { 17183 const script = document.createElement('script'); 17184 script.src = src; 17185 script.async = opts.async !== false; 17186 if (opts.defer) script.defer = true; 17187 if (opts.id) script.id = opts.id; 17188 script.onload = resolve; 17189 script.onerror = (err) => reject(err || new Error('Failed to load script')); 17190 document.head.appendChild(script); 17191 }); 17192 17193 const parsePixleeCookie = () => { 17194 const findCookie = (name, cookies) => { 17195 const row = cookies.find((entry) => entry.trim().startsWith(`${name}=`)); 17196 if (!row) return null; 17197 const value = row.substring(row.indexOf('=') + 1); 17198 try { 17199 return JSON.parse(decodeURIComponent(decodeURIComponent(value))); 17200 } catch (err) { 17201 try { 17202 return JSON.parse(decodeURIComponent(value)); 17203 } catch (nestedErr) { 17204 return null; 17205 } 17206 } 17207 }; 17208 17209 const cookies = document.cookie.split(';'); 17210 return ( 17211 findCookie('pixlee_analytics_cookie', cookies) || 17212 findCookie('pixlee_analytics_cookie_legacy', cookies) 17213 ); 17214 }; 17215 17216 const hasPixleeUserId = () => { 17217 const cookie = parsePixleeCookie(); 17218 return cookie?.CURRENT_PIXLEE_USER_ID != null && cookie.CURRENT_PIXLEE_USER_ID !== ''; 17219 }; 17220 17221 const mergePixleeCookie = (updates) => { 17222 const existing = parsePixleeCookie() || {}; 17223 const merged = { ...existing, ...updates }; 17224 const encodedValue = encodeURIComponent(JSON.stringify(merged)); 17225 const baseParts = [ 17226 'path=/', 17227 `domain=${window.location.hostname.replace(/^www\./, '')}` 17228 ]; 17229 if (attributionWindow > 0) { 17230 const date = new Date(); 17231 date.setTime(date.getTime() + attributionWindow * 24 * 60 * 60 * 1000); 17232 baseParts.push(`expires=${date.toUTCString()}`); 17233 } 17234 document.cookie = `pixlee_analytics_cookie_legacy=${encodedValue}; ${baseParts.join('; ')}`; 17235 baseParts.push('SameSite=None; Secure'); 17236 document.cookie = `pixlee_analytics_cookie=${encodedValue}; ${baseParts.join('; ')}`; 17237 return merged; 17238 }; 17239 17240 // Fallback for shops explicitly recorded as not having an app web pixel. 17241 const checkChangeAndSendCart = () => { 17242 if (!pixleeUseLegacyCartFallback) { 17243 return; 17244 } 17245 if (window.Shopify?.checkout !== undefined) { 17246 return; 17247 } 17248 17249 const cookie = parsePixleeCookie(); 17250 const uid = cookie?.CURRENT_PIXLEE_USER_ID; 17251 if (!uid) { 17252 log('warn', 'Legacy add-to-cart skipped: Pixlee user ID not available'); 17253 return; 17254 } 17255 17256 const getCart = new XMLHttpRequest(); 17257 getCart.open('GET', '/cart.json'); 17258 getCart.send(); 17259 17260 getCart.onreadystatechange = function() { 17261 if (getCart.readyState !== 4) { 17262 return; 17263 } 17264 if (getCart.status !== 200 && getCart.status !== 201) { 17265 log('warn', 'Legacy add-to-cart failed to load cart', getCart.status); 17266 return; 17267 } 17268 17269 try { 17270 const data = JSON.parse(getCart.responseText); 17271 let productIdsSum = 0; 17272 data.currency ||= window.ShopifyAnalytics?.meta?.currency || 'USD'; 17273 17274 for (let i = 0; i < data.items.length; i++) { 17275 productIdsSum += data.items[i].id * data.items[i].quantity; 17276 } 17277 17278 const analyticsCookie = parsePixleeCookie() || {}; 17279 const existingCartSig = analyticsCookie.pixlee_cart_sig; 17280 if (existingCartSig !== undefined && existingCartSig === productIdsSum) { 17281 return; 17282 } 17283 17284 data.uid = uid; 17285 data.shopify_domain = window.Shopify?.shop; 17286 17287 const sendCart = new XMLHttpRequest(); 17288 sendCart.open('POST', `${pixleeAnalyticsInboundUrl}/events/shopifyCart`); 17289 sendCart.setRequestHeader('Content-Type', 'application/json'); 17290 sendCart.send(JSON.stringify(data)); 17291 17292 sendCart.onreadystatechange = function() { 17293 if (sendCart.readyState !== 4) { 17294 return; 17295 } 17296 if (sendCart.status === 200 || sendCart.status === 201) { 17297 mergePixleeCookie({ pixlee_cart_sig: productIdsSum }); 17298 } else if (sendCart.status !== 0 && sendCart.status !== 403) { 17299 log('warn', 'Legacy add-to-cart failed to send cart', sendCart.status); 17300 } 17301 }; 17302 } catch (err) { 17303 log('warn', 'Legacy add-to-cart failed to parse cart', err); 17304 } 17305 }; 17306 }; 17307 17308 const scheduleCartSnapshot = () => { 17309 if (state.cartSnapshotTimer) { 17310 clearTimeout(state.cartSnapshotTimer); 17311 } 17312 state.cartSnapshotTimer = setTimeout(() => { 17313 state.cartSnapshotTimer = null; 17314 checkChangeAndSendCart(); 17315 }, 250); 17316 }; 17317 17318 const isCartMutation = (url) => {
17319 try { 17320 const path = new URL(url, window.location.origin).pathname; 17321 return /^\/(?:[^/]+\/)?cart\/(?:add|change|update|clear)(?:\.js|\.json)?$/.test(path); 17322 } catch (_err) { 17323 return false; 17324 } 17325 }; 17326 17327 const trackCartMutations = () => { 17328 if (state.legacyCartTrackingStarted || !pixleeUseLegacyCartFallback) { 17329 return; 17330 } 17331 state.legacyCartTrackingStarted = true; 17332 17333 const originalFetch = window.fetch; 17334 if (typeof originalFetch === 'function') { 17335 window.fetch = function(input, init) { 17336 const url = typeof input === 'string' ? input : input?.url; 17337 const requestIsCartMutation = isCartMutation(url); 17338 return originalFetch.call(this, input, init).then((response) => { 17339 if (requestIsCartMutation && response.ok) { 17340 scheduleCartSnapshot(); 17341 } 17342 return response; 17343 }); 17344 }; 17345 } 17346 17347 const originalOpen = XMLHttpRequest.prototype.open; 17348 const originalSend = XMLHttpRequest.prototype.send; 17349 XMLHttpRequest.prototype.open = function(method, url, ...args) { 17350 this.pixleeCartMutation = method?.toUpperCase() !== 'GET' && isCartMutation(url); 17351 return originalOpen.call(this, method, url, ...args); 17352 }; 17353 XMLHttpRequest.prototype.send = function(...args) { 17354 if (this.pixleeCartMutation) { 17355 this.addEventListener('loadend', () => { 17356 if (this.status >= 200 && this.status < 300) { 17357 scheduleCartSnapshot(); 17358 } 17359 }, { once: true }); 17360 } 17361 return originalSend.call(this, ...args); 17362 }; 17363 17364 document.addEventListener('submit', (event) => { 17365 const action = event.target?.action; 17366 if (isCartMutation(action)) { 17367 scheduleCartSnapshot(); 17368 } 17369 }); 17370 }; 17371 17372 const startLegacyCartTracking = async () => { 17373 trackCartMutations(); 17374 if (await waitForPixleeUserId(10000)) { 17375 scheduleCartSnapshot(); 17376 } else { 17377 log('warn', 'Legacy add-to-cart skipped: Pixlee user ID not available'); 17378 } 17379 }; 17380 17381 // Give the web pixel a short window to populate the shared cookie before pixlee_events.js 17382 // falls back to the legacy DUH iframe / fingerprint identity path. 17383 const waitForPixleeUserId = (maxMs = 3000, intervalMs = 100) => 17384 new Promise((resolve) => { 17385 if (hasPixleeUserId()) { 17386 resolve(true); 17387 return; 17388 } 17389 17390 const started = Date.now(); 17391 const timer = setInterval(() => { 17392 if (hasPixleeUserId() || Date.now() - started >= maxMs) { 17393 clearInterval(timer); 17394 resolve(hasPixleeUserId()); 17395 } 17396 }, intervalMs); 17397 }); 17398 17399 const createPixleeConsentHelper = () => { 17400 if (window.PixleeAppConsent) { 17401 return window.PixleeAppConsent; 17402 } 17403 17404 let consentAllowed = false; 17405 let ready = false; 17406 const listeners = new Set(); 17407 17408 const notify = () => { 17409 listeners.forEach((cb) => { 17410 try { 17411 cb(consentAllowed); 17412 } catch (err) { 17413 log('error', 'Pixlee consent callback failed:', err); 17414 } 17415 }); 17416 }; 17417 17418 const updateConsent = (allowed) => { 17419 const next = Boolean(allowed); 17420 if (ready && consentAllowed === next) { 17421 return; 17422 } 17423 consentAllowed = next; 17424 ready = true; 17425 notify(); 17426 }; 17427 17428 const evaluateConsent = () => { 17429 const cp = window?.Shopify?.customerPrivacy; 17430 let allowed = false; 17431 17432 if (cp) { 17433 const hasAnalytics = (consentObj) => { 17434 const v = consentObj?.analytics; 17435 return v === 'yes' || v === true || v === 'true'; 17436 }; 17437 const consentValues = []; 17438 17439 try { 17440 if (typeof cp.currentUserConsent === 'function') { 17441 consentValues.push(hasAnalytics(cp.currentUserConsent())); 17442 } 17443 if (typeof cp.currentVisitorConsent === 'function') { 17444 consentValues.push(hasAnalytics(cp.currentVisitorConsent())); 17445 } 17446 } catch (err) { 17447 log('warn', 'Unable to read Shopify consent status:', err); 17448 } 17449 17450 try { 17451 if (consentValues.length > 0) { 17452 allowed = consentValues.every(Boolean); 17453 } else if (typeof cp.userCanBeTracked === 'function') { 17454 allowed = !!cp.userCanBeTracked(); 17455 } 17456 } catch (err) { 17457 log('warn', 'Unable to read Shopify user tracking status:', err); 17458 } 17459 } 17460 17461 updateConsent(allowed); 17462 }; 17463 17464 const attachConsentEvents = () => { 17465 document.addEventListener('visitorConsentCollected', evaluateConsent); 17466 if ( 17467 window.Shopify && 17468 window.Shopify.customerPrivacy && 17469 typeof window.Shopify.customerPrivacy.on === 'function' 17470 ) { 17471 window.Shopify.customerPrivacy.on('consent_changed', evaluateConsent); 17472 } 17473 }; 17474 17475 const initShopifyConsent = () => { 17476 if (!window.Shopify || typeof window.Shopify.loadFeatures !== 'function') { 17477 if (document.readyState === 'loading') { 17478 document.addEventListener('DOMContentLoaded', initShopifyConsent, { once: true }); 17479 } 17480 return; 17481 } 17482 17483 window.Shopify.loadFeatures( 17484 [ 17485 { 17486 name: 'consent-tracking-api', 17487 version: '0.1' 17488 } 17489 ], 17490 function (error) { 17491 if (error) { 17492 log('error', 'Error loading Shopify consent-tracking-api:', error); 17493 return; 17494 } 17495 17496 attachConsentEvents(); 17497 evaluateConsent(); 17498 } 17499 ); 17500 }; 17501 17502 const onChange = (cb) => { 17503 if (typeof cb !== 'function') { 17504 return () => {}; 17505 } 17506 listeners.add(cb); 17507 if (ready) { 17508 try { 17509 cb(consentAllowed); 17510 } catch (err) { 17511 log('error', 'Pixlee consent callback failed:', err); 17512 } 17513 } 17514 return () => listeners.delete(cb); 17515 }; 17516 17517 const api = { 17518 getConsentAllowed: () => consentAllowed, 17519 onChange, 17520 isReady: () => ready, 17521 setConsentOverride: (allowed) => updateConsent(allowed) 17522 }; 17523 17524 window.PixleeAppConsent = api; 17525 window.dispatchEvent(new CustomEvent('pixlee:app-consent-loaded', { 17526 detail: { api: window.PixleeAppConsent } 17527 })); 17528 17529 if (pixleeRequireCookieConsent) { 17530 initShopifyConsent(); 17531 } else { 17532 updateConsent(true); 17533 } 17534 17535 return api; 17536 }; 17537 17538 const unescapeHtml = (str) => { 17539 if (!str || typeof str !== 'string') return str; 17540 const el = document.createElement('textarea'); 17541 el.innerHTML = str; 17542 return el.value; 17543 }; 17544
17545 // Ensure valid widgetId (pg sequence integer) 17546 const toValidWidgetId = (v) => { 17547 if (v == null || v === '') return null; 17548 17549 const n = Number(v); 17550 if (!Number.isFinite(n)) return null; 17551 if (!Number.isInteger(n)) return null; 17552 if (!Number.isSafeInteger(n)) return null; 17553 17554 return n; 17555 }; 17556 17557 // Determine widgetId based on JSON map and localization codes 17558 const resolveWidgetId = (node) => { 17559 // Normalize JSON by stripping all whitespace and using lowercase to minimize user input errors 17560 const raw = unescapeHtml(node.dataset.pixleeWidgetId)?.replace(/\s+/g, '').toLowerCase(); 17561 if (!raw || raw === '') return null; 17562 17563 let parsed; 17564 try { 17565 parsed = JSON.parse(raw); 17566 } catch { 17567 return toValidWidgetId(raw); 17568 } 17569 17570 if (typeof parsed !== 'object' || parsed === null) { 17571 return toValidWidgetId(parsed); 17572 } 17573 17574 // Match normalized JSON keys 17575 const country = (node.dataset.pixleeCountry || 'default').trim().toLowerCase(); 17576 const lang = (node.dataset.pixleeLanguage || 'default').trim().toLowerCase(); 17577 17578 const localeMap = parsed[country] || parsed['default']; 17579 if (!localeMap || typeof localeMap !== 'object') return null; 17580 17581 const value = 17582 localeMap[lang] ?? 17583 localeMap.default; 17584 17585 return toValidWidgetId(value); 17586 }; 17587 17588 const bootstrapWidgets = () => { 17589 try { 17590 const widgets = document.querySelectorAll('[data-pixlee-widget]'); 17591 if (!widgets.length) { 17592 return; 17593 } 17594 17595 window.PixleeAsyncInit = () => { 17596 Pixlee.init({ apiKey: pixleeApiKey }); 17597 17598 const syncWidgetConsent = (allowed) => { 17599 if (!pixleeRequireCookieConsent) return; 17600 if ( 17601 typeof Pixlee.acceptCookiePolicy !== 'function' || 17602 typeof Pixlee.denyCookiePolicy !== 'function' 17603 ) { 17604 return; 17605 } 17606 if (allowed) { 17607 Pixlee.acceptCookiePolicy(); 17608 } else { 17609 Pixlee.denyCookiePolicy(); 17610 } 17611 }; 17612 17613 if (state.consentApi && typeof state.consentApi.onChange === 'function') { 17614 state.consentApi.onChange(syncWidgetConsent); 17615 if (state.consentApi.isReady() && typeof state.consentApi.getConsentAllowed === 'function') { 17616 syncWidgetConsent(state.consentApi.getConsentAllowed()); 17617 } 17618 } 17619 17620 widgets.forEach((node) => { 17621 const containerId = node.getAttribute('id'); 17622 if (!containerId) { 17623 log('warn', 'Pixlee widget missing required attributes:', node); 17624 return; 17625 } 17626 const widgetId = resolveWidgetId(node); 17627 if (!widgetId) { 17628 log('warn', 'Pixlee widget invalid widget-id:', node.dataset.pixleeWidgetId); 17629 return; 17630 } 17631 const widgetType = node.dataset.pixleeWidgetType; 17632 17633 try { 17634 if (widgetType === 'product') { 17635 Pixlee.addProductWidget({ 17636 ecomm_platform: 'shopify', 17637 widgetId, 17638 accountId: pixleeAccountId, 17639 containerId, 17640 getCookieConsent: pixleeRequireCookieConsent 17641 }); 17642 } else if (widgetType === 'collection') { 17643 const collectionId = node.dataset.pixleeCollectionId; 17644 if (collectionId) { 17645 Pixlee.addCategoryWidget({ 17646 ecomm_platform: 'shopify', 17647 widgetId, 17648 nativeCategoryId: collectionId, 17649 containerId, 17650 getCookieConsent: pixleeRequireCookieConsent 17651 }); 17652 } 17653 } else { 17654 const simpleConfig = { 17655 widgetId, 17656 containerId, 17657 getCookieConsent: pixleeRequireCookieConsent 17658 }; 17659 17660 const fallbackAlbumId = node.dataset.pixleeFallbackAlbumId; 17661 const fallbackThreshold = node.dataset.pixleeFallbackThreshold; 17662 17663 if (fallbackAlbumId) { 17664 simpleConfig.fallbackAlbumId = fallbackAlbumId; 17665 } 17666 if (fallbackThreshold) { 17667 simpleConfig.fallbackThreshold = fallbackThreshold; 17668 } 17669 17670 Pixlee.addSimpleWidget(simpleConfig); 17671 } 17672 } catch (error) { 17673 log('error', 'Error initializing Pixlee widget:', error, node); 17674 } 17675 }); 17676 }; 17677 17678 if (!document.getElementById(state.widgetScriptId)) { 17679 loadScript(pixleeWidgetScriptSrc, { id: state.widgetScriptId }).catch((err) => 17680 log('error', 'Failed to load Pixlee widget script:', err) 17681 ); 17682 } 17683 } catch (error) { 17684 log('error', 'Error initializing Pixlee widgets:', error); 17685 } 17686 }; 17687 17688 // Engagement (time on site / Sessions) analytics 17689 const setupEngagementAnalytics = () => {
17690 try { 17691 const loadEventsScript = () => { 17692 if (state.eventsLoaded) return state.eventsLoadPromise; 17693 if (state.eventsLoadPromise) return state.eventsLoadPromise; 17694 state.eventsLoadPromise = loadScript(pixleeEventsScriptSrc, { 17695 id: state.eventsScriptId, 17696 defer: true 17697 }) 17698 .then(() => { 17699 if (typeof window.Pixlee_Analytics !== 'function') { 17700 throw new Error('Pixlee_Analytics unavailable after loading events script'); 17701 } 17702 new window.Pixlee_Analytics( 17703 pixleeApiKey, 17704 attributionWindow 17705 ); 17706 state.eventsLoaded = true; 17707 if (pixleeUseLegacyCartFallback) { 17708 startLegacyCartTracking(); 17709 } 17710 return true; 17711 }) 17712 .catch((err) => { 17713 state.eventsLoaded = false; 17714 state.eventsLoadPromise = null; 17715 throw err; 17716 }); 17717 return state.eventsLoadPromise; 17718 }; 17719 17720 const handleConsentChange = (allowed) => { 17721 const allowAnalytics = pixleeRequireCookieConsent ? !!allowed : true; 17722 if (!allowAnalytics) { 17723 return; 17724 } 17725 17726 loadEventsScript().catch((err) => 17727 log('error', 'Failed to load Pixlee events script:', err) 17728 ); 17729 }; 17730 17731 if (state.consentApi && typeof state.consentApi.onChange === 'function') { 17732 state.consentApi.onChange(handleConsentChange); 17733 if (state.consentApi.isReady() && typeof state.consentApi.getConsentAllowed === 'function') { 17734 handleConsentChange(state.consentApi.getConsentAllowed()); 17735 } 17736 } else if (!pixleeRequireCookieConsent) { 17737 handleConsentChange(true); 17738 } else { 17739 log('warn', 'Consent API unavailable; analytics blocked.'); 17740 } 17741 } catch (error) { 17742 log('error', 'Error initializing Pixlee engagement analytics:', error); 17743 } 17744 }; 17745 17746 onReady(() => { 17747 try { 17748 state.consentApi = createPixleeConsentHelper(); 17749 } catch (error) { 17750 log('error', 'Failed to initialize Pixlee consent helper:', error); 17751 } 17752 17753 bootstrapWidgets(); 17754 setupEngagementAnalytics(); 17755 }); 17756 })(); 17757</script>
17757 17758</div><div id="shopify-block-AbmR4ZVhWZXJvS2NJQ__2786716548061469553" class="shopify-block shopify-app-block"> 17759
17760<script> 17761</script>
17761 17762 17763 </div><div id="shopify-block-AdjkraUk3aFVvenQ3d__8605505498557855500" class="shopify-block shopify-app-block bogos-shopify-block"> 17764 17765 17766<div id="secomapp_freegifts_version" data-version="3.0"></div> 17767 17768 <!-- BEGIN app snippet: freegifts-snippet --><link href="//cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/glider.min.css" rel="stylesheet" type="text/css" media="all" /> 17769<link href="//cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/freegifts-main.min.css" rel="stylesheet" type="text/css" media="all" /> 17770 17771 17772 17773 17774 17775 17776 17777 17778 17779 17780 17781 17782<style id="sca_fg_custom_style"> 17783 17784 .freegifts-main-container .fg-section-title, .freegifts-main-container .bogos-slider-info-title { color: #121212; } 17785 .freegifts-main-container .product-title, .freegifts-main-container .bogos-gift-product-title { color: #000000; } 17786 .freegifts-main-container .original-price, .freegifts-main-container .bogos-gift-item-compare-price { color: #121212; } 17787 .freegifts-main-container .gift-price, .freegifts-main-container .bogos-gift-item-price { color: #D2324C; } 17788 .freegifts-main-container .btn-add-to-cart { color: #FFFFFF; background-color: #218369; } 17789 .freegifts-main-container .bogos-slider-offer-badge { background: #FFEF9D } 17790 .freegifts-main-container .bogos-slider-offer-badge.success { background: #CDFEE1 } 17791 .freegifts-main-container .bogos-slider-offer-title { color: #000000 } 17792 .freegifts-main-container .btn-add-to-cart svg path { fill: #FFFFFF; } 17793 .bogos-gift-select-variant-title { color: #005BD3; } 17794 .bogos-gift-select-variant-title-contain::after { border-color: #005BD3; } 17795 17796 .fg-gift-thumbnail-offer-title { color: #000000; } 17797 .fg-gift-thumbnail-container { border-color: #8A8A8A; } 17798 .fg-gift-thumbnail-offer-time { background-color: #000000; } 17799 #sca-gift-thumbnail .sca-gift-image { width: 50px; max-height: 50px; } 17800 17801 #sca-gift-icon .sca-gift-icon-img { width: 100px; max-height: 100px; } 17802 .sca-gift-icon-collection-page .sca-gift-icon-collection-img { width: 50px; max-height: 50px; } 17803 17804 #sca-promotion-glider { color: #ffffff; background-color: #D2324C; } 17805 17806 17807 #sca-fg-today-offer-iframe .sca-fg-header { background-color: #FFFFFF; } 17808 #sca-fg-today-offer-iframe .sca-fg-body { background-color: #FFFFFF; } 17809 #sca-fg-today-offer-iframe .sca-fg-today-offer-title { color: #5E5873 !important; } 17810 #sca-fg-today-offer-iframe .sca-fg-today-offer-subtitle { color: #b9b9c3 !important; } 17811 #sca-fg-today-offer-iframe .sca-offer-title { color: #82868b; } 17812 #sca-fg-today-offer-widget { height: 70px !important; width: 70px !important; } 17813 .sca-fg-icon-success-anim { box-shadow: inset 0 0 0 #69CE82; } 17814 @-webkit-keyframes animated-checkmark-fill { to { box-shadow: inset 0 0 0 30px #69CE82; } } 17815 @keyframes animated-checkmark-fill { to { box-shadow: inset 0 0 0 30px #69CE82; } } 17816 .sca-fg-icon-success-circle { stroke: #69CE82; } 17817 #sca-fg-today-offer-iframe .sca-fg-offer .sca-offer-header-container { background-color: #ebe9f1 } 17818 #sca-fg-today-offer-iframe .sca-fg-offer.sca-offer-archived .sca-offer-header-container { background-color: #69CE8225 } 17819 #sca-fg-today-offer-iframe .sca-gift-product-title { color: #303030} 17820 #sca-fg-today-offer-iframe .sca-gift-product-discount-price { color: #24B263 } 17821 #sca-fg-today-offer-iframe .sca-gift-product-original-price { color: #616161 } 17822 #sca-fg-today-offer-iframe .sca-offer-info .sca-offer-subtitle { color: #616161 } 17823 17824 17825 .bogos-bundles-widget { background-color: #F3F3F3; } 17826 .bogos-bundles-widget-body .bogos-bundle-item { background-color: #FFFFFF; } 17827 .bogos-bundles-widget .bogos-bundles-widget-title { color: #303030; } 17828 .bogos-bundles-widget .bogos-bundles-widget-description { color: #616161; } 17829 .bogos-bundle-item .bogos-bundle-item-title { color: #303030; } 17830 .bogos-bundle-item .bogos-bundle-item-discount-price, .bogos-bundles-widget .bogos-bundles-total-discount-price { color: #005BD3; } 17831 .bogos-bundle-item .bogos-bundle-item-original-price, .bogos-bundles-widget .bogos-bundles-total-original-price { color: #005BD3; } 17832 .bogos-bundles-widget-footer .bogos-bundles-button-add { color: #FFFFFF; background-color: #303030; } 17833 .bogos-bundles-widget .bogos-bundle-shipping-discount-container { background-color: #DEE6FF; } 17834 .bogos-bundles-widget .bogos-bundle-shipping-discount-title { color: #2332D5; } 17835 17836 .bogos-bundles-quantity-break-widget { background-color: #F3F3F3; } 17837 .bogos-bundles-quantity-break-widget-title { color: #303030; } 17838 .bogos-bundles-quantity-break-widget-description { color: #303030; } 17839 .bogos-bundle-quantity-break-item-original-price, .bogos-bundles-quantity-break-origin-price { color: #B5B5B5; } 17840 .bogos-bundles-quantity-break-button-add { background: #303030; color: #FFFFFF; } 17841 .bogos-bundle-quantity-break_item-container { background: #FFFFFF; } 17842 .bogos-bundle-quantity-break-label { background: #303030; color: #FFFFFF; } 17843 .bogos-bundle-quantity-break-tag { background: #F1F1F1; color: #303030; } 17844 .bogos-bundle-quantity-break-sub-title { color: #616161; } 17845 .bogos-bundles-quantity-break-discount-price { color: #303030; } 17846 .bogos-bundle-quantity-break-title { color: #303030; } 17847 .bogos-bundle-quantity-break-item-discount-price { color: #303030; } 17848 17849 .bogos-volume-discount-widget.default-layout { background-color: #F3F3F3; } 17850 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-widget-title { color: #303030; } 17851 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-widget-description { color: #303030; } 17852 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-item-original-price , .bogos-volume-discount-origin-price { color: #303030; } 17853 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-button-add { background: #303030; color: #FFFFFF; } 17854 .bogos-volume-discount-widget.default-layout .bogos-volume-discount_item-container { background: #FFFFFF; } 17855 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-label { background: #303030; color: #FFFFFF; } 17856 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-tag { background: #F1F1F1; color: #303030; } 17857 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-sub-title { color: #616161; } 17858 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-item-discount-price { color: #303030; } 17859 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-tier-price-primary span { color: #303030; } 17860 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-discount-price { color: #303030; } 17861 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-title { color: #303030; } 17862 .bogos-volume-discount-widget.default-layout .bogos-volume-discount-origin-price, .bogos-volume-discount-widget.default-layout .bogos-volume-discount-item-original-price { color: #B5B5B5; } 17863 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-widget-header { background-color: #F3F3F3; } 17864 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-widget-title { color: #303030; } 17865 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-widget-description { color: #303030; } 17866 .bogos-volume-discount-table-container.line-style .bogos-volume-discount-item { background-color: #FFFFFF; } 17867 .bogos-volume-discount-widget.table-layout, .bogos-volume-discount-widget.table-layout .bogos-volume-discount-item, .bogos-volume-discount-widget-body .bogos-volume-discount-tier-info, .bogos-volume-discount-widget.table-layout .bogos-volume-discount-widget-header { border-color: #E0E0E0; } 17868 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-title { color: #303030; } 17869 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-description { color: #616161; } 17870 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-tag { background-color: #F1F1F1; color: #303030; } 17871 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-tier-discount-text { color: #303030; } 17872 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-tier-label { color: #FFFFFF; background-color: #303030; } 17873 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-tier-discount-price { color: #303030; } 17874 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-tier-price-primary span { color: #303030; } 17875 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-tier-origin-price { color: #B5B5B5; } 17876 .bogos-volume-discount-table-container.is-hidden-line .bogos-volume-discount-tier-info { border-color: transparent; } 17877 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-table-container.zebra-style .bogos-volume-discount-item:nth-child(odd) { background-color: #FFFFFF; } 17878 .bogos-volume-discount-widget.table-layout .bogos-volume-discount-table-container.zebra-style .bogos-volume-discount-item:nth-child(even) { background-color: #F5F5F5; } 17879 .bogos-volume-discount-widget .bogos-vl-tb-shipping-label { color: #2332D5; } 17880 .bogos-volume-discount-widget .bogos-vl-shipping-label { color: #2332D5; } 17881 .bogos-volume-discount-widget .bogos-vl-shipping-container { background-color: DEE6FF; } 17882 .bogos-volume-discount-widget.default-layout .bogos-vl-subscription-option-title { color: #303030; } 17883 .bogos-volume-discount-widget.default-layout .bogos-vl-subscription-section-title { color: #303030; } 17884 .bogos-volume-discount-widget.default-layout .bogos-vl-subscription-input-c
17884heckbox:checked { background-color: #8051FF; border-color: #8051FF;} 17885 .bogos-volume-discount-widget.default-layout input[type=radio]:checked { background-color: #8051FF; border-color: #8051FF;} 17886 17887 .bogos-mix-match-widget { background-color: #F3F3F3; ; } 17888 .bogos-mix-match-widget .bogos-mix-item { background-color: #FFFFFF; } 17889 .bogos-mix-match-widget .bogos-mix-match-widget-title { color: #303030; } 17890 .bogos-mix-match-widget .bogos-mix-match-widget-description { color: #616161; } 17891 .bogos-mix-match-widget .bogos-mix-item-title { color: #303030; } 17892 .bogos-mix-match-widget .bogos-mix-item-discount-price { color: #303030; } 17893 .bogos-mix-match-widget .bogos-mix-item-original-price { color: #B5B5B5; } 17894 .bogos-mix-match-widget .bogos-mix-match-button-add { color: #FFFFFF; background-color: #303030; } 17895 .bogos-mix-match-widget .bogos-mix-match-badge-item { background-color: #FFF8DB; } 17896 .bogos-mix-match-widget .bogos-mix-match-badge-item.success { background-color: #CDFEE1; } 17897 .bogos-mix-match-widget .bogos-mix-match-badge-item .bogos-mix-match-badge-title { color: #4F4700; } 17898 .bogos-mix-match-widget .bogos-mix-match-badge-item.success .bogos-mix-match-badge-title { color: #29845A; } 17899 .bogos-mix-match-widget .bogos-mix-match-shipping-discount-container { background-color: #DEE6FF; } 17900 .bogos-mix-match-widget .bogos-mix-match-shipping-discount-title { color: #2332D5; } 17901 17902 .bogos-bundle-page-container .bogos-bp-steps-bar, .bogos-bundle-page-container .bogos-bp-step-bar-single { background-color: #F3F3F3; } 17903 .bogos-bundle-page-container .bogos-bp-step-title { color: #303030; } 17904 .bogos-bp-steps-container .bogos-bp-step-item.active { border-bottom: solid 3px #303030; } 17905 .bogos-bundle-page-container .bogos-bp-header-title { color: #303030; } 17906 .bogos-bundle-page-container .bogos-bp-header-subtitle { color: #303030; } 17907 .bogos-bundle-page-container .bogos-bp-step-header-title { color: #303030; } 17908 .bogos-bundle-page-container .bogos-bp-step-header-subtitle { color: #616161; } 17909 .bogos-bundle-page-container .bogos-bp-product-title, .bogos-step-item .bogos-step-item-title, .bogos-product-detail-modal .bogos-product-title { color: #303030; } 17910 .bogos-step-items-container .bogos-step-item-variant-title { color: #616161; } 17911 .bogos-bundle-page-container .bogos-bp-product-price, .bogos-step-item .bogos-step-item-discount-price, .bogos-bp-widget-footer .bogos-bp-total-discount-price { color: #303030; } 17912 .bogos-step-item .bogos-step-item-original-price, .bogos-bp-widget-footer .bogos-bp-total-original-price { color: #808080; } 17913 .bogos-bundle-page-container .bogos-bp-btn-add-product, .bogos-product-detail-modal .bogos-product-add-btn { background-color: #303030; color: #FFFFFF } 17914 .bogos-bp-widget-container .bogos-bp-widget { background-color: #F3F3F3; ; } 17915 .bogos-bp-widget .bogos-bp-widget-title { color: #303030; } 17916 .bogos-bp-widget .bogos-bp-widget-description { color: #303030; } 17917 .bogos-step-items-product-require.success .bogos-step-items-product-require-title { color: #2332D5; } 17918 .bogos-bp-widget .bogos-bp-button-add { background-color: #303030; color: #FFFFFF; } 17919 .bogos-bp-widget-badges-container .bogos-bp-widget-badge-item { background-color: #FFF8DB; } 17920 .bogos-bp-widget-badges-container .bogos-bp-widget-badge-item.success { background-color: #CDFEE1; } 17921 .bogos-bp-widget-badges-container .bogos-bp-widget-badge-title { color: #4F4700; } 17922 .bogos-bp-widget-badge-item.success .bogos-bp-widget-badge-title { color: #29845A; } 17923 .bogos-bp-widget .bogos-bundle-page-shipping-discount-container { background-color: #DEE6FF; } 17924 .bogos-bp-widget .bogos-bundle-page-shipping-discount-title { color: #2332D5; } 17925 17926 .bogos-fbt-upsell-container { background: #F6F6F6; border-radius: 15px; } 17927 .bogos-fbt-header-title { color: #303030; } 17928 .bogos-fbt-header-description { color: #303030; } 17929 .bogos-fbt-footer-discounted-price { color: #303030; } 17930 .bogos-fbt-footer-original-price { color: #616161; } 17931 .bogos-fbt-footer-button-add { background: #303030; color: #FFFFFF; } 17932 .bogos-fbt-product-title {color: #303030; } 17933 .bogos-fbt-upsell-product-discounted-price {color: #303030; } 17934 .bogos-fbt-upsell-product-original-price {color: #808080; } 17935 .is-cheapest-free-label {color: #FFFFFF ;background-color: #FFAA00;} 17936 .is-cheapest-free {background-color: rgba(255, 170, 0, 0.2);} 17937 .bogos-fbt-this-item {background-color: #D1D1D1;color: #303030;} 17938 .bogos-fbt-upsell-body-item-checkbox {border-color: #303030;} 17939 .bogos-fbt-upsell-body-item-checkbox:checked {border-color: #303030; background-color: #303030;} 17940 .bogos-fbt-shipping-discount-container { background-color: #DEE6FF; } 17941 .bogos-fbt-shipping-discount-title { color: #2332D5; } 17942 .bogos-fbt-upsell-body-stack-meta .bogos-fbt-upsell-img-wrapper, .bogos-fbt-upsell-body-classic-item-img-wrapper .bogos-fbt-upsell-body-classic-item-img {width: 60px; height: 60px;} 17943 .bogos-fbt-upsell-container img.bogos-fbt-upsell-img {border-radius: 7.5px;} 17944 17945 .bogos-cheapest-discount {background-color: #ffffff; border-color: #888888;} 17946 .bogos-cheapest-discount .bogos-cheapest-title { color: #303030; } 17947 .bogos-cheapest-list-product-modal .bogos-cheapest-title { color: #303030; } 17948 .bogos-cheapest-discount .bogos-cheapest-description { color: #616161; } 17949 .bogos-cheapest-product-card .bogos-cheapest-product-title { color: #303030; } 17950 .bogos-cheapest-product-card .bogos-cheapest-product-price { color: #303030; } 17951 .bogos-cheapest-product-card .bogos-cheapest-select-variant-title { color: #303030; } 17952 .bogos-cheapest-product-card .bogos-cheapest-product-add-btn { color: #ffffff; background-color: #303030} 17953 .bogos-cheapest-label-item.active .bogos-cheapest-label { color: #303030; } 17954 .bogos-cheapest-label-item.active #bogos-active-icon path { fill: #3
1795403030; } 17955 .bogos-cheapest-label-item.excluded .bogos-cheapest-label { color: #CCCCCC; } 17956 .bogos-cheapest-label-item.excluded #bogos-excluded-icon path { fill: #CCCCCC; } 17957 .bogos-cheapest-label-item:not(.active):not(.excluded) #bogos-uncheck-icon path { fill: #4A4A4A; } 17958 .bogos-cheapest-label-item:not(.active):not(.excluded) .bogos-cheapest-label { color: #303030; } 17959 .bogos-cheapest-discount .bogos-cheapest-label-container:not(:has(.bogos-cheapest-discount-bullet-items)) {background-color: #F6F6F6;} 17960 .bogos-cheapest-discount .bogos-cheapest-discount-bullet-item {color: #808080;} 17961 .bogos-cheapest-discount .bogos-cheapest-products-describe {color: #616161;} 17962 .bogos-cheapest-discount .bogos-cheapest-products-more-btn {color: #303030;} 17963 17964 .bogos-select-option-custom-item:not(.bogos-option-default):not(.bogos-active):not(has(.sca-d-none)) {background-color: #F0F0F0; color: #303030;} 17965 .bogos-select-option-custom-item:not(.bogos-option-default).bogos-active:not(has(.sca-d-none)) {background-color: #F0F0F0; color: #303030;} 17966 .bogos-select-option-custom-item:not(.bogos-option-default).bogos-active {border: 0.5px solid #303030;} 17967 .bogos-select-option-custom-item.bogos-option-default:not(.bogos-active) .bogos-option-value-title {background-color: #F0F0F0; color: #303030;} 17968 .bogos-select-option-custom-item.bogos-option-default.bogos-active .bogos-option-value-title {background-color: #F0F0F0; color: #303030;} 17969 .bogos-select-option-custom-item.bogos-option-default.bogos-active {border: 0.5px solid #303030;} 17970 .bogos-mix-item-select-variant-option:hover, .bogos-gift-select-variant-option:hover, .bogos-bundle-select-variant-option:hover, .bogos-vl-select-variant-option:hover, .bogos-fbt-variant-item:hover, .bogos-pa-variant-item:hover, .bogos-pa-variant-item.active {background-color: #F0F0F0;} 17971 17972 17973 17974</style>
17974<script id="sca_fg_custom_script" data-cmp-vendor="bogos" data-cmp-ab="0"> 17975 17976 17977</script>
17977 17978
17979<script src="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/glider.min.js" defer></script>
vendor: 1 bytes, line 17979
17979
17980<script src="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/lz-string.min.js" defer></script>
17980 17981 17982<div id="freegifts-main-popup-container" class="freegifts-main-container sca-modal-fg" 17983 data-animation="slideInOutTop"></div> 17984<div id="sca-fg-notifications" class="sca-fg-notifications"></div> 17985 17986<div id="bogos-to-widget-icon-wrap" style="display:none"></div> 17987<div id="bogos-to-widget-iframe" style="visibility:hidden;opacity:0;position:fixed"></div> 17988 17989<div id="sca-fg-today-offer-widget"></div> 17990<div id="sca-fg-today-offer-iframe"></div> 17991 17992<div id="bogos-mix-match-main-collection-popup-container" class="sca-modal-fg"></div> 17993<div id="bogos-main-popup-product-detail-container" data-animation="slideInOutTop"></div> 17994<div id="bogos-main-popup-more-product-container" data-animation="slideInOutTop"></div> 17995 17996<div id="bogos-cart-discount-congrats-msg-wrap"></div> 17997
17998<script type="text/javascript" data-cmp-vendor="bogos" data-cmp-ab="0"> 17999 if (typeof Shopify === "undefined") window.Shopify = {}; 18000 Shopify.cartItems = []; 18001 Shopify.current_product = {}; 18002 Shopify.current_collection = {}; 18003 Shopify.products = {}; 18004 18005 // current product or collection 18006 Shopify.current_product = {...null}; 18007 18008 18009 Shopify.current_collection = {...null}; 18010 18011 window.SECOMAPP = window.SECOMAPP || {}; 18012 SECOMAPP.fg_codes = []; 18013 SECOMAPP.activateOnlyOnePromoCode = false; 18014 18015 SECOMAPP.localization = [];SECOMAPP.localization.push({ 18016 ...{"shop_locale":{"locale":"en","enabled":true,"primary":true,"published":true}}, 18017 root_url: "/" 18018 }); 18019 18020 SECOMAPP.fgData = {...{"appearance":{"bundle":{"color":{"theme_color":"neutral","item_name_color":"#303030","title_text_color":"#303030","button_text_color":"#FFFFFF","bundle_price_color":"#005BD3","original_price_color":"#005BD3","description_text_color":"#616161","button_background_color":"#303030","widget_background_color":"#F3F3F3","item_card_background_color":"#FFFFFF","shipping_discount_background":"#DEE6FF","shipping_discount_text_color":"#2332D5"},"others":{"hidden_brand_mark":false},"content":{"button_text":"Add bundle to cart","show_description":true,"total_price_text":"Total bundle price","shipping_icon_path":"images\/shipping-icons\/shipping-icon-1.png","select_variant_text":"Select variant","show_discount_each_item":true,"show_discount_on_button":true,"shopify_shipping_icon_path":"shipping-icon-1.png"}},"gift_icon":{"product_page":{"gift_icon":{"size":"100","status":true},"gift_thumbnail":{"status":true,"number_text":"gift items included","border_color":"#8A8A8A","show_multiple":"together","countdown_text":"Expiring in","use_old_version":false,"offer_name_color":"#000000","show_number_gift":true,"countdown_time_color":"#000000","show_countdown_timer":true}},"gift_icon_path":"images\/fg-icons\/fg-icon-red.png","collection_page":{"size":"50","status":false},"shopify_gift_icon_path":"fg-icon-red.png","enable_for_all_conditions":true},"mix_match":{"color":{"theme_color":"neutral","item_name_color":"#303030","title_text_color":"#303030","button_text_color":"#FFFFFF","bundle_price_color":"#303030","original_price_color":"#B5B5B5","description_text_color":"#616161","button_background_color":"#303030","widget_background_color":"#F3F3F3","default_label_text_color":"#4F4700","success_label_text_color":"#29845A","item_card_background_color":"#FFFFFF","shipping_discount_background":"#DEE6FF","shipping_discount_text_color":"#2332D5","default_label_background_color":"#FFF8DB","success_label_background_color":"#CDFEE1"},"content":{"tier_style":"label","button_text":"Add bundle to cart","out_stock_text":"Out of stock!","mix_item_header":"Mix item {{itemIndex}}","show_description":true,"total_price_text":"Total bundle price","shipping_icon_path":"images\/shipping-icons\/shipping-icon-1.png","select_product_text":"Choose from {{number}} product(s)","select_variant_title":"Variant","select_collection_text":"Choose from {{number}} collection(s)","show_discount_each_item":true,"show_discount_on_button":true,"shopify_shipping_icon_path":"shipping-icon-1.png"}},"fbt_upsell":{"color":{"item_name":"#303030","item_price":"#303030","theme_color":"neutral","widget_title":"#303030","checkbox_color":"#303030","widget_subtitle":"#303030","atc_button_color":"#303030","item_price_after":"#303030","item_price_before":"#808080","total_price_after":"#303030","widget_background":"#F6F6F6","total_price_before":"#616161","cheapest_text_color":"#FFFFFF","atc_button_text_color":"#FFFFFF","current_item_tag_text":"#303030","current_item_tag_color":"#D1D1D1","cheapest_highlight_color":"#FFAA00","shipping_discount_background":"#DEE6FF","shipping_discount_text_color":"#2332D5"},"content":{"button_text":"Add selected items","free_item_text":"Free 1 item","total_price_text":"Total price","shipping_icon_path":"images\/shipping-icons\/shipping-icon-1.png","shopify_shipping_icon_path":"shipping-icon-1.png"},"general":{"widget_layout":"classic","maximum_display":3,"show_discount_amount":true,"show_discount_each_item":true}},"bundle_page":{"color":{"theme_color":"neutral","step_text_color":"#303030","atc_button_color":"#303030","step_title_color":"#303030","cart_button_color":"#303030","page_heading_color":"#303030","product_title_color":"#303030","required_text_color":"#2332D5","variant_title_color":"#616161","original_price_color":"#808080","side_bar_title_color":"#303030","step_highlight_color":"#303030","atc_button_text_color":"#FFFFFF","cart_button_text_color":"#FFFFFF","discounted_price_color":"#303030","page_sub_heading_color":"#303030","step_description_color":"#616161","default_label_text_color":"#4F4700","success_label_text_color":"#29845A","side_bar_background_color":"#F3F3F3","side_bar_description_color":"#303030","shipping_discount_background":"#DEE6FF","shipping_discount_text_color":"#2332D5","default_step_background_color":"#F3F3F3","default_label_background_color":"#FFF8DB","success_label_background_color":"#CDFEE1"},"content":{"step_text":"Step {{index}}","tier_style":"progress","load_more_text":"Load more","out_stock_text":"Out of stock","read_more_text":"See more","step_icon_path":"images\/step-icons\/step-icon-1.png","atc_button_text":"Add to bundle","blank_step_text":"Add product to this step","cart_button_text":"Add bundle to cart","show_description":true,"total_price_text":"Total bundle price","summary_icon_path":"images\/summary-icons\/summary-icon-1.png","shipping_icon_path":"images\/shipping-icons\/shipping-icon-1.png","summary_title_text":"Your bundle","choose_variant_text":"Choose variant","maximum_quantity_text":"Maximum item reached","required_product_text":"{{number}} item(s) required","shopify_step_icon_path":"step-icon-1.png","summary_description_text":"Choose items from this page to make your own bundle","shopify_summary_icon_path":"summary-icon-1.png","shopify_shipping_icon_path":"shipping-icon-1.png"}},"gift_slider":{"color":{"add_to_cart_color":"#FFFFFF","offer_title_color":"#000000","product_title_color":"#000000","original_price_color":"#121212","variant_select_color":"#005BD3","add_to_cart_btn_color":"#218369","discounted_price_color":"#D2324C","gift_slider_title_color":"#121212","notify_add_gift_active_state_color":"#CDFEE1","notify_add_gift_normal_state_color":"#FFEF9D"},"others":{"gift_img_size":"\u0026width=480\u0026height=480","hidden_brand_mark":false,"disable_use_old_version":true},"general":{"running_text":null,"show_gift_type":"all_in_one","select_gift_btn":"Select variants","show_pagination":true,"use_old_version":false,"gift_popup_title":"Select your free gift!","show_product_title":true,"show_variant_title":true,"add_to_cart_btn_title":"Add to cart","number_product_slider":4,"show_gift_for_customer":"by_variants","enable_add_multiple_gifts":true,"number_product_slider_mobile":1.8}
18020,"pages_display":{"pages":["all"],"custom":[]},"notify_gift_can_add":{"enable":false,"number_gifts_added":"You have added {{number}} gift product(s)","number_gifts_can_be_added":"You can add {{number}} gift product(s)"},"notify_offer_available":{"text":"ð You have qualified for {{qualifiedOffers}} offer(s)!","enable":true},"disable_slider_checkbox":{"text":"Don't show this offer again","time":10,"enable":false}},"today_offer":{"widget_info":{"show_widget":false,"widget_title":"TODAY OFFER","widget_position":"bottom_right","widget_subtitle":"Claim these exclusive offers today","icon_widget_title":"Today offer","widget_icon_style":"icon"},"widget_color":{"offer_title_color":"#82868b","widget_title_color":"#5E5873","offer_default_color":"#ebe9f1","offer_success_color":"#69CE82","body_background_color":"#FFFFFF","widget_subtitle_color":"#b9b9c3","header_background_color":"#FFFFFF"},"widget_icon_path":"images\/widget-icons\/widget-icon-1.png","shopify_widget_icon_path":"widget-icon-1.png"},"cart_discount":{"color":{"widget":{"line_color":"#D0D0D0","theme_color":"blue","open_icon_color":"#616161","tier_text_color":"#303030","title_text_color":"#2332D5","active_icon_color":"#008000","excluded_tier_color":"#cccccc","widget_border_color":"#7B84E6","open_tier_text_color":"#303030","tier_background_color":"#FFFFFF","active_tier_text_color":"#008000","description_text_color":"#616161","widget_background_color":"#FFFFFF"},"congrats":{"theme_color":"blue","background_color":"#EEEFFB","title_text_color":"#2332D5","description_text_color":"#303030"}},"content":{"widget":{"icon":"https:\/\/d33a6lvgbd0fej.cloudfront.net\/bogos-images\/1772523961.png","divide_tiers":false,"widget_style":"style_1","discount_tier_style":"checklist","widget_border_radius":12},"congrats":{"title":"Congratulations!","position":"bottom_right","appear_for":5,"description":"You got {{discount_amount}} off!","border_radius":12}}},"product_add_on":{"color":{"theme_color":"neutral","checkbox_color":"#303030","card_border_color":"#888888","widget_background":"#F6F6F6","product_name_color":"#303030","variant_name_color":"#303030","widget_title_color":"#303030","see_more_text_color":"#808080","widget_border_color":"#FFFFFF","discount_price_color":"#303030","original_price_color":"#CCCCCC","card_background_color":"#F6F6F6","widget_subtitle_color":"#303030"},"content":{"title_align":"left","see_less_text":"See less","see_more_text":"See more","see_more_align":"left","number_cols_compact":1,"number_rows_compact":3,"number_cols_full_width":3,"number_rows_full_width":1},"general":{"card_style":"horizon","widget_style":"style_1","widget_radius":12,"product_img_size":80,"checkbox_position":"left_on_img","enable_img_radius":false}},"quantity_break":{"color":{"tag_color":"#F1F1F1","tier_price":"#303030","tier_title":"#303030","label_color":"#303030","theme_color":"neutral","bundle_price":"#303030","bundle_title":"#303030","section_title":"#303030","tag_text_color":"#303030","label_text_color":"#FFFFFF","tier_description":"#616161","button_text_color":"#FFFFFF","bundle_description":"#303030","button_check_color":"#8051FF","bundle_origin_price":"#B5B5B5","button_background_color":"#303030","widget_background_color":"#F3F3F3","item_card_background_color":"#FFFFFF","shipping_discount_background":"DEE6FF","shipping_discount_text_color":"#2332D5"},"content":{"button_text":"Add bundles to cart","show_description":true,"total_price_text":"Total price","shipping_icon_path":"images\/shipping-icons\/shipping-icon-1.png","select_variant_text":"Select variant","shopify_shipping_icon_path":"shipping-icon-1.png"}},"select_variant":{"type":"variant","color":{"active_tab_text":"#303030","default_tab_text":"#303030","active_tab_border":"#303030","active_tab_background":"#F0F0F0","active_item_background":"#F0F0F0","default_tab_background":"#F0F0F0"},"config":[],"configs":[]},"checkout_upsell":{"color":{"button_style":"primary","widget_price_color":"base","widget_background_color":"base"},"content":{"widget_message":"You may also like","widget_button_text":"Add to cart"},"general":{"widget_layout":"carousel","widget_position ":"left","widget_active_message":true,"widget_active_compare_at_price":true}},"volume_discount":{"table":{"color":{"row_color":"#FFFFFF","tag_color":"#F1F1F1","line_color":"#E0E0E0","theme_color":"neutral","widget_title":"#303030","row_odd_color":"#FFFFFF","widget_header":"#F3F3F3","row_even_color":"#F5F5F5","tag_text_color":"#303030","label_text_color":"#FFFFFF","tier_title_color":"#303030","widget_sub_title":"#303030","discount_text_color":"#303030","original_price_color":"#B5B5B5","discounted_price_color":"#303030","label_background_color":"#303030","tier_description_color":"#616161","shipping_discount_text_color":"#2332D5"},"hide_line":false,"body_style":"line","text_align":"left","discount_text":"{{discountAmount}} OFF","discount_show_as":"discount_text","show_description":true,"show_original_price":true},"content":{"button_text":"Add bundles to cart","total_price_text":"Total price","shipping_icon_path":"images\/shipping-icons\/shipping-icon-1.png","select_variant_text":"Select variant","shopify_shipping_icon_path":"shipping-icon-1.png"},"default":{"color":{"tag_color":"#F1F1F1","tier_price":"#303030","tier_title":"#303030","label_color":"#303030","theme_color":"neutral","bundle_price":"#303030","bundle_title":"#303030","section_title":"#303030","tag_text_color":"#303030","label_text_color":"#FFFFFF","tier_description":"#616161","button_text_color":"#FFFFFF","bundle_description":"#303030","button_check_color":"#8051FF","bundle_origin_price":"#B5B5B5","button_background_color":"#303030","widget_background_color":"#F3F3F3","item_card_background_color":"#FFFFFF","shipping_discount_background":"DEE6FF","shipping_discount_text_color":"#2332D5"},"show_description":true}},"cheapest_discount":{"color":{"theme_color":"neutral","see_more_color":"#303030","open_icon_color":"#4A4A4A","active_icon_color":"#303030","bullet_text_color":"#808080","widget_title_color":"#303030","product_price_color":"#303030","product_title_color":"#303030","variant_title_color":"#303030","widget_border_color":"#888888","open_tier_text_color":"#303030","button_add_text_color":"#ffffff","widget_subtitle_color":"#616161","active_tier_text_color":"#303030","tiers_background_color":"#F6F6F6","widget_background_color":"#ffffff","excluded_tier_text_color":"#CCCCCC","product_list_label_color":"#616161","button_add_background_color":"#303030"},"content":{"tier_style":"checklist","see_more_text":"See all","show_see_more":true,"number_products":4,"number_cols_mobile":2,"number_rows_mobile":2,"product_list_label":"Choose from these products to get discount","number_cols_desktop":4,"number_rows_desktop":2,"add_product_bt
18020n_text":"Add","show_add_product_btn":true}},"promotion_message":{"text_color":"#ffffff","background_color":"#D2324C","show_on_cart_page":true},"thanks_page_upsell":{"color":{"button_style":"primary","widget_price_color":"base","widget_background_color":"transparent"},"content":{"widget_message":"You may also like","widget_button_text":"Add to cart"},"general":{"widget_layout":"carousel","widget_position ":"left","widget_active_message":true,"widget_active_compare_at_price":true}},"bundle_product_page":{"color":{"theme_color":"neutral","quantity_color":"#303030","active_tab_text":"#303030","badge_text_color":"#303030","default_tab_text":"#303030","active_tab_border":"#303030","child_theme_color":"neutral","default_tab_border":"#FFFFFF","product_name_color":"#303030","section_name_color":"#303030","variant_name_color":"#616161","discount_price_color":"#303030","original_price_color":"#808080","section_border_color":"#D0D0D0","active_tab_background":"#F0F0F0","add_item_button_color":"#303030","size_list_label_color":"#303030","badge_background_color":"#FFBB4E","child_label_text_color":"#303030","default_tab_background":"#F0F0F0","total_price_text_color":"#616161","add_bundle_button_color":"#303030","product_card_background":"#F6F6F6","child_product_name_color":"#303030","child_variant_name_color":"#616161","child_widget_title_color":"#303030","child_widget_border_color":"#303030","add_item_button_text_color":"#FFFFFF","add_bundle_button_text_color":"#FFFFFF","child_label_background_color":"#E7E7E7","child_widget_background_color":"#F0F0F0","child_redirect_button_text_color":"#303030"},"content":{"child_label":"Includes in {{number}} bundles","cart_button_text":"Add bundle to cart","total_price_text":"Total bundle price","countdown_message":"Added {{amount_added}} items, {{amount_left}} to go","child_widget_style":"filled_background","show_countdown_on_button":true,"child_show_discount_label":true,"child_redirect_button_label":"Go to bundle","child_products_per_row_mobile":2,"child_products_per_row_desktop":4,"child_show_product_variant_name":true}}},"settings":{"gift_format":"same_as_original_products","auto_add_gift":true,"sale_channels":null,"sync_quantity":false,"barcode_format":"blank","fraud_protection":null,"cal_gift_discount":"current_price","gift_title_format":"gift","using_draft_order":false,"select_one_gift_price":false,"manual_input_inventory":false,"include_compare_at_price":false,"cart_and_checkout_validation":{"type":[],"offer":false,"value":{"max_gifts":1,"min_cart_value":1,"min_cart_quantity":1},"status":true,"condition":"and"},"fraud_protection_cancel_order":null,"other_original_product_detail":null,"compare_gift_price_with_product":false,"delete_gift_after_turn_off_offer":true,"not_show_gift_if_already_on_cart":false,"barcode":"blank","type_seo":"number_integer","translation":{"type":"by_bogos","integration_app":null},"is_new_title_icon":true,"ab_before_charge_v2":1,"mode_override_checkout":"default","notify_via_email":null,"admin_api_access_token":null,"publications":null},"storefront":{"access_token":"a7ee910aa0c5c77f9cfe221774012858","created_at":"2026-09-04T16:09:25Z"}}}; 18021 18022//liquid code to get customer history and customer tag 18023 18024 18025 SECOMAPP.current_template = "page"; 18026 SECOMAPP.pathname = window.location.pathname; 18027 if (SECOMAPP.current_template === "404" && SECOMAPP.pathname?.includes("-sca_clone_freegift")) { 18028 window.location.replace(SECOMAPP.pathname.split("-sca_clone_freegift")[0]); 18029 } else if (SECOMAPP.current_template === "404" && SECOMAPP.pathname?.includes("/collections/sca_fg")) { 18030 window.location.replace(`${Shopify?.routes?.root ?? "/"}collections/all`); 18031 } 18032 18033 SECOMAPP.setCookie = function (e, t, o, n, r) { 18034 let i = new Date; 18035 i.setTime(i.getTime() + 24 * o * 36e5 + 60 * n * 1e3); 18036 let f = "expires=" + i.toUTCString(); 18037 document.cookie = e + "=" + t + ";" + f + (r ? ";path=" + r : ";path=/"); 18038 }; 18039 SECOMAPP.deleteCookie = function (e, t) { 18040 document.cookie = e + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; " + (t ? ";path=" + t : ";path=/") 18041 }; 18042 SECOMAPP.getCookie = function (e) { 18043 for (let t = e + "=", o = document.cookie.split(";"), n = 0; n < o.length; n++) { 18044 let r; 18045 for (r = o[n]; " " === r.charAt(0);) r = r.substring(1); 18046 if (0 === r.indexOf(t)) return r.substring(t.length, r.length) 18047 } 18048 return "" 18049 }; 18050 SECOMAPP.getQueryString = function (key) { 18051 let e = {}; 18052 let t = window.location.search.substring(1).split("&"); 18053 let o = 0; 18054 for (; o < t.length; o++) { 18055 let n = t[o].split("="); 18056 if (void 0 === e[n[0]]) e[n[0]] = decodeURIComponent(n[1]); 18057 else if ("string" == typeof e[n[0]]) { 18058 e[n[0]] = [e[n[0]], decodeURIComponent(n[1])] 18059 } else e[n[0]].push(decodeURIComponent(n[1])) 18060 } 18061 return key ? e?.[key] : e; 18062 }; 18063 18064 SECOMAPP.offer_codes = [
18065 {param: "freegifts_code", cookie: "sca_fg_codes"}, 18066 {param: "bundles_code", cookie: "sca_bundle_codes"}, 18067 {param: "upsells_code", cookie: "sca_upsell_codes"}, 18068 {param: "discounts_code", cookie: "sca_discount_codes"}, 18069 ]; 18070 SECOMAPP.offer_codes.forEach(({param, cookie}) => { 18071 SECOMAPP.fg_codes = []; 18072 SECOMAPP.getCookie(cookie) && (SECOMAPP.fg_codes = JSON.parse(SECOMAPP.getCookie(cookie))); 18073 SECOMAPP.current_code = SECOMAPP.getQueryString(param); 18074 SECOMAPP.current_code && !SECOMAPP.fg_codes.includes(SECOMAPP.current_code) 18075 && (function () { 18076 SECOMAPP.activateOnlyOnePromoCode && (SECOMAPP.fg_codes = []); 18077 SECOMAPP.fg_codes.push(SECOMAPP.current_code); 18078 SECOMAPP.setCookie(cookie, JSON.stringify(SECOMAPP.fg_codes)); 18079 })(); 18080 }); 18081 18082 SECOMAPP.customer = {}; 18083 SECOMAPP.customer.orders = []; 18084 SECOMAPP.customer.freegifts = []; 18085 SECOMAPP.customer.freegifts_v2 = []; 18086 18087 SECOMAPP.customer.email = ""; 18088 SECOMAPP.customer.first_name = ""; 18089 SECOMAPP.customer.last_name = ""; 18090 SECOMAPP.customer.tags = Object.values({...null}); 18091 SECOMAPP.customer.orders_count = "" - 0; 18092 SECOMAPP.customer.total_spent = "" - 0; 18093 SECOMAPP.customer.b2b = "" - 0; 18094 SECOMAPP.market = { 18095 id: "71082934579" - 0, 18096 handle: "us", 18097 }; 18098 18099 18100 // get class name config from settings_data.json 18101 if (!Shopify.scaHandleConfigValue) { 18102 Shopify.scaHandleConfigValue = { 18103 ...null, 18104 ...null 18105 }; 18106 } 18107 18108 // add link proxy 18109 SECOMAPP.freegiftProxy = "/apps/secomapp_freegifts_get_order?ver=3.0"; 18110 18111 SECOMAPP.freegiftProxy = "/apps/secomapp_freegifts_get_order?ver=3.0"; 18112 18113 SECOMAPP.bogosCollectUrl = "https://collect.bogos.io/collect" 18114 SECOMAPP.bogosIntegrationUrl = "https://api.bogos.io/integrations" 18115 18116 // get shop locales 18117 SECOMAPP.shop_locales = Object.values({ 18118 ...[{"shop_locale":{"locale":"en","enabled":true,"primary":true,"published":true}}] 18119 }); 18120 18121 SECOMAPP.current_locale = { ...{"shop_locale":{"locale":"en","enabled":true,"primary":true,"published":true}} } 18122 18123 18124 18125 window.fgGiftIcon = "https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/fg-icon-red_small.png"; 18126 window.fgWidgetIconsObj = { 18127 "widget-icon-1.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-1_small.png', 18128 "widget-icon-2.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-2_small.png', 18129 "widget-icon-3.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-3_small.png', 18130 "widget-icon-4.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-4_small.png', 18131 "widget-icon-5.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-5_small.png', 18132 "widget-icon-6.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-6_small.png', 18133 "widget-icon-7.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-7_small.png', 18134 "widget-icon-8.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/widget-icon-8_small.png' 18135 } 18136 18137 window.fgStepIconsObj = { 18138 "step-icon-1.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-1_small.png', 18139 "step-icon-2.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-2_small.png', 18140 "step-icon-3.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-3_small.png', 18141 "step-icon-4.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-4_small.png', 18142 "step-icon-5.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-5_small.png', 18143 "step-icon-6.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-6_small.png', 18144 "step-icon-7.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/step-icon-7_small.png', 18145 } 18146 18147 window.fgSummaryIconsObj = { 18148 "summary-icon-1.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-1_small.png', 18149 "summary-icon-2.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-2_small.png', 18150 "summary-icon-3.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-3_small.png', 18151 "summary-icon-4.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-4_small.png', 18152 "summary-icon-5.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-5_small.png', 18153 "summary-icon-6.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-6_small.png', 18154 "summary-icon-7.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-7_small.png', 18155 "summary-icon-8.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/summary-icon-8_small.png', 18156 } 18157 18158 window.fgShippingIconsObj = { 18159 "shipping-icon-1.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/shipping-icon-1_small.png', 18160 "shipping-icon-2.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/shipping-icon-2_small.png', 18161 "shipping-icon-3.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/shipping-icon-3_small.png', 18162 "shipping-icon-4.png": 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/shipping-icon-4_small.png', 18163 } 18164 18165 // variable from tools 18166 SECOMAPP.variables = { 18167 ...SECOMAPP.variables, 18168 ...null, 18169 ...{"web_pixel":true}, 18170 shipping_product_img: 'https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/shipping_product_small.png' 18171 } 18172 18173 window.fgResource = { 18174 gift: { 18175 js: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/gift.min.js"] 18176 }, 18177 bundle: { 18178 js: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bundle.min.js"], 18179 css: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.bundle.min.css"] 18180 }, 18181 upsell: { 18182 js: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/upsell.min.js"], 18183 css: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.upsell.min.css"] 18184 }, 18185 discount: { 18186 js: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/discount.min.js"], 18187 css: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.discount.min.css"] 18188 }, 18189 "bundle-page": { 18190 js: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bundle-page.min.js"], 18191 css: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.bundle-page.min.css"] 18192 }, 18193 booster: { 18194 js: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/booster.min.js"], 18195 css: ["https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.booster.min.css"] 18196 } 18197 } 18198</script>
18198 18199
18200<script defer src="https://cdn.bogos.io/c2VhdHRsZWNvZmZlZWdlYXIubXlzaG9waWZ5LmNvbQ==/freegifts_data_1788538855.min.js"></script>
18200 18201<div id="secomapp_freegifts_url" data-url="https://cdn.bogos.io/c2VhdHRsZWNvZmZlZWdlYXIubXlzaG9waWZ5LmNvbQ==/freegifts_data_1788538855.min.js"></div> 18202 18203 18204<div id="bogos-gift-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/gift.min.js"></div> 18205<div id="bogos-bundle-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bundle.min.js"></div> 18206<div id="bogos-upsell-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/upsell.min.js"></div> 18207<div id="bogos-discount-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/discount.min.js"></div> 18208<div id="bogos-bundle-page-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bundle-page.min.js"></div> 18209<div id="bogos-booster-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/booster.min.js"></div> 18210<div id="bogos-booster-page-script" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/booster-page.min.js"></div> 18211 18212 18213<div id="bogos-bundle-style" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.bundle.min.css"></div> 18214<div id="bogos-upsell-style" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.upsell.min.css"></div> 18215<div id="bogos-discount-style" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.discount.min.css"></div> 18216<div id="bogos-bundle-page-style" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.bundle-page.min.css"></div> 18217<div id="bogos-booster-style" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.booster.min.css"></div> 18218<div id="bogos-booster-page-style" data-url="https://cdn.shopify.com/extensions/01a0d1bb-e419-72e0-b3db-9b9890abbb77/freegifts-231/assets/bogos.booster-page.min.css"></div> 18219<!-- END app snippet --> 18220 18221 18222<!-- BEGIN app snippet: search --> 18223<!-- END app snippet --> 18224 18225 18226 18227</div><div id="shopify-block-AaEZlZ2xkRExGM3F1K__10979705531712725373" class="shopify-block shopify-app-block"> 18228 18229 18230 18231 18232<div id="tt-teaser-icons" style="display:none;"> 18233 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 18234 <symbol id="tt-teaser-star--empty" viewBox="0 0 24 24"> 18235 <path d="M12 18l-6.4 3.88 1.73-7.33-5.66-4.93L9.09 9 12 2.09 14.91 9l7.42.64-5.63 5 1.72 7.34z" fill="none" xmlns="http://www.w3.org/2000/svg"></path> 18236 </symbol> 18237 <symbol id="tt-teaser-star--full" viewBox="0 0 24 24"> 18238 <path d="M12 18.66l-7.44 4.35 1.98-8.16L0 9.36l8.62-.7L12 .99l3.38 7.67 8.62.7-6.54 5.49 1.98 8.16L12 18.66z" xmlns="http://www.w3.org/2000/svg"></path> 18239 </symbol> 18240 <symbol id="tt-teaser-star--half" viewBox="0 0 24 24"> 18241 <path fill="currentColor" d="M12 2.09L9.09 9l-7.42.62 5.66 4.93-1.72 7.32 1.07-.65L12 17.97V2.09z" xmlns="http://www.w3.org/2000/svg"></path> 18242 <path d="M12 2.09L14.91 9l7.42.62-5.66 4.93 1.72 7.32-1.07-.65L12 17.97V2.09z"></path> 18243 </symbol> 18244 </svg> 18245</div> 18246<style> 18247 .tt-product-block .TTteaser { 18248 font-size: 12px; 18249 font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; 18250 } 18251 .tt-product-block .TTteaser__rating { 18252 display: inline-block; 18253 vertical-align: middle; 18254 margin-right: 5px; 18255 } 18256 .tt-product-block .TTteaser__star svg { 18257 width: 16px; 18258 height: 16px; 18259 } 18260 .tt-product-block .TTteaser__icon--full { 18261 fill: #000; 18262 } 18263 .tt-product-block .TTteaser__icon--half { 18264 stroke: #000; 18265 fill: transparent; 18266 color: #000; 18267 } 18268 .tt-product-block .TTteaser__icon--empty { 18269 stroke: #000; 18270 } 18271 .tt-product-block .TTteaser__read-qa, 18272 .tt-product-block .TTteaser__read-comments, 18273 .tt-product-block .TTteaser__read-reviews, 18274 .tt-product-block .TTteaser__write-review { 18275 font-size: 12px; 18276 font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; 18277 color: #000; 18278 text-decoration: underline; 18279 } 18280 .tt-product-block .TTteaser__write-review { 18281 border: none; 18282 text-decoration: underline; 18283 background: transparent; 18284 padding: 0; 18285 cursor: pointer; 18286 } 18287</style> 18288 18289 18290 18291<!-- BEGIN app snippet: tt-bootstrap-config -->
18291<script> 18292 window.__turnToBootstrapParams = { 18293 force_fallback: false, 18294 fallback: "page", 18295 editor_mode: false 18296 }; 18297 (function() { 18298 const priorityMap = { 18299 "pdp-page": 100, 18300 "email-landing-page": 90, 18301 "all-reviews-page": 85, 18302 "seller-ratings-page": 80, 18303 "vc-pinboard-page": 75, 18304 "comments-pinboard-page": 70 18305 }; 18306 18307 window.__turnToSyncPageIdToConfig = window.__turnToSyncPageIdToConfig || function() { 18308 if (window.__turnToResolvedPageId && window.turnToConfig) { 18309 window.turnToConfig.pageId = window.__turnToResolvedPageId; 18310 } 18311 }; 18312 18313 function stickyPageId() { 18314 if (window.__turnToLastResolvedWidgetPageId) { 18315 return window.__turnToLastResolvedWidgetPageId; 18316 } 18317 try { 18318 return sessionStorage.getItem("__turnToLastResolvedWidgetPageId"); 18319 } catch (e) { 18320 return null; 18321 } 18322 } 18323 18324 function saveStickyPageId(pageId) { 18325 if (!pageId) { 18326 return; 18327 } 18328 window.__turnToLastResolvedWidgetPageId = pageId; 18329 try { 18330 sessionStorage.setItem("__turnToLastResolvedWidgetPageId", pageId); 18331 } catch (e) { 18332 /* storage unavailable */ 18333 } 18334 } 18335 18336 function collectDomPageIds() { 18337 const ids = []; 18338 document.querySelectorAll("[data-tt-widget-page-id]").forEach((el) => { 18339 const v = el.getAttribute("data-tt-widget-page-id"); 18340 if (v) { 18341 ids.push(v.trim()); 18342 } 18343 }); 18344 return ids; 18345 } 18346 18347 function isEditorContext(params) { 18348 if (params && params.editor_mode) { 18349 return true; 18350 } 18351 try { 18352 if (document.documentElement && document.documentElement.classList.contains("shopify-design-mode")) { 18353 return true; 18354 } 18355 if (window.Shopify && (window.Shopify.designMode || window.Shopify.visualPreviewMode)) { 18356 return true; 18357 } 18358 const q = window.location && window.location.search; 18359 if (q && (q.indexOf("oseid=") !== -1 || q.indexOf("source=visualPreview") !== -1 || q.indexOf("preview_theme_id=") !== -1)) { 18360 return true; 18361 } 18362 } catch (e) { 18363 return false; 18364 } 18365 return false; 18366 } 18367 18368 const WIDGET_CONFIG_KEYS = ["gallery", "allReviews", "vcPinboard", "commentsPinboard", "topComments"]; 18369 const WIDGET_MOUNT_CHECKS = [ 18370 { key: "gallery", selector: "#tt-gallery-row" }, 18371 { key: "allReviews", selector: "#tt-all-reviews" }, 18372 { key: "vcPinboard", selector: "#tt-vc-pinboard-widget" }, 18373 { key: "commentsPinboard", selector: "#tt-comments-pinboard-widget" }, 18374 { key: "topComments", selector: ".tt-top-comment" } 18375 ]; 18376 const STICKY_WIDGET_CONFIG_STORAGE_KEY = "__turnToLastMergedWidgetConfig"; 18377 18378 function stickyWidgetConfigMap() { 18379 if (window.__turnToLastMergedWidgetConfig) { 18380 return window.__turnToLastMergedWidgetConfig; 18381 } 18382 try { 18383 const raw = sessionStorage.getItem(STICKY_WIDGET_CONFIG_STORAGE_KEY); 18384 return raw ? JSON.parse(raw) : {}; 18385 } catch (e) { 18386 return {}; 18387 } 18388 } 18389 18390 function saveStickyWidgetConfigMap(map) { 18391 window.__turnToLastMergedWidgetConfig = map; 18392 try { 18393 if (map && Object.keys(map).length > 0) { 18394 sessionStorage.setItem(STICKY_WIDGET_CONFIG_STORAGE_KEY, JSON.stringify(map)); 18395 } else { 18396 sessionStorage.removeItem(STICKY_WIDGET_CONFIG_STORAGE_KEY); 18397 } 18398 } catch (e) { 18399 /* storage unavailable */ 18400 } 18401 } 18402 18403 window.__turnToSyncWidgetConfigFromSticky = window.__turnToSyncWidgetConfigFromSticky || function() { 18404 if (!window.turnToConfig || !isEditorContext(window.__turnToBootstrapParams)) { 18405 return; 18406 } 18407 const sticky = stickyWidgetConfigMap(); 18408 WIDGET_CONFIG_KEYS.forEach(function(k) { 18409 if (Object.prototype.hasOwnProperty.call(sticky, k)) { 18410 window.turnToConfig[k] = sticky[k]; 18411 } 18412 }); 18413 }; 18414 18415 function applyWidgetConfigSnapshot(snapshot) { 18416 WIDGET_CONFIG_KEYS.forEach(function(k) { 18417 delete window.turnToConfig[k]; 18418 }); 18419 if (!snapshot) { 18420 return; 18421 } 18422 Object.keys(snapshot).forEach(function(k) { 18423 if (WIDGET_CONFIG_KEYS.indexOf(k) !== -1) { 18424 window.turnToConfig[k] = snapshot[k]; 18425 } 18426 }); 18427 } 18428 18429 function mergeWidgetConfigsFromDom() { 18430 const merged = {}; 18431 document.querySelectorAll("[data-tt-widget-config]").forEach(function(el) { 18432 try { 18433 const cfg = JSON.parse(el.textContent); 18434 Object.keys(cfg).forEach(function(k) { 18435 merged[k] = cfg[k]; 18436 }); 18437 } catch (e) { 18438 /* invalid widget config JSON */ 18439 } 18440 }); 18441 return merged; 18442 } 18443 18444 function persistWidgetConfigToSticky() { 18445 const sticky = stickyWidgetConfigMap();
18446 WIDGET_CONFIG_KEYS.forEach(function(k) { 18447 if (window.turnToConfig[k] !== undefined) { 18448 sticky[k] = window.turnToConfig[k]; 18449 } 18450 }); 18451 saveStickyWidgetConfigMap(sticky); 18452 } 18453 18454 function mergeWidgetConfigsInEditor(merged) { 18455 WIDGET_CONFIG_KEYS.forEach(function(k) { 18456 if (Object.prototype.hasOwnProperty.call(merged, k)) { 18457 window.turnToConfig[k] = merged[k]; 18458 } 18459 }); 18460 persistWidgetConfigToSticky(); 18461 } 18462 18463 function mergeWidgetConfigs() { 18464 if (!window.turnToConfig) { 18465 return; 18466 } 18467 const params = window.__turnToBootstrapParams; 18468 const editor = params && isEditorContext(params); 18469 const scripts = document.querySelectorAll("[data-tt-widget-config]"); 18470 18471 if (scripts.length === 0) { 18472 if (!editor) { 18473 applyWidgetConfigSnapshot(null); 18474 saveStickyWidgetConfigMap({}); 18475 } 18476 return; 18477 } 18478 18479 const merged = mergeWidgetConfigsFromDom(); 18480 if (editor) { 18481 mergeWidgetConfigsInEditor(merged); 18482 } else { 18483 applyWidgetConfigSnapshot(merged); 18484 saveStickyWidgetConfigMap(merged); 18485 } 18486 } 18487 18488 function domHasWidgetConfigKey(key) { 18489 let found = false; 18490 document.querySelectorAll("[data-tt-widget-config]").forEach(function(el) { 18491 try { 18492 const cfg = JSON.parse(el.textContent); 18493 if (Object.prototype.hasOwnProperty.call(cfg, key)) { 18494 found = true; 18495 } 18496 } catch (e) { 18497 /* invalid widget config JSON */ 18498 } 18499 }); 18500 return found; 18501 } 18502 18503 function widgetConfigSettled() { 18504 if (!window.turnToConfig) { 18505 return false; 18506 } 18507 const editor = isEditorContext(window.__turnToBootstrapParams); 18508 if (editor && collectDomPageIds().length === 0 && document.querySelectorAll("[data-tt-widget-config]").length === 0) { 18509 return true; 18510 } 18511 for (const check of WIDGET_MOUNT_CHECKS) { 18512 if (!document.querySelector(check.selector)) { 18513 continue; 18514 } 18515 if (window.turnToConfig[check.key] !== undefined) { 18516 continue; 18517 } 18518 if (!domHasWidgetConfigKey(check.key)) { 18519 window.turnToConfig[check.key] = {}; 18520 continue; 18521 } 18522 return false; 18523 } 18524 return true; 18525 } 18526 18527 function isReadyToLoadTurnToScript() { 18528 const params = window.__turnToBootstrapParams; 18529 if (!params || !window.__turnToResolvedPageId) { 18530 return false; 18531 } 18532 if (!widgetConfigSettled()) { 18533 return false; 18534 } 18535 if (params.force_fallback) { 18536 return true; 18537 } 18538 if (collectDomPageIds().length > 0) { 18539 return true; 18540 } 18541 return !isEditorContext(params); 18542 } 18543 18544 function stopWatching() { 18545 if (window.__turntoBootstrapObserver) { 18546 window.__turntoBootstrapObserver.disconnect(); 18547 window.__turntoBootstrapObserver = null; 18548 } 18549 } 18550 18551 function startWatching() { 18552 if (window.__turntoBootstrapObserver || !document.body) { 18553 if (!document.body) { 18554 setTimeout(startWatching, 0); 18555 } 18556 return; 18557 } 18558 window.__turntoBootstrapObserver = new MutationObserver(function() { 18559 window.__turnToScheduleBootstrap(); 18560 }); 18561 window.__turntoBootstrapObserver.observe(document.body, { 18562 childList: true, 18563 subtree: true 18564 }); 18565 } 18566 18567 window.__turnToResolvePageId = function() { 18568 const params = window.__turnToBootstrapParams; 18569 if (!params) { 18570 return true; 18571 } 18572 if (params.force_fallback) { 18573 window.__turnToResolvedPageId = params.fallback; 18574 return true; 18575 } 18576 18577 const registered = collectDomPageIds(); 18578 18579 if (registered.length === 0) { 18580 if (isEditorContext(params)) { 18581 const sticky = stickyPageId() || (window.turnToConfig && window.turnToConfig.pageId); 18582 if (sticky) { 18583 saveStickyPageId(sticky); 18584 window.__turnToResolvedPageId = sticky; 18585 } 18586 return false; 18587 } 18588 window.__turnToResolvedPageId = params.fallback; 18589 return true; 18590 } 18591 18592 let best = registered[0]; 18593 let bestPriority = priorityMap[best] || 0; 18594 for (const id of registered) { 18595 const idPriority = priorityMap[id] || 0; 18596 if (idPriority > bestPriority) { 18597 best = id; 18598 bestPriority = idPriority; 18599 } 18600 } 18601 saveStickyPageId(best); 18602 window.__turnToResolvedPageId = best; 18603 return true; 18604 }; 18605 18606 function manageBootstrapWatching() { 18607 if (window.__turntoScriptLoaded || isReadyToLoadTurnToScript()) { 18608 stopWatching(); 18609 return; 18610 } 18611 startWatching(); 18612 } 18613 18614 function runBootstrap() { 18615 const settled = window.__turnToResolvePageId(); 18616 window.__turnToSyncPageIdToConfig(); 18617 mergeWidgetConfigs(); 18618 window.__turnToSyncWidgetConfigFromSticky && window.__turnToSyncWidgetConfigFromSticky(); 18619 manageBootstrapWatching(); 18620 if (isReadyToLoadTurnToScript() && typeof window.__turnToLoadScriptOnce === "function") { 18621 window.__turnToLoadScriptOnce(); 18622 } 18623 return settled; 18624 } 18625 18626 window.__turnToScheduleBootstrap = function() { 18627 if (window.__turnToBootstrapDebounceTimer) { 18628 clearTimeout(window.__turnToBootstrapDebounceTimer); 18629 } 18630 window.__turnToBootstrapDebounceTimer = setTimeout(function() { 18631 window.__turnToBootstrapDebounceTimer = null; 18632 runBootstrap(); 18633 }, 50); 18634 }; 18635 18636 if (!window.__turntoBootstrapHooksRegistered) { 18637 window.__turntoBootstrapHooksRegistered = true; 18638 const resync = function() { 18639 window.__turnToScheduleBootstrap(); 18640 }; 18641 document.addEventListener("shopify:section:load", resync); 18642 document.addEventListener("shopify:section:unload", function() { 18643 setTimeout(resync, 0); 18644 }); 18645 if (document.readyState === "loading") { 18646 document.addEventListener("DOMContentLoaded", resync); 18647 } 18648 window.addEventListener("load", resync); 18649 } 18650 18651 window.__turnToScheduleBootstrap(); 18652 })(); 18653</script>
18653 18654<!-- END app snippet --> 18655
18656<script> 18657 (function bootstrapTurnToAppEmbed() { 18658 window.__turnToLoadScriptOnce = function() { 18659 if (window.__turntoScriptLoaded || !window.__turnToResolvedPageId) { 18660 return; 18661 } 18662 window.__turntoScriptLoaded = true; 18663 const script = document.createElement("script"); 18664 script.src = "https://widgets.turnto.com/v5/widgets/FXvbEP9ZXZpRg6qsite/js/turnto.js"; 18665 script.async = true; 18666 document.body.appendChild(script); 18667 }; 18668 18669 if (window.__turntoAppEmbedInitialized) { 18670 window.__turnToScheduleBootstrap && window.__turnToScheduleBootstrap(); 18671 window.__turnToSyncPageIdToConfig && window.__turnToSyncPageIdToConfig(); 18672 window.__turnToSyncWidgetConfigFromSticky && window.__turnToSyncWidgetConfigFromSticky(); 18673 return; 18674 } 18675 window.__turntoAppEmbedInitialized = true; 18676 18677 window.TurnToCmd=window.TurnToCmd||function(){(TurnToCmd.q=TurnToCmd.q||[]).push(arguments)}; 18678 window.TurnToSKUSetup="PRODUCT"; 18679 18680 window.turnToConfig = { 18681 locale: "en_US", 18682 18683 18684 }; 18685 18686 window.__turnToScheduleBootstrap && window.__turnToScheduleBootstrap(); 18687 })(); 18688</script>
18688 18689 18690 18691 18692 18693</div><div id="shopify-block-Ac21LRUFTbmFkakdLU__12622292715052272319" class="shopify-block shopify-app-block">
18693<script type="module" src="https://cdn.shopify.com/extensions/01a0cee8-4633-7902-bbad-097a24875e3d/magical-mandatory-fees-305/assets/magical-mandatory-fees.js"></script>
18693 18694<magical-mandatory-fees data-id="Ac21LRUFTbmFkakdLU__12622292715052272319">
18694<script type="application/json"> 18695 { 18696 "root_url": "/", 18697 "cart_url": "/cart", 18698 "cart_add_url": "/cart/add", 18699 "cart_change_url": "/cart/change", 18700 "cart_clear_url": "/cart/clear", 18701 "cart_update_url": "/cart/update", 18702 "currency_rate_base": {"amount":"100000000","currency_code":"USD"}, 18703 "account_login_url": "https://www.seattlecoffeegear.com/customer_authentication/redirect?locale=en®ion_country=US", 18704 "account_register_url": "https://account.seattlecoffeegear.com?locale=en&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzZWF0dGxlY29mZmVlZ2Vhci5teXNob3BpZnkuY29tIiwiZmxhZ3MiOltdLCJleHAiOjE3OTA4NzQ5NDksIm5iZiI6MTc5MDI3MDE0OX0.HjUs0QPW0FT7SZFRNyXUq-aeb9doQ5teW4d5NNOTh2E", 18705 "fees": [ 18706], 18707 "fees_metaobjects": [ 18708{ 18709 "id" : "52939234050355", 18710 "title" : "CA Battery Recycling Fee", 18711 "price_type" : "percentage", 18712 "price" : "150.0", 18713 "image" : "", 18714 "logic": { 18715 "fee_type": "product", 18716 "appliedTo": ["conditions"], 18717 "appliedDisjunctively": ["true"], 18718 "cart": [], 18719 "conditions": [{"column":"tags","condition":"CACBE%","relation":"equals"}], 18720 "locations": [{"id":"United States","options":[{"id":"California","name":"California","provinceCode":"CA"}],"name":"United States","countryCode":"US"}], 18721 "markets": [], 18722 "payment_methods": [], 18723 "products": [], 18724 "collections": [], 18725 "customer_tags": [], 18726 "quantities": {"conditions":[],"disjunctively":"false","evaluationMode":"all"}, 18727 "sales_channels": ["online_store","draft_orders"], 18728 "rule": ["every"], 18729 "bundled_with": ["product"], 18730"min_fee_amount": null,"max_fee_amount": "1500.0"}, 18731 "details" : "California required recycling fee for products with embedded batteries.", 18732 "information" : "This product requires \u0026lt;strong\u0026gt;CA Battery Recycling Fee\u0026lt;\/strong\u0026gt;. This \u0026lt;strong\u0026gt;\u0026lt;\/strong\u0026gt; fee will be added to your cart.", 18733 "information_title" : "\u0026lt;strong\u0026gt;CA Battery Recycling Fee\u0026lt;\/strong\u0026gt;", 18734 "information_price" : "\u0026lt;strong\u0026gt;\u0026lt;\/strong\u0026gt;", 18735 "information_percentage": "This product requires \u0026lt;strong\u0026gt;CA Battery Recycling Fee\u0026lt;\/strong\u0026gt;. This 1.5% fee will be added to your cart.", 18736 "consent": "mandated" 18737 } 18738 ,{ 18739 "id" : "52949411823923", 18740 "title" : "CA Battery Recycling Fee", 18741 "price_type" : "fixed", 18742 "price" : "1500.0", 18743 "image" : "", 18744 "logic": { 18745 "fee_type": "product", 18746 "appliedTo": ["conditions"], 18747 "appliedDisjunctively": ["true"], 18748 "cart": [], 18749 "conditions": [{"column":"tags","condition":"CACBE$","relation":"equals"}], 18750 "locations": [{"id":"United States","options":[{"id":"California","name":"California","provinceCode":"CA"}],"name":"United States","countryCode":"US"}], 18751 "markets": [], 18752 "payment_methods": [], 18753 "products": [], 18754 "collections": [], 18755 "customer_tags": [], 18756 "quantities": {"conditions":[],"disjunctively":"false","evaluationMode":"all"}, 18757 "sales_channels": ["online_store","draft_orders"], 18758 "rule": ["every"], 18759 "bundled_with": ["product"], 18760"min_fee_amount": null,"max_fee_amount": null}, 18761 "details" : "California required recycling fee for products with embedded batteries.", 18762 "information" : "This product requires \u0026lt;strong\u0026gt;CA Battery Recycling Fee\u0026lt;\/strong\u0026gt;. This \u0026lt;strong\u0026gt;$15.00\u0026lt;\/strong\u0026gt; fee will be added to your cart.", 18763 "information_title" : "\u0026lt;strong\u0026gt;CA Battery Recycling Fee\u0026lt;\/strong\u0026gt;", 18764 "information_price" : "\u0026lt;strong\u0026gt;$15.00\u0026lt;\/strong\u0026gt;", 18765 "information_percentage": "This product requires \u0026lt;strong\u0026gt;CA Battery Recycling Fee\u0026lt;\/strong\u0026gt;. This 15.0% fee will be added to your cart.", 18766 "consent": "mandated" 18767 } 18768 ],"metafield_fees": null,"metafield_fees_display": {}, 18769 "country": "US", 18770 "customer_tags": [], 18771 "order_fees_placeholder": 18772 null, 18773 "product_fees_placeholder": 18774 null, 18775 "cart_products": [ 18776 ],"cart_variant_prices": {}, 18777 "cart_contents": [], 18778 "market": { 18779 "id": 71082934579, 18780 "handle": "us" 18781 }, 18782 "current_product": { 18783 "id": "", 18784 "product_type": null, 18785 "vendor": null, 18786 "tags": null, 18787 "variant_options": [], 18788 "selected_variant": "", 18789 "collections": [], 18790 "price": "" 18791 }, 18792 "currency_format" : { 18793 "html_with_currency" :"$0.00 USD", 18794 "html_without_currency" :"0.00"}, 18795 "plan" : "Growth", 18796 "features" : {"checkout_extensions":true,"location_fees_checkout":true,"extended_payment_methods":true,"customer_tag_fees":true,"total_order_percentage":true,"cart_applied_to":true,"audit_logging":true,"audit_log_history_days":true}, 18797 18798 "fees_required_message" : "", 18799 "fees_consent_description" : "", 18800 "hide_dynamic_checkout" : false, 18801 "force_page_refresh" : false, 18802 "disable_storefront_fee_application" : false, 18803 "locale": { 18804 "additional_fees_legacy": "This cart includes products which require fees of", 18805 "additional_fees": "This cart includes products which require fees. Additional fees may apply at checkout.", 18806 "details": "Details", 18807 "fee": "Fee", 18808 "accept": "Accept", 18809 "decline": "Decline", 18810 "accept_all": "Accept all", 18811 "decline_all": "Decline all", 18812 "location_fee_message": "Additional fees may apply at checkout.", 18813 "payment_fee_message": "Additional fees may apply at checkout.", 18814 "customer_tags_fee_message": "Additional fees may apply at checkout.", 18815 "additional_fees_message": "Additional fees apply.", 18816 "additional_fees_may_apply": "Additional fees may apply.", 18817 "price": "Price", 18818 "location_confirmation_required": "Location confirmation required", 18819 "location_fees_may_apply": "Location-based fees may apply to this order. Please confirm your location to ensure accurate pricing.", 18820 "detected_location_country": "Location-based fees may apply to this order. We detected you\u0026#39;re in {{country}}. Please confirm your location to ensure accurate pricing.", 18821 "detected_location_province": "Location-based fees may apply to this order. We detected you\u0026#39;re in {{country}}. Please select your state\/province and confirm your location to ensure accurate pricing.", 18822 "select_state_province": "State\/Province:", 18823 "select_country": "Country:", 18824 "select_your_country": "Select your country...", 18825 "select_your_state_province": "Select your state\/province...", 18826 "select_state_province_manual": "Select your state\/province...", 18827 "my_country_not_listed": "My country is not listed", 18828 "my_state_province_not_listed": "My state\/province is not listed", 18829 "choose_different_location": "Choose different location", 18830 "confirm_location": "Confirm location" 18831 } 18832 } 18833 </script>
18833</magical-mandatory-fees> 18834 18835 18836</div>
18836<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
18836 18837</body> 18838</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.