PageSourceSearch

https://www.seattlecoffeegear.com/pages/learn-articles

html seattlecoffeegear.com collected 2026-09-24 17:15:49 UTC 861,376 bytes, 18,838 lines download raw bytes

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":"&#10005;","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":"&#10005;","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&region_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&amp;platfAppInstalledSiteId=3480081&amp;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&amp;width=400" alt="Seattle Coffee Gear Logo" srcset="//www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&amp;width=352 352w, //www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&amp;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&amp;width=600" alt="Seattle Coffee Gear Logo" srcset="//www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&amp;width=352 352w, //www.seattlecoffeegear.com/cdn/shop/files/SCG_LOGO_Primary_Red_Black.svg?v=1702922034&amp;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&amp;height=192&amp;v=1762890026&amp;width=256" alt="A selection of Tony&#39;s Coffee products on a dark gray background with portafilter and latte&#39;s. " srcset="//www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock.jpg?crop=center&amp;height=192&amp;v=1762890026&amp;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&#39;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=&quot;'+ index_scroll + '&quot;]');
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&amp;height=192&amp;v=1762893831&amp;width=400" alt="Tony&#39;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&amp;height=168&amp;v=1762893831&amp;width=352 352w, //www.seattlecoffeegear.com/cdn/shop/files/SubsNavBlock_Mobile.jpg?crop=center&amp;height=192&amp;v=1762893831&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Maple_Pecan_Iced_Latte_6439f563-3c69-4275-a959-64868606468a.jpg?v=1789076240&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Tonic_Bomb_be4f4b27-6e63-4246-b94e-591376f5e0a4.jpg?v=1787763443&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Jittery_Cola_Float_d87c0e50-e1a3-4b59-b6d8-973e2178535c.jpg?v=1786662782&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_Snowcone_a19fba50-1a97-4985-adaf-38c125960424.jpg?v=1784846626&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Store_Coffee_Beans_for_Freshest_Taste_8ff2c5a8-7e43-45d9-bf7a-0e0d57dba753.jpg?v=1787348580&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Espresso_vs_Ground_Coffee_-_Which_is_best_f9e7f11b-f7a2-419d-9d06-ec8595386660.jpg?v=1786659506&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/How_Does_an_Espresso_Machine_Work_3352da2b-3fea-4b48-871a-f79e3e381892.jpg?v=1789440931&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_August_2026_7a7e24ce-5927-46a4-8111-c28b3aabea73.jpg?v=1788219810&amp;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&amp;width=1200" alt="SCG host with the LELIT Mara X3 and Bianca espresso machines in July&#39;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Monthly_Video_Recap_-_July_2026_4057d8cc-8028-4024-a0b6-ff1baaca9b1e.jpg?v=1785365228&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/World_Cup_-_July_2027_84504a8e-1e7c-4494-b8e6-80e910622f97.jpg?v=1783025526&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Topical_Blog_-_Monthly_Video_Recap_-_June_2026_1a80df8b-e64e-4155-b9ee-c722c05225b9.jpg?v=1782878078&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;width=1200" alt="Top super automatic espresso machines of 2026: Terra Kaffe Demi, Philips Café Aromis, De&#39;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Top_3_of_the_Year_Superautos_199b9e19-17f6-4d72-ad54-20babf3bc2bb.jpg?v=1789161600&amp;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&amp;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&amp;width=375 375w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&amp;width=550 550w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&amp;width=750 750w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&amp;width=900 900w, //www.seattlecoffeegear.com/cdn/shop/articles/Crew_Review__Rocket_R58_Tune_Espresso_Machine_4cc5b4b5-3b77-4c0a-8a9d-d3e6ad328729.jpg?v=1788473082&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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=&quot;' + index_scroll + '&quot;]');
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&region_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.