1 2 3 <!DOCTYPE html> 4<html class="no-js no-touch" lang="en"> <head>
4<script data-source-attribution="shopify.event_observer.bootstrap"> 5(function(){let e=navigator,t=`prototype`,n=`sendBeacon`,r=e[n],i=fetch,a=XMLHttpRequest[t],{open:o,send:s}=a,c=`EventListener`,l=`add${c}`,u=`remove${c}`,d=EventTarget[t],f=d[l],p=d[u],m=e=>Error((e=document.currentScript)&&[e?.src,e?.id||e?.dataset?.sourceAttribution]),h=(e=[],t=0)=>(e.p=n=>e[t++%1e3]=n,[e,t=>(e.forEach(e.p=t),e.length=0)]),[g,_]=h(),[v,y]=h(),b,x=new WeakMap,S=e=>e&&g.p([e,b||[m()]]);d[l]=function(e,t,n){let r=this,i=t?.handleEvent||t,a=x.get(t),o=m();i?.call&&!a&&x.set(t,a=function(e){b=[o,e.type];try{i.call(t==i?this:t,e)}finally{b=null}}),v.p([e,o,a,r?.tagName||r+``,r?.id]),f.call(r,e,a||t,n)},d[u]=function(e,t,n){p.call(this,e,x.get(t)||t,n)},a.open=function(e,t){x.set(this,[t+``,e]),o.apply(this,arguments)},a.send=function(e){S(x.get(this)),s.call(this,e)},fetch=(e,t)=>(S([(e?.url||e)+``,t?.method]),i(e,t)),e[n]=(t,n)=>(S([t+``,``]),r.call(e,t,n)),setTimeout(()=>import("//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/storefront/event_observer_reporter-ed358274.js").then(e=>e.$(_,y,f,i,`54106423494`)))})(); 6//# sourceURL=event-observer-collector.js 7</script>
7 8 9
9<script src="//altitudecoffeelondon.com/cdn/shop/files/pandectes-rules.js?v=191411706097514835"></script>
9 <!-- Google Tag Manager -->
10<script> 11 window.dataLayer = window.dataLayer || []; 12</script>
vendor: 1 bytes, line 12
12
13<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 14new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 15j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 16'https://analytics.altitudecoffeelondon.com/ihhgumhj.js?id='+i+dl;f.parentNode.insertBefore(j,f); 17})(window,document,'script','dataLayer','GTM-NZSCZVP6');</script>
17 18<!-- End Google Tag Manager -->
19<script id="elevar-gtm-suite-config" type="application/json">{"gtm_id": "GTM-NZSCZVP6", "event_config": {"cart_reconcile": true, "cart_view": true, "checkout_complete": true, "checkout_step": true, "collection_view": true, "product_add_to_cart": false, "product_add_to_cart_ajax": true, "product_remove_from_cart": true, "product_select": true, "product_view": true, "search_results_view": true, "user": true, "save_order_notes": true}, "gtm_suite_script": "https://cdn.shopify.com/s/files/1/0541/0642/3494/files/datalayer_sld.js", "consent_enabled": false}</script>
19 <meta charset="utf-8"> <meta http-equiv="cleartype" content="on"> <meta name="robots" content="index,follow"> <!-- Mobile Specific Metas --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="theme-color" content="#f8f1da"> <title> 20 The Captain's Roast Espresso Blend | Altitude Coffee London</title> <meta name="description" content="Our flagship espresso blend â chocolate, orange and walnut. 2-star Great Taste winner. From £11.50/250g. Ethically sourced. Free delivery over £30."/> <!-- Preconnect Domains --> <link rel="preconnect" href="https://fonts.shopifycdn.com" /> <link rel="preconnect" href="https://cdn.shopify.com" /> <link rel="preconnect" href="https://v.shopify.com" /> <link rel="preconnect" href="https://cdn.shopifycloud.com" /> <link rel="preconnect" href="https://monorail-edge.shopifysvc.com"> <!-- fallback for browsers that don't support preconnect --> <link rel="dns-prefetch" href="https://fonts.shopifycdn.com" /> <link rel="dns-prefetch" href="https://cdn.shopify.com" /> <link rel="dns-prefetch" href="https://v.shopify.com" /> <link rel="dns-prefetch" href="https://cdn.shopifycloud.com" /> <link rel="dns-prefetch" href="https://monorail-edge.shopifysvc.com"> <!-- Preload Assets --> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/fancybox.css?v=19278034316635137701791218265" as="style"> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/styles.css?v=81787966303684899561791218853" as="style"> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/jquery.min.js?v=81049236547974671631791218265" as="script"> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/vendors.js?v=51772124549495699811791218265" as="script"> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/sections.js?v=110066090805402370721791218265" as="script"> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/utilities.js?v=5902933159020323371791218265" as="script"> <link rel="preload" href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/app.js?v=22434052224513163481791218265" as="script">
20<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/prefetch.js?v=122731410938590100411791218265" type="text/javascript"></script>
20 <!-- Stylesheet for Fancybox library --> <link href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/fancybox.css?v=19278034316635137701791218265" rel="stylesheet" type="text/css" media="all" /> <!-- Stylesheets for Turbo --> <link href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/styles.css?v=81787966303684899561791218853" rel="stylesheet" type="text/css" media="all" /> <link href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/abz-designer.css?v=55154138239319659911791218265" rel="stylesheet" type="text/css" media="all" />
20<script> 21 window.lazySizesConfig = window.lazySizesConfig || {}; 22 23 lazySizesConfig.expand = 300; 24 lazySizesConfig.loadHidden = false; 25 26 /*! lazysizes - v5.2.2 - bgset plugin */ 27 !function(e,t){var a=function(){t(e.lazySizes),e.removeEventListener("lazyunveilread",a,!0)};t=t.bind(null,e,e.document),"object"==typeof module&&module.exports?t(require("lazysizes")):"function"==typeof define&&define.amd?define(["lazysizes"],t):e.lazySizes?a():e.addEventListener("lazyunveilread",a,!0)}(window,function(e,z,g){"use strict";var c,y,b,f,i,s,n,v,m;e.addEventListener&&(c=g.cfg,y=/\s+/g,b=/\s*\|\s+|\s+\|\s*/g,f=/^(.+?)(?:\s+\[\s*(.+?)\s*\])(?:\s+\[\s*(.+?)\s*\])?$/,i=/^\s*\(*\s*type\s*:\s*(.+?)\s*\)*\s*$/,s=/\(|\)|'/,n={contain:1,cover:1},v=function(e,t){var a;t&&((a=t.match(i))&&a[1]?e.setAttribute("type",a[1]):e.setAttribute("media",c.customMedia[t]||t))},m=function(e){var t,a,i,r;e.target._lazybgset&&(a=(t=e.target)._lazybgset,(i=t.currentSrc||t.src)&&((r=g.fire(a,"bgsetproxy",{src:i,useSrc:s.test(i)?JSON.stringify(i):i})).defaultPrevented||(a.style.backgroundImage="url("+r.detail.useSrc+")")),t._lazybgsetLoading&&(g.fire(a,"_lazyloaded",{},!1,!0),delete t._lazybgsetLoading))},addEventListener("lazybeforeunveil",function(e){var t,a,i,r,s,n,l,d,o,u;!e.defaultPrevented&&(t=e.target.getAttribute("data-bgset"))&&(o=e.target,(u=z.createElement("img")).alt="",u._lazybgsetLoading=!0,e.detail.firesLoad=!0,a=t,i=o,r=u,s=z.createElement("picture"),n=i.getAttribute(c.sizesAttr),l=i.getAttribute("data-ratio"),d=i.getAttribute("data-optimumx"),i._lazybgset&&i._lazybgset.parentNode==i&&i.removeChild(i._lazybgset),Object.defineProperty(r,"_lazybgset",{value:i,writable:!0}),Object.defineProperty(i,"_lazybgset",{value:s,writable:!0}),a=a.replace(y," ").split(b),s.style.display="none",r.className=c.lazyClass,1!=a.length||n||(n="auto"),a.forEach(function(e){var t,a=z.createElement("source");n&&"auto"!=n&&a.setAttribute("sizes",n),(t=e.match(f))?(a.setAttribute(c.srcsetAttr,t[1]),v(a,t[2]),v(a,t[3])):a.setAttribute(c.srcsetAttr,e),s.appendChild(a)}),n&&(r.setAttribute(c.sizesAttr,n),i.removeAttribute(c.sizesAttr),i.removeAttribute("sizes")),d&&r.setAttribute("data-optimumx",d),l&&r.setAttribute("data-ratio",l),s.appendChild(r),i.appendChild(s),setTimeout(function(){g.loader.unveil(u),g.rAF(function(){g.fire(u,"_lazyloaded",{},!0,!0),u.complete&&m({target:u})})}))}),z.addEventListener("load",m,!0),e.addEventListener("lazybeforesizes",function(e){var t,a,i,r;e.detail.instance==g&&e.target._lazybgset&&e.detail.dataAttr&&(t=e.target._lazybgset,i=t,r=(getComputedStyle(i)||{getPropertyValue:function(){}}).getPropertyValue("background-size"),!n[r]&&n[i.style.backgroundSize]&&(r=i.style.backgroundSize),n[a=r]&&(e.target._lazysizesParentFit=a,g.rAF(function(){e.target.setAttribute("data-parent-fit",a),e.target._lazysizesParentFit&&delete e.target._lazysizesParentFit})))},!0),z.documentElement.addEventListener("lazybeforesizes",function(e){var t,a;!e.defaultPrevented&&e.target._lazybgset&&e.detail.instance==g&&(e.detail.width=(t=e.target._lazybgset,a=g.gW(t,t.parentNode),(!t._lazysizesWidth||a>t._lazysizesWidth)&&(t._lazysizesWidth=a),t._lazysizesWidth))}))}); 28 29 /*! lazysizes - v5.2.2 */ 30 !function(e){var t=function(u,D,f){"use strict";var k,H;if(function(){var e;var t={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:true,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:true,ricTimeout:0,throttleDelay:125};H=u.lazySizesConfig||u.lazysizesConfig||{};for(e in t){if(!(e in H)){H[e]=t[e]}}}(),!D||!D.getElementsByClassName){return{init:function(){},cfg:H,noSupport:true}}var O=D.documentElement,a=u.HTMLPictureElement,P="addEventListener",$="getAttribute",q=u[P].bind(u),I=u.setTimeout,U=u.requestAnimationFrame||I,l=u.requestIdleCallback,j=/^picture$/i,r=["load","error","lazyincluded","_lazyloaded"],i={},G=Array.prototype.forEach,J=function(e,t){if(!i[t]){i[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")}return i[t].test(e[$]("class")||"")&&i[t]},K=function(e,t){if(!J(e,t)){e.setAttribute("class",(e[$]("class")||"").trim()+" "+t)}},Q=function(e,t){var i;if(i=J(e,t)){e.setAttribute("class",(e[$]("class")||"").replace(i," "))}},V=function(t,i,e){var a=e?P:"removeEventListener";if(e){V(t,i)}r.forEach(function(e){t[a](e,i)})},X=function(e,t,i,a,r){var n=D.createEvent("Event");
vendor: 5,178 bytes, line 30
30if(!i){i={}}i.instance=k;n.initEvent(t,!a,!r);n.detail=i;e.dispatchEvent(n);return n},Y=function(e,t){var i;if(!a&&(i=u.picturefill||H.pf)){if(t&&t.src&&!e[$]("srcset")){e.setAttribute("srcset",t.src)}i({reevaluate:true,elements:[e]})}else if(t&&t.src){e.src=t.src}},Z=function(e,t){return(getComputedStyle(e,null)||{})[t]},s=function(e,t,i){i=i||e.offsetWidth;while(i<H.minSize&&t&&!e._lazysizesWidth){i=t.offsetWidth;t=t.parentNode}return i},ee=function(){var i,a;var t=[];var r=[];var n=t;var s=function(){var e=n;n=t.length?r:t;i=true;a=false;while(e.length){e.shift()()}i=false};var e=function(e,t){if(i&&!t){e.apply(this,arguments)}else{n.push(e);if(!a){a=true;(D.hidden?I:U)(s)}}};e._lsFlush=s;return e}(),te=function(i,e){return e?function(){ee(i)}:function(){var e=this;var t=arguments;ee(function(){i.apply(e,t)})}},ie=function(e){var i;var a=0;var r=H.throttleDelay;var n=H.ricTimeout;var t=function(){i=false;a=f.now();e()};var s=l&&n>49?function(){l(t,{timeout:n});if(n!==H.ricTimeout){n=H.ricTimeout}}:te(function(){I(t)},true);return function(e){var t;if(e=e===true){n=33}if(i){return}i=true;t=r-(f.now()-a);if(t<0){t=0}if(e||t<9){s()}else{I(s,t)}}},ae=function(e){var t,i;var a=99;var r=function(){t=null;e()};var n=function(){var e=f.now()-i;if(e<a){I(n,a-e)}else{(l||r)(r)}};return function(){i=f.now();if(!t){t=I(n,a)}}},e=function(){var v,m,c,h,e;var y,z,g,p,C,b,A;var n=/^img$/i;var d=/^iframe$/i;var E="onscroll"in u&&!/(gle|ing)bot/.test(navigator.userAgent);var _=0;var w=0;var N=0;var M=-1;var x=function(e){N--;if(!e||N<0||!e.target){N=0}};var W=function(e){if(A==null){A=Z(D.body,"visibility")=="hidden"}return A||!(Z(e.parentNode,"visibility")=="hidden"&&Z(e,"visibility")=="hidden")};var S=function(e,t){var i;var a=e;var r=W(e);g-=t;b+=t;p-=t;C+=t;while(r&&(a=a.offsetParent)&&a!=D.body&&a!=O){r=(Z(a,"opacity")||1)>0;if(r&&Z(a,"overflow")!="visible"){i=a.getBoundingClientRect();r=C>i.left&&p<i.right&&b>i.top-1&&g<i.bottom+1}}return r};var t=function(){var e,t,i,a,r,n,s,l,o,u,f,c;var d=k.elements;if((h=H.loadMode)&&N<8&&(e=d.length)){t=0;M++;for(;t<e;t++){if(!d[t]||d[t]._lazyRace){continue}if(!E||k.prematureUnveil&&k.prematureUnveil(d[t])){R(d[t]);continue}if(!(l=d[t][$]("data-expand"))||!(n=l*1)){n=w}if(!u){u=!H.expand||H.expand<1?O.clientHeight>500&&O.clientWidth>500?500:370:H.expand;k._defEx=u;f=u*H.expFactor;c=H.hFac;A=null;if(w<f&&N<1&&M>2&&h>2&&!D.hidden){w=f;M=0}else if(h>1&&M>1&&N<6){w=u}else{w=_}}if(o!==n){y=innerWidth+n*c;z=innerHeight+n;s=n*-1;o=n}i=d[t].getBoundingClientRect();if((b=i.bottom)>=s&&(g=i.top)<=z&&(C=i.right)>=s*c&&(p=i.left)<=y&&(b||C||p||g)&&(H.loadHidden||W(d[t]))&&(m&&N<3&&!l&&(h<3||M<4)||S(d[t],n))){R(d[t]);r=true;if(N>9){break}}else if(!r&&m&&!a&&N<4&&M<4&&h>2&&(v[0]||H.preloadAfterLoad)&&(v[0]||!l&&(b||C||p||g||d[t][$](H.sizesAttr)!="auto"))){a=v[0]||d[t]}}if(a&&!r){R(a)}}};var i=ie(t);var B=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}x(e);K(t,H.loadedClass);Q(t,H.loadingClass);V(t,L);X(t,"lazyloaded")};var a=te(B);var L=function(e){a({target:e.target})};var T=function(t,i){try{t.contentWindow.location.replace(i)}catch(e){t.src=i}};var F=function(e){var t;var i=e[$](H.srcsetAttr);if(t=H.customMedia[e[$]("data-media")||e[$]("media")]){e.setAttribute("media",t)}if(i){e.setAttribute("srcset",i)}};var s=te(function(t,e,i,a,r){var n,s,l,o,u,f;if(!(u=X(t,"lazybeforeunveil",e)).defaultPrevented){if(a){if(i){K(t,H.autosizesClass)}else{t.setAttribute("sizes",a)}}s=t[$](H.srcsetAttr);n=t[$](H.srcAttr);if(r){l=t.parentNode;o=l&&j.test(l.nodeName||"")}f=e.firesLoad||"src"in t&&(s||n||o);u={target:t};K(t,H.loadingClass);if(f){clearTimeout(c);c=I(x,2500);V(t,L,true)}if(o){G.call(l.getElementsByTagName("source"),F)}if(s){t.setAttribute("srcset",s)}else if(n&&!o){if(d.test(t.nodeName)){T(t,n)}else{t.src=n}}if(r&&(s||o)){Y(t,{src:n})}}if(t._lazyRace){delete t._lazyRace}Q(t,H.lazyClass);ee(function(){var e=t.complete&&t.naturalWidth>1;if(!f||e){if(e){K(t,"ls-is-cached")}B(u);t._lazyCache=true;I(function(){if("_lazyCache"in t){delete t._lazyCache}},9)}if(t.loading=="lazy"){N--}},true)});var R=function(e){if(e._lazyRace){return}var t;var i=n.test(e.nodeName);var a=i&&(e[$](H.sizesAttr)||e[$]("sizes"));var r=a=="auto";if((r||!m)&&i&&(e[$]("src")||e.srcset)&&!e.complete&&!J(e,H.errorClass)&&J(e,H.lazyClass)){return}t=X(e,"lazyunveilread").detail;if(r){re.updateElem(e,true,e.offsetWidth)}e._lazyRace=true;N++;s(e,t,r,a,i)};var r=ae(function(){H.loadMode=3;i()});var l=function(){if(H.loadMode==3){H.loadMode=2}r()};var o=function(){if(m){return}if(f.now()-e<999){I(o,999);return}m=true;H.loadMode=3;i();q("scroll",l,true)};return{_:function(){e=f.now();k.elements=D.getElementsByClassName(H.lazyClass);v=D.getElementsByClassName(H.lazyClass+" "+H.preloadClass);q("scroll",i,true);q("resize",i,true);q("pageshow",function(e){if(e.persisted){var t=D.querySelectorAll("."+H.loadingClass);if(t.length&&t.forEach){U(function(){t.forEach(function(e){if(e.complete){R(e)}})})}}});if(u.MutationObserver){new MutationObserver(i).observe(O,{childList:true,subtree:true,attributes:true})}else{O[P]("DOMNodeInserted",i,true);O[P]("DOMAttrModified",i,true);setInterval(i,999)}
vendor: 1,290 bytes, line 30
30q("hashchange",i,true);["focus","mouseover","click","load","transitionend","animationend"].forEach(function(e){D[P](e,i,true)});if(/d$|^c/.test(D.readyState)){o()}else{q("load",o);D[P]("DOMContentLoaded",i);I(o,2e4)}if(k.elements.length){t();ee._lsFlush()}else{i()}},checkElems:i,unveil:R,_aLSL:l}}(),re=function(){var i;var n=te(function(e,t,i,a){var r,n,s;e._lazysizesWidth=a;a+="px";e.setAttribute("sizes",a);if(j.test(t.nodeName||"")){r=t.getElementsByTagName("source");for(n=0,s=r.length;n<s;n++){r[n].setAttribute("sizes",a)}}if(!i.detail.dataAttr){Y(e,i.detail)}});var a=function(e,t,i){var a;var r=e.parentNode;if(r){i=s(e,r,i);a=X(e,"lazybeforesizes",{width:i,dataAttr:!!t});if(!a.defaultPrevented){i=a.detail.width;if(i&&i!==e._lazysizesWidth){n(e,r,a,i)}}}};var e=function(){var e;var t=i.length;if(t){e=0;for(;e<t;e++){a(i[e])}}};var t=ae(e);return{_:function(){i=D.getElementsByClassName(H.autosizesClass);q("resize",t)},checkElems:t,updateElem:a}}(),t=function(){if(!t.i&&D.getElementsByClassName){t.i=true;re._();e._()}};return I(function(){H.init&&t()}),k={cfg:H,autoSizer:re,loader:e,init:t,uP:Y,aC:K,rC:Q,hC:J,fire:X,gW:s,rAF:ee}}(e,e.document,Date);e.lazySizes=t,"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:{});</script>
30 <!-- Icons --> <link rel="shortcut icon" type="image/x-icon" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_180x180.png?v=1653385530"> <link rel="apple-touch-icon" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_180x180.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="57x57" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_57x57.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="60x60" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_60x60.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="72x72" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_72x72.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="76x76" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_76x76.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="114x114" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_114x114.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="180x180" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_180x180.png?v=1653385530"/> <link rel="apple-touch-icon" sizes="228x228" href="//altitudecoffeelondon.com/cdn/shop/files/Altitude_Logo_Green_228x228.png?v=1653385530"/> <link rel="canonical" href="https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend"/>
30<script type="text/javascript"> 31 32 function initLazyLoad(){let _0x5ffe5=["\x6E\x61\x76\x69\x67\x61\x74\x6F\x72","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x67\x68\x74\x68\x6F\x75\x73","\x58\x31\x31"]; return-1!=window[_0x5ffe5[0]][_0x5ffe5[1]].indexOf(_0x5ffe5[2])||-1!=window[_0x5ffe5[0]][_0x5ffe5[1]].indexOf(_0x5ffe5[3])} const uLTS=new MutationObserver(e=>{e.forEach(({addedNodes:e})=>{e.forEach(e=>{1===e.nodeType&&"IFRAME"===e.tagName&&(e.src.includes("youtube.com")||e.src.includes("vimeo.com"))&&(e.setAttribute("loading","lazy"),e.setAttribute("data-src",e.src),e.removeAttribute("src")),1!==e.nodeType||"IMG"!==e.tagName||e.src.includes("data:image")||e.setAttribute("loading","lazy"),1===e.nodeType&&"SCRIPT"===e.tagName&&("analytics"!=e.className&&"boomerang"!=e.className||(e.type="text/lazyload"),e.innerHTML.includes("asyncLoad")&&(e.innerHTML=e.innerHTML.replace("if(window.attachEvent)","document.addEventListener('asyncLazyLoad',function(event){asyncLoad();});if(window.attachEvent)").replaceAll(", asyncLoad",", function(){}")),(e.innerHTML.includes("PreviewBarInjector")||e.innerHTML.includes("adminBarInjector"))&&(e.innerHTML=e.innerHTML.replace("DOMContentLoaded","loadBarInjector")),e.src.includes("js")&&initLazyLoad()&&(e.setAttribute("data-src",e.src),e.removeAttribute("src")))})})});uLTS.observe(document.documentElement,{childList:!0,subtree:!0}); YETT_BLACKLIST = [ /monorail-edge\.shopifysvc\.com/, /storefront/ ] 33 34 !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.yett={})}(this,function(t){"use strict";var e={blacklist:window.YETT_BLACKLIST,whitelist:window.YETT_WHITELIST},r={blacklisted:[]},n=function(t,r){return t&&(!r||"javascript/blocked"!==r)&&(!e.blacklist||e.blacklist.some(function(e){return e.test(t)}))&&(!e.whitelist||e.whitelist.every(function(e){return!e.test(t)}))},i=function(t){var r=t.getAttribute("src");return e.blacklist&&e.blacklist.every(function(t){return!t.test(r)})||e.whitelist&&e.whitelist.some(function(t){return t.test(r)})},c=new MutationObserver(function(t){t.forEach(function(t){for(var e=t.addedNodes,i=function(t){var i=e[t];if(1===i.nodeType&&"SCRIPT"===i.tagName){var c=i.src,o=i.type;if(n(c,o)){r.blacklisted.push(i.cloneNode()),i.type="javascript/blocked";i.addEventListener("beforescriptexecute",function t(e){"javascript/blocked"===i.getAttribute("type")&&e.preventDefault(),i.removeEventListener("beforescriptexecute",t)}),i.parentElement.removeChild(i)}}},c=0;c<e.length;c++)i(c)})});c.observe(document.documentElement,{childList:!0,subtree:!0});var o=document.createElement;document.createElement=function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];if("script"!==e[0].toLowerCase())return o.bind(document).apply(void 0,e);var i=o.bind(document).apply(void 0,e),c=i.setAttribute.bind(i);return Object.defineProperties(i,{src:{get:function(){return i.getAttribute("src")},set:function(t){return n(t,i.type)&&c("type","javascript/blocked"),c("src",t),!0}},type:{set:function(t){var e=n(i.src,i.type)?"javascript/blocked":t;return c("type",e),!0}}}),i.setAttribute=function(t,e){"type"===t||"src"===t?i[t]=e:HTMLScriptElement.prototype.setAttribute.call(i,t,e)},i};var l=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)},a=new RegExp("[|\\{}()[\\]^$+*?.]","g");t.unblock=function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];n.length<1?(e.blacklist=[],e.whitelist=[]):(e.blacklist&&(e.blacklist=e.blacklist.filter(function(t){return n.every(function(e){return!t.test(e)})})),e.whitelist&&(e.whitelist=[].concat(l(e.whitelist),l(n.map(function(t){var r=".*"+t.replace(a,"\\$&")+".*";return e.whitelist.find(function(t){return t.toString()===r.toString()})?null:new RegExp(r)}).filter(Boolean)))));for(var s=document.querySelectorAll('script[type="javascript/blocked"]'),u=0;u<s.length;u++){var p=s[u];i(p)&&(p.type="application/javascript",r.blacklisted.push(p),p.parentElement.removeChild(p))}var d=0;
34[].concat(l(r.blacklisted)).forEach(function(t,e){if(i(t)){var n=document.createElement("script");n.setAttribute("src",t.src),n.setAttribute("type","application/javascript"),document.head.appendChild(n),r.blacklisted.splice(e-d,1),d++}}),e.blacklist&&e.blacklist.length<1&&c.disconnect()},Object.defineProperty(t,"__esModule",{value:!0})}); 35</script>
35
35<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/jquery.min.js?v=81049236547974671631791218265" defer></script>
35
35<script> 36 window.PXUTheme = window.PXUTheme || {}; 37 window.PXUTheme.version = '8.0.1'; 38 window.PXUTheme.name = 'Turbo';</script>
38 39 40 41 42 43<template id="price-ui"><span class="price " data-price></span><span class="compare-at-price" data-compare-at-price></span><span class="unit-pricing" data-unit-pricing></span></template> <template id="price-ui-badge"><div class="price-ui-badge__sticker price-ui-badge__sticker--"> <span class="price-ui-badge__sticker-text" data-badge></span></div></template> <template id="price-ui__price"><span class="money" data-price></span></template> <template id="price-ui__price-range"><span class="price-min" data-price-min><span class="money" data-price></span></span> - <span class="price-max" data-price-max><span class="money" data-price></span></span></template> <template id="price-ui__unit-pricing"><span class="unit-quantity" data-unit-quantity></span> | <span class="unit-price" data-unit-price><span class="money" data-price></span></span> / <span class="unit-measurement" data-unit-measurement></span></template> <template id="price-ui-badge__percent-savings-range">Save up to <span data-price-percent></span>%</template> <template id="price-ui-badge__percent-savings">Save <span data-price-percent></span>%</template> <template id="price-ui-badge__price-savings-range">Save up to <span class="money" data-price></span></template> <template id="price-ui-badge__price-savings">Save <span class="money" data-price></span></template> <template id="price-ui-badge__on-sale">Sale</template> <template id="price-ui-badge__sold-out">Sold out</template> <template id="price-ui-badge__in-stock">In stock</template>
43<script> 44 45window.PXUTheme = window.PXUTheme || {}; 46 47 48window.PXUTheme.theme_settings = {}; 49window.PXUTheme.currency = {}; 50window.PXUTheme.routes = window.PXUTheme.routes || {}; 51 52 53window.PXUTheme.theme_settings.display_tos_checkbox = false; 54window.PXUTheme.theme_settings.go_to_checkout = true; 55window.PXUTheme.theme_settings.cart_action = "ajax"; 56window.PXUTheme.theme_settings.cart_shipping_calculator = false; 57 58 59window.PXUTheme.theme_settings.collection_swatches = false; 60window.PXUTheme.theme_settings.collection_secondary_image = true; 61 62 63window.PXUTheme.currency.show_multiple_currencies = false; 64window.PXUTheme.currency.shop_currency = "GBP"; 65window.PXUTheme.currency.default_currency = "GBP"; 66window.PXUTheme.currency.display_format = "money_format"; 67window.PXUTheme.currency.money_format = "£{{amount}}"; 68window.PXUTheme.currency.money_format_no_currency = "£{{amount}}"; 69window.PXUTheme.currency.money_format_currency = "£{{amount}}"; 70window.PXUTheme.currency.native_multi_currency = false; 71window.PXUTheme.currency.iso_code = "GBP"; 72window.PXUTheme.currency.symbol = "£"; 73 74 75window.PXUTheme.theme_settings.display_inventory_left = true; 76window.PXUTheme.theme_settings.inventory_threshold = 50; 77window.PXUTheme.theme_settings.limit_quantity = true; 78 79 80window.PXUTheme.theme_settings.menu_position = null; 81 82 83window.PXUTheme.theme_settings.newsletter_popup = false; 84window.PXUTheme.theme_settings.newsletter_popup_days = "2"; 85window.PXUTheme.theme_settings.newsletter_popup_mobile = true; 86window.PXUTheme.theme_settings.newsletter_popup_seconds = 0; 87 88 89window.PXUTheme.theme_settings.pagination_type = "basic_pagination"; 90 91 92window.PXUTheme.theme_settings.enable_shopify_collection_badges = null; 93window.PXUTheme.theme_settings.quick_shop_thumbnail_position = null; 94window.PXUTheme.theme_settings.product_form_style = "radio"; 95window.PXUTheme.theme_settings.sale_banner_enabled = true; 96window.PXUTheme.theme_settings.display_savings = true; 97window.PXUTheme.theme_settings.display_sold_out_price = true; 98window.PXUTheme.theme_settings.free_text = "Free"; 99window.PXUTheme.theme_settings.video_looping = null; 100window.PXUTheme.theme_settings.quick_shop_style = "inline"; 101window.PXUTheme.theme_settings.hover_enabled = false; 102 103 104window.PXUTheme.routes.cart_url = "/cart"; 105window.PXUTheme.routes.root_url = "/"; 106window.PXUTheme.routes.search_url = "/search"; 107window.PXUTheme.routes.all_products_collection_url = "/collections/all"; 108 109 110window.PXUTheme.theme_settings.image_loading_style = "blur-up"; 111 112 113window.PXUTheme.theme_settings.search_option = "product"; 114window.PXUTheme.theme_settings.search_items_to_display = 5; 115window.PXUTheme.theme_settings.enable_autocomplete = true; 116 117 118window.PXUTheme.theme_settings.page_dots_enabled = false; 119window.PXUTheme.theme_settings.slideshow_arrow_size = "regular"; 120 121 122window.PXUTheme.theme_settings.quick_shop_enabled = false; 123 124 125window.PXUTheme.translation = {}; 126 127 128window.PXUTheme.translation.agree_to_terms_warning = "You must agree with the terms and conditions to checkout."; 129window.PXUTheme.translation.one_item_left = "left in stock!"; 130window.PXUTheme.translation.items_left_text = "in stock. Ready for dispatch."; 131window.PXUTheme.translation.cart_savings_text = "Total Savings"; 132window.PXUTheme.translation.cart_discount_text = "Discount"; 133window.PXUTheme.translation.cart_subtotal_text = "Subtotal"; 134window.PXUTheme.translation.cart_remove_text = "Remove"; 135window.PXUTheme.translation.cart_free_text = "Free"; 136 137 138window.PXUTheme.translation.newsletter_success_text = "Thank you for joining our mailing list!"; 139 140 141window.PXUTheme.translation.notify_email = "Enter your email address..."; 142window.PXUTheme.translation.notify_email_value = "Translation missing: en.contact.fields.email"; 143window.PXUTheme.translation.notify_email_send = "Send"; 144window.PXUTheme.translation.notify_message_first = "Please notify me when "; 145window.PXUTheme.translation.notify_message_last = " becomes available - "; 146window.PXUTheme.translation.notify_success_text = "Thanks! We will notify you when this product becomes available!"; 147 148 149window.PXUTheme.translation.add_to_cart = "Add To Basket"; 150window.PXUTheme.translation.coming_soon_text = "Coming Soon"; 151window.PXUTheme.translation.sold_out_text = "Sold Out"; 152window.PXUTheme.translation.sale_text = "Sale"; 153window.PXUTheme.translation.savings_text = "You Save"; 154window.PXUTheme.translation.from_text = "from"; 155window.PXUTheme.translation.new_text = "New"; 156window.PXUTheme.translation.pre_order_text = "Pre-Order"; 157window.PXUTheme.translation.unavailable_text = "Unavailable"; 158 159 160window.PXUTheme.translation.all_results = "View all results"; 161window.PXUTheme.translation.no_results = "Sorry, no results!"; 162 163 164window.PXUTheme.media_queries = {}; 165window.PXUTheme.media_queries.small = window.matchMedia( "(max-width: 480px)" ); 166window.PXUTheme.media_queries.medium = window.matchMedia( "(max-width: 798px)" ); 167window.PXUTheme.media_queries.large = window.matchMedia( "(min-width: 799px)" ); 168window.PXUTheme.media_queries.larger = window.matchMedia( "(min-width: 960px)" ); 169window.PXUTheme.media_queries.xlarge = window.matchMedia( "(min-width: 1200px)" ); 170window.PXUTheme.media_queries.ie10 = window.matchMedia( "all and (-ms-high-contrast: none), (-ms-high-contrast: active)" ); 171window.PXUTheme.media_queries.tablet = window.matchMedia( "only screen and (min-width: 799px) and (max-width: 1024px)" ); 172window.PXUTheme.media_queries.mobile_and_tablet = window.matchMedia( "(max-width: 1024px)" );</script>
172
172<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/vendors.js?v=51772124549495699811791218265" defer></script>
172
172<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/sections.js?v=110066090805402370721791218265" defer></script>
172
172<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/utilities.js?v=5902933159020323371791218265" defer></script>
172
172<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/app.js?v=22434052224513163481791218265" defer></script>
172
172<script src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/instantclick.min.js?v=20092422000980684151791218265" data-no-instant defer></script>
172
172<script data-no-instant> 173 window.addEventListener('DOMContentLoaded', function() { 174 175 function inIframe() { 176 try { 177 return window.self !== window.top; 178 } catch (e) { 179 return true; 180 } 181 } 182 183 if (!inIframe()){ 184 InstantClick.on('change', function(isInitialLoad) { 185 186 $('head script[src*="shopify"]').each(function() { 187 var script = document.createElement('script'); 188 script.type = 'text/javascript'; 189 script.src = $(this).attr('src'); 190 191 $('body').append(script); 192 }); 193 194 $('body').removeClass('fancybox-active'); 195 $.fancybox.destroy(); 196 197 InstantClick.init(); 198 199 }); 200 } 201 });</script>
201
201<script></script>
201
201<script type='text/javascript' src='/apps/wlm/js/wlm-1.1.js?v=2.0'></script>
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215<style type="text/css">.wlm-message-pnf{text-align:center}#wlm-pwd-form{padding:30px 0;text-align:center}#wlm-wrapper{display:inline-block}#wlm-pwd-error{display:none;color:#FB8077;text-align:left;margin-top:10px;font-size:1.3rem}#wlm-pwd-error.wlm-error{border:1px solid #FB8077}#wlm-pwd-form-button{display:inline-block !important;height:auto !important;padding:8px 15px !important;background:black;border-radius:0 !important;color:#fff !important;text-decoration:none !important;vertical-align:top}.wlm-instantclick-fix,.wlm-item-selector{position:absolute;z-index:-999;display:none;height:0;width:0;font-size:0;line-height:0}#wlm-pwd-msg{margin-bottom:20px;text-align:left}#wlm-pwd-msg>p{margin-top:0;margin-bottom:0}.wlm-form-holder{display:flex}#wlm-pwd{border-color:black;border-width:1px;border-right:0;padding:0 10px}#wlm-pwd:focus-visible{outline:0}</style> 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
256<script type='text/javascript'> 257 258wlm.navigateByLocation(); 259 260wlm.jq(document).ready(function(){ 261wlm.removeLinks(); 262}); 263</script>
263 264 265 266 267
268<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
268<meta name="google-site-verification" content="QjmyxQW_8UagQJ_0WASdPKHKT_y8eRdHTL5Lrj1R5RI"> 269<meta name="facebook-domain-verification" content="tdz2e6p1bhmdv8nv8zk9185pacptgx"> 270<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/54106423494/digital_wallets/dialog"> 271<meta id="in-context-paypal-metadata" data-shop-id="54106423494" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="GBP"> 272<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="buy" href="/cart/38309800706246:1?ucp/version=2026-08-25&context/payment/0/handler=dev.shopify.shop_pay" payment="dev.shopify.shop_pay com.google.pay dev.shopify.card"><link rel="alternate" type="application/json+oembed" href="https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend.oembed">
273<script async="async" src="/checkouts/internal/preloads.js?locale=en-GB&default_configuration_id=5784338811"></script>
273 274<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
275<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-GB&default_configuration_id=5784338811&shop_id=54106423494" crossorigin="anonymous"></script>
vendor: 1 bytes, line 275
275
276<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":54106423494,"countryCode":"GB","currencyCode":"GBP","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/54106423494","merchantName":"Altitude Coffee London","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex"],"total":{"type":"pending","label":"Altitude Coffee London","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 276
276
277<script id="shopify-features" type="application/json">{"accessToken":"978fde2888e70ad59b082d6ec234179b","betas":["rich-media-storefront-analytics"],"domain":"altitudecoffeelondon.com","predictiveSearch":true,"shopId":54106423494,"locale":"en"}</script>
vendor: 1 bytes, line 277
277
278<script>var Shopify = Shopify || {}; 279Shopify.shop = "altitude-coffee-london.myshopify.com"; 280Shopify.locale = "en"; 281Shopify.currency = {"active":"GBP","rate":"1.0"}; 282Shopify.country = "GB"; 283Shopify.theme = {"name":"Copy of Altitude V3 â Style Sprint 1","id":182430302587,"schema_name":"Turbo","schema_version":"8.0.1","theme_store_id":null,"role":"main"}; 284Shopify.theme.handle = "null"; 285Shopify.theme.style = {"id":null,"handle":null}; 286Shopify.cdnHost = "altitudecoffeelondon.com/cdn"; 287Shopify.routes = Shopify.routes || {}; 288Shopify.routes.root = "/"; 289Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 290Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 291Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 292Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 292
292
293<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 293
293
294<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 294
294
295<script> 296 window.ShopifyPay = window.ShopifyPay || {}; 297 window.ShopifyPay.apiHost = "shop.app\/pay"; 298 window.ShopifyPay.redirectState = null; 299</script>
vendor: 1 bytes, line 299
299
300<script> 301 window.Shopify = window.Shopify || {}; 302 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 303 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 304 window.Shopify.SignInWithShop.eligible = true; 305</script>
vendor: 1 bytes, line 305
305
306<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
vendor: 1 bytes, line 306
306
307<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 307
307
308<script type="module"> 309 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 310 311 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 312 313</script>
vendor: 1 bytes, line 313
313
314<script> 315 window.Shopify = window.Shopify || {}; 316 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 317 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"]}; 318</script>
vendor: 1 bytes, line 318
318
319<script id="__st">var __st={"a":54106423494,"offset":3600,"reqid":"2f191e3b-1f85-434e-99bc-f9f51f73e1ec-1791582446","pageurl":"altitudecoffeelondon.com\/collections\/coffee\/products\/espresso-roast-coffee-blend","u":"36f69f45800e","p":"product","rtyp":"product","rid":6253847085254};</script>
vendor: 1 bytes, line 319
319
320<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 320
320
321<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 321
321
322<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 322
322
323<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 = "//altitudecoffeelondon.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>
323<script crossorigin="anonymous" defer="defer" src="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 323
323
324<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 324
324
325<script> 326 window.Shopify = window.Shopify || {}; 327 window.Shopify.MCP = window.Shopify.MCP || {}; 328 window.Shopify.MCP.enabled = true; 329 window.Shopify.MCP.shop = "altitude-coffee-london.myshopify.com"; 330 window.Shopify.MCP.mcpEndpoint = "https:\/\/altitudecoffeelondon.com\/api\/mcp"; 331 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?\"\nSet policy_types to also get the store's written policies (full text and URL).\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."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 332</script>
vendor: 1 bytes, line 332
332
333<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("\/\/altitudecoffeelondon.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-f427de6a.js","sha256-ypGF+5vIq4Psw4WG7nsVtdd\/TCfsJWnrNuACdqLCElY=");})(); 334</script>
vendor: 1 bytes, line 334
334
335<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://altitudecoffeelondon.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 336</script>
vendor: 1 bytes, line 336
336
337<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 338 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); 339</script>
vendor: 1 bytes, line 339
339
340<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})}})); 341</script>
341 342<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://altitudecoffeelondon.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 343<style id="shopify-accelerated-checkout-cart"> 344 #shopify-buyer-consent { 345 margin-top: 1em; 346 display: inline-block; 347 width: 100%; 348} 349 350#shopify-buyer-consent.hidden { 351 display: none; 352} 353 354#shopify-subscription-policy-button { 355 background: none; 356 border: none; 357 padding: 0; 358 text-decoration: underline; 359 font-size: inherit; 360 cursor: pointer; 361} 362 363#shopify-subscription-policy-button::before { 364 box-shadow: none; 365} 366 367 </style> 368
369<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
369 <!-- Altitude Design System â Preload & Font Loading --> <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Stencil+Display:wght@400;700;800;900&family=Bodoni+Moda:opsz,[email protected],400;6..96,700&family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;700&display=swap" media="print" onload="this.media='all'"> <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Stencil+Display:wght@400;700;800;900&family=Bodoni+Moda:opsz,[email protected],400;6..96,700&family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;700&display=swap"></noscript> 370 371 372 373<meta name="author" content="Altitude Coffee London"> 374<meta property="og:url" content="https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend"> 375<meta property="og:site_name" content="Altitude Coffee London"> <meta property="og:type" content="product"> <meta property="og:title" content="The Captainâs Roast - Espresso Blend"> <meta property="og:image" content="https://altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_600x.jpg?v=1680956690"> <meta property="og:image:secure_url" content="https://altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_600x.jpg?v=1680956690"> <meta property="og:image:width" content="4016"> <meta property="og:image:height" content="4016"> <meta property="og:image" content="https://altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_600x.jpg?v=1688998076"> <meta property="og:image:secure_url" content="https://altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_600x.jpg?v=1688998076"> <meta property="og:image:width" content="2000"> <meta property="og:image:height" content="2000"> <meta property="og:image" content="https://altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_600x.jpg?v=1688998076"> <meta property="og:image:secure_url" content="https://altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_600x.jpg?v=1688998076"> <meta property="og:image:width" content="4016"> <meta property="og:image:height" content="4016"> 376 377 378<meta property="product:price:amount" content="11.50"> <meta property="product:price:currency" content="GBP"> <meta property="og:description" content="Our flagship espresso blend â chocolate, orange and walnut. 2-star Great Taste winner. From £11.50/250g. Ethically sourced. Free delivery over £30."> <meta name="twitter:site" content="@altcoffeeldn"> 379 380<meta name="twitter:card" content="summary"> <meta name="twitter:title" content="The Captainâs Roast - Espresso Blend"> <meta name="twitter:description" content="Some espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat. 381We build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't. 382Awarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here. 383Varietal: Brazil/Colombia Blend 384Processing: Natural/Washed 385Altitude: 1500-2500m 386Roast: Medium/Dark"> <meta name="twitter:image" content="https://altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_240x.jpg?v=1680956690"> <meta name="twitter:image:width" content="240"> <meta name="twitter:image:height" content="240"> <meta name="twitter:image:alt" content="The Captain's Roast Espresso Blend. Specialty coffee blend"> <link rel="next" href="/collections/coffee/products/specialty-coffee-blend-the-adventurer"> 387 388 389 390
391<script id="sca_fg_cart_ShowGiftAsProductTemplate" type="text/template"> <div class="item not-sca-qv" id="sca-freegift-{{productID}}"> <a class="close_box" style="display: none;position: absolute;top:5px;right: 10px;font-size: 22px;font-weight: bold;cursor: pointer;text-decoration:none;color: #aaa;">Ã</a> <a href="/products/{{productHandle}}" target="_blank"><img style="margin-left: auto; margin-right: auto; width: 50%;" class="lazyOwl" data-src="{{productImageURL}}"></a> <div class="sca-product-shop"> <div class="review-summary3"> <div class="yotpo bottomLine" style="text-align:center" 392 data-product-id="{{productID}}" 393 data-product-models="{{productID}}" 394 data-name="{{productTitle}}" 395 data-url="/products/{{productHandle}}"></div></div> <div class="f-fix"><span class="sca-product-title" style="white-space: nowrap;color:#000;{{showfgTitle}}">{{productTitle}}</span> <div id="product-variants-{{productID}}"> <div class="sca-price" id="price-field-{{productID}}"> <span class="sca-old-price">{{variant_compare_at_price}}</span> <span class="sca-special-price">{{variant_price}}</span></div> <div id="stay-content-sca-freegift-{{productID}}" class="sca-fg-cart-item"> <a class="close_box" style="display: none;position: absolute;top:5px;right: 10px;font-size: 22px;font-weight: bold;cursor: pointer;text-decoration:none;color: #aaa;">Ã</a> <select id="product-select-{{productID}}" name="id" style="display: none"> 396 {{optionVariantData}}</select></div></div> <button type='button' id="sca-btn-select-{{productID}}" class="sca-button" onclick="onclickSelect_{{productID}}();"><span>{{SelectButton}}</span></button> <button type='button' id="sca-btn-{{productID}}" class="sca-button" style="display: none"><span>{{AddToCartButton}}</span></button></div></div></div> 397 398</script>
vendor: 1 bytes, line 398
398
399<script id = "sca_fg_cart_ShowGiftAsProductScriptTemplate" type="text/template"> 400 401 402 var selectCallback_{{productID}}=function(t,a){if(t?(t.available?(SECOMAPP.jQuery("#sca-btn-{{productID}}").removeClass("disabled").removeAttr("disabled").html("<span>{{AddToCartButton}}</span>").fadeTo(200,1),SECOMAPP.jQuery("#sca-btn-{{productID}}").unbind("click"),SECOMAPP.jQuery("#sca-btn-{{productID}}").click(SECOMAPP.jQuery.proxy(function(){SECOMAPP.addGiftToCart(t.id,1)},t))):SECOMAPP.jQuery("#sca-btn-{{productID}}").html("<span>{{UnavailableButton}}</span>").addClass("disabled").attr("disabled","disabled").fadeTo(200,.5),t.compare_at_price>t.price?SECOMAPP.jQuery("#price-field-{{productID}}").html("<span class='sca-old-price'>"+SECOMAPP.formatMoney(t.compare_at_price)+"</span> <s class='sca-special-price'>"+SECOMAPP.formatMoney(t.price)+"</s>"):SECOMAPP.jQuery("#price-field-{{productID}}").html("<span class='sca-special-price'>"+SECOMAPP.formatMoney(t.price)+"</span>")):SECOMAPP.jQuery("#sca-btn-{{productID}}").html("<span>{{UnavailableButton}}</span>").addClass("disabled").attr("disabled","disabled").fadeTo(200,.5),t&&t.featured_image){var e=SECOMAPP.jQuery("#sca-freegift-{{productID}} img"),_=t.featured_image,c=e[0];Shopify.Image.switchImage(_,c,function(t,a,e){SECOMAPP.jQuery(e).parents("a").attr("href",t),SECOMAPP.jQuery(e).attr("src",t)})}},onclickSelect_{{productID}}=function(t){SECOMAPP.jQuery.getJSON("/products/{{productHandle}}.js",{_:(new Date).getTime()},function(t){SECOMAPP.jQuery(".owl-item #sca-freegift-{{productID}} span.sca-product-title").html(t.title);var e=[];SECOMAPP.jQuery.each(t.options,function(t,a){e[t]=a.name}),t.options=e;for(var a={{variantsGiftList}},_={{mainVariantsList}},c=t.variants.length-1;-1<c;c--)a.indexOf(t.variants[c].id)<0&&_.indexOf(t.variants[c].id)<0&&t.variants.splice(c,1);for(var o=_.length-1;-1<o;o--){var i=a[o],r=_[o],n=-1,s=-1;for(c=t.variants.length-1;-1<c;c--)t.variants[c].id==i?n=c:t.variants[c].id==r&&(s=c);-1<n&&-1<s&n!==s?("undefined"!=typeof SECOMAPP&&void 0!==SECOMAPP.fgsettings&&!0===SECOMAPP.fgsettings.sca_sync_gift&&void 0!==SECOMAPP.fgsettings.sca_fg_gift_variant_quantity_format&&"equal_original_inventory"===SECOMAPP.fgsettings.sca_fg_gift_variant_quantity_format&&(t.variants[n].available=t.variants[s].available,t.variants[n].inventory_management=t.variants[s].inventory_management),t.variants[n].option1=t.variants[s].option1,t.variants[n].options[0].name=t.variants[s].options[0].name,t.variants[n].options[1]&&(t.variants[n].options[1].name=t.variants[s].options[1].name,t.variants[n].option2=t.variants[s].option2),t.variants[n].options[2]&&(t.variants[n].options[2].name=t.variants[s].options[2].name,t.variants[n].option3=t.variants[s].option3),t.variants[n].title=t.variants[s].title,t.variants[n].name=t.variants[s].name,t.variants[n].public_title=t.variants[s].public_title,t.variants.splice(s,1)):(t.variants[s].id=i,t.variants[s].compare_at_price||(t.variants[s].compare_at_price=t.variants[s].price),t.variants[s].price=SECOMAPP.fgdata.giftid_price_mapping[i])}SECOMAPP.jQuery("#sca-btn-select-{{productID}}").hide(),SECOMAPP.jQuery("#product-select-{{productID}}").show(),SECOMAPP.jQuery("#sca-btn-{{productID}}").show(),SECOMAPP.jQuery("#stay-content-sca-freegift-{{productID}} .close_box").show(),SECOMAPP.jQuery("#stay-content-sca-freegift-{{productID}} .close_box").click(function(){SECOMAPP.jQuery("#stay-content-sca-freegift-{{productID}}").hide(),SECOMAPP.jQuery("#sca-btn-{{productID}}").hide(),SECOMAPP.jQuery("#sca-btn-select-{{productID}}").show()}),onclickSelect_{{productID}}=function(){SECOMAPP.jQuery("#stay-content-sca-freegift-{{productID}}").show(),SECOMAPP.jQuery("#sca-btn-{{productID}}").show(),SECOMAPP.jQuery("#sca-btn-select-{{productID}}").hide()},1==t.variants.length?(-1!==t.variants[0].title.indexOf("Default")&&SECOMAPP.jQuery("#sca-freegift-{{productID}} .selector-wrapper").hide(),1==t.variants[0].available&&(SECOMAPP.jQuery("#sca-btn-{{productID}}").show(),SECOMAPP.jQuery("#sca-btn-select-{{productID}}").hide(),SECOMAPP.jQuery("#sca-btn-{{productID}}").removeClass("disabled").removeAttr("disabled").html("<span>{{AddToCartButton}}</span>").fadeTo(200,1),SECOMAPP.jQuery("#sca-btn-{{productID}}").unbind("click"),SECOMAPP.jQuery("#sca-btn-{{productID}}").click(SECOMAPP.jQuery.proxy(function(){SECOMAPP.addGiftToCart(t.variants[0].id,1)},t)))):(new Shopify.OptionSelectors("product-select-{{productID}}",{product:t,onVariantSelected:selectCallback_{{productID}},enableHistoryState:!0}),SECOMAPP.jQuery("#stay-content-sca-freegift-{{productID}}").show(),SECOMAPP.jQuery("#stay-content-sca-freegift-{{productID}}").focus())})};1=={{variantsGiftList}}.length&&onclickSelect_{{productID}}(); 403 404</script>
404 405
406<script id="sca_fg_cart_ShowGiftAsVariantTemplate" type="text/template"> <div class="item not-sca-qv" id="sca-freegift-{{variantID}}"> <a href="/products/{{productHandle}}?variant={{originalVariantID}}" target="_blank"><img style="margin-left: auto; margin-right: auto; width: 50%;" class="lazyOwl" data-src="{{variantImageURL}}"></a> <div class="sca-product-shop"> <div class="review-summary3"> <div class="yotpo bottomLine" style="text-align:center" 407 data-product-id="{{productID}}" 408 data-product-models="{{productID}}" 409 data-name="{{productTitle}}" 410 data-url="/products/{{productHandle}}"></div></div> <div class="f-fix"> <span class="sca-product-title" style="white-space: nowrap;color:#000;">{{variantTitle}}</span> <div class="sca-price"> <span class="sca-old-price">{{variant_compare_at_price}}</span> <span class="sca-special-price">{{variant_price}}</span></div> <button type="button" id="sca-btn{{variantID}}" class="sca-button" onclick="SECOMAPP.addGiftToCart({{variantID}},1);"> <span>{{AddToCartButton}}</span></button></div></div></div> 411 412</script>
412 413
414<script id="sca_fg_prod_GiftList" type="text/template"> <a style="text-decoration: none !important" id ="{{giftShowID}}" class="product-image freegif-product-image freegift-info-{{giftShowID}}" 415 title="{{giftTitle}}" href="/products/{{productsHandle}}"> <img class="not-sca-qv" src="{{giftImgUrl}}" alt="{{giftTitle}}" /></a> 416 417</script>
417 418
419<script id="sca_fg_prod_Gift_PopupDetail" type="text/template"> <div class="sca-fg-item fg-info-{{giftShowID}}" style="display:none;z-index:2147483647;"> <div class="sca-fg-item-options"> <div class="sca-fg-item-option-title"> <em>{{freegiftRuleName}}</em></div> <div class="sca-fg-item-option-ct"> <!-- <div class="sca-fg-image-item"> <img src="{{giftImgUrl}}" /> --> <div class="sca-fg-item-name"> <a href="#">{{giftTitle}}</a></div> <!--</div> --></div></div></div> 420 421</script>
421 422
423<script id="sca_fg_ajax_GiftListPopup" type="text/template"> <div id="freegift_popup" class="mfp-hide"> <div id="sca-fg-owl-carousel"> <div id="freegift_cart_container" class="sca-fg-cart-container" style="display: none;"> <div id="freegift_message" class="owl-carousel"></div></div> <div id="sca-fg-slider-cart" style="display: none;"> <div class="sca-fg-cart-title"> <strong>{{popupTitle}}</strong></div> <div id="sca_freegift_list" class="owl-carousel"></div></div></div></div> 424 425</script>
425 426
427<script id="sca_fg_checkout_confirm_popup" type="text/template"> <div class='sca-fg-checkout-confirm-popup' style='font-family: "Myriad","Cardo","Big Caslon","Bodoni MT",Georgia,serif; position: relative;background: #FFF;padding: 20px 20px 50px 20px;width: auto;max-width: 500px;margin: 20px auto;'> <h1 style='font-family: "Oswald","Cardo","Big Caslon","Bodoni MT",Georgia,serif;'>YOU CAN STILL ADD MORE!</h1> <p>You get 1 free item with every product purchased. It looks like you can still add more free item(s) to your cart. What would you like to do?</p> <p class='sca-fg-checkout-confirm-buttons' style='float: right;'> <a class='btn popup-modal-dismiss action_button add_to_cart' href='#' style='width: 200px !important;margin-right: 20px;'>ADD MORE</a> <a class='btn checkout__button continue-checkout action_button add_to_cart' href='/checkout' style='width: 200px !important;'>CHECKOUT</a></p></div> 428 429</script>
429 430 431 432 433<link data-href="//altitudecoffeelondon.com/cdn/shop/t/80/assets/sca.freegift.css?v=43694233310401270911791218265" rel="stylesheet" type="text/css" media="all" />
434<script data-src="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js" type="text/javascript"></script>
vendor: 1 bytes, line 434
434
435<script data-cfasync="false"> 436 Shopify.money_format = "£{{amount}}"; 437 //enable checking free gifts condition when checkout clicked 438 if ((typeof SECOMAPP) === 'undefined') { window.SECOMAPP = {}; }; 439 SECOMAPP.enableOverrideCheckout = true; 440 SECOMAPP.add_offer_names_above_gift_list = true; 441 // SECOMAPP.preStopAppCallback = function(cart){ 442 // if(typeof yotpo!=='undefined' && typeof yotpo.initWidgets==='function'){ 443 // yotpo.initWidgets(); 444 // } 445 // } 446</script>
vendor: 1 bytes, line 446
446
447<script type="text/javascript">(function(){if(typeof SECOMAPP==="undefined"){SECOMAPP={}};if(typeof Shopify==="undefined"){Shopify={}};SECOMAPP.fg_ver=1693946437;SECOMAPP.fg_scriptfile="freegifts_20230125.min.js";SECOMAPP.gifts_list_avai={"44626011455806":true};})();</script>
447 448
449<script data-cfasync="false" type="text/javascript"> 450 /* Smart Ecommerce App (SEA Inc) 451 * http://www.secomapp.com 452 * Do not reuse those source codes if don't have permission of us. 453 * */ 454 455 456 !function(){Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),"function"!=typeof Object.create&&(Object.create=function(e){function t(){}return t.prototype=e,new t}),Object.keys||(Object.keys=function(e){var t,o=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.push(t);return o}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var o=this.toString();(void 0===t||t>o.length)&&(t=o.length),t-=e.length;var r=o.indexOf(e,t);return-1!==r&&r===t},writable:!0,enumerable:!0,configurable:!0}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var o;if(null==this)throw new TypeError('"this" is null or not defined');var r=Object(this),i=r.length>>>0;if(0===i)return-1;var n=+t||0;if(Math.abs(n)===1/0&&(n=0),n>=i)return-1;for(o=Math.max(n>=0?n:i-Math.abs(n),0);o<i;){if(o in r&&r[o]===e)return o;o++}return-1}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var o,r;if(null==this)throw new TypeError(" this is null or not defined");var i=Object(this),n=i.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(o=t),r=0;r<n;){var a;r in i&&(a=i[r],e.call(o,a,r,i)),r++}}),console=console||{},console.log=console.log||function(){},"undefined"==typeof Shopify&&(Shopify={}),"function"!=typeof Shopify.onError&&(Shopify.onError=function(){}),"undefined"==typeof SECOMAPP&&(SECOMAPP={}),SECOMAPP.removeGiftsVariant=function(e){setTimeout(function(){try{e("select option").not(".sca-fg-cart-item select option").filter(function(){var t=e(this).val(),o=e(this).text();-1!==o.indexOf(" - ")&&(o=o.slice(0,o.indexOf(" - ")));var r=[];return-1!==o.indexOf(" / ")&&(r=o.split(" / "),o=r[r.length-1]),!!(void 0!==SECOMAPP.gifts_list_avai&&void 0!==SECOMAPP.gifts_list_avai[t]||o.endsWith("% off)"))&&(e(this).parent("select").find("option").not(".sca-fg-cart-item select option").filter(function(){var r=e(this).val();return e(this).text().endsWith(o)||r==t}).remove(),e(".dropdown *,ul li,label,div").filter(function(){var r=e(this).html(),i=e(this).data("value");return r&&r.endsWith(o)||i==t}).remove(),!0)})}catch(e){console.log(e)}},500)},SECOMAPP.formatMoney=function(e,t){"string"==typeof e&&(e=e.replace(".",""));var o="",r="undefined"!=typeof Shopify&&void 0!==Shopify.money_format?Shopify.money_format:"{{amount}}",i=/\{\{\s*(\w+)\s*\}\}/,n=t||(void 0!==this.fgsettings&&"string"==typeof this.fgsettings.sca_currency_format&&this.fgsettings.sca_currency_format.indexOf("amount")>-1?this.fgsettings.sca_currency_format:null)||r;if(n.indexOf("amount_no_decimals_no_comma_separator")<0&&n.indexOf("amount_no_comma_separator_up_cents")<0&&n.indexOf("amount_up_cents")<0&&"function"==typeof Shopify.formatMoney)return Shopify.formatMoney(e,n);function a(e,t){return void 0===e?t:e}function s(e,t,o,r,i,n){if(t=a(t,2),o=a(o,","),r=a(r,"."),isNaN(e)||null==e)return 0;var s=(e=(e/100).toFixed(t)).split(".");return s[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+o)+(s[1]?i&&n?i+s[1]+n:r+s[1]:"")}switch(n.match(i)[1]){case"amount":o=s(e,2);break;case"amount_no_decimals":o=s(e,0);break;case"amount_with_comma_separator":o=s(e,2,",",".");break;case"amount_no_decimals_with_comma_separator":o=s(e,0,",",".");break;case"amount_no_decimals_no_comma_separator":o=s(e,0,"","");break;case"amount_up_cents":o=s(e,2,",","","<sup>","</sup>");break;case"amount_no_comma_separator_up_cents":o=s(e,2,"","","<sup>","</sup>")}return n.replace(i,o)},SECOMAPP.setCookie=function(e,t,o,r,i){var n=new Date;n.setTime(n.getTime()+24*o*60*60*1e3+60*r*1e3);var a="expires="+n.toUTCString();document.cookie=e+"="+t+";"+a+(i?";path="+i:";path=/")},SECOMAPP.deleteCookie=function(e,t){document.cookie=e+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; "+(t?";path="+t:";path=/")},SECOMAPP.getCookie=function(e){for(var t=e+"=",o=document.cookie.split(";"),r=0;r<o.length;r++){for(var i=o[r];" "==i.charAt(0);)i=i.substring(1);if(0==i.indexOf(t))return i.substring(t.length,i.length)}return""},SECOMAPP.getQueryString=function(){for(var e={},t=window.location.search.substring(1).split("&"),o=0;o<t.length;o++){var r=t[o].split("=");if(void 0===e[r[0]])e[r[0]]=decodeURIComponent(r[1]);else if("string"==typeof e[r[0]]){var i=[e[r[0]],decodeURIComponent(r[1])];e[r[0]]=i}else e[r[0]].push(decodeURIComponent(r[1]))}return e},SECOMAPP.freegifts_product_json=function(e){if(Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),String.prototype.endsWith||Object.defineProperty(String.prototype,"endsWith",{value:function(e,t){var o=this.toString();(void 0===t||t>o.length)&&(t=o.length),t-=e.length;var r=o.indexOf(e,t);return-1!==r&&r===t}}),e){if(e.options&&Array.isArray(e.options))for(var t=0;t<e.options.length;t++){if(void 0!==e.options[t]&&void 0!==e.options[t].values)if((r=e.options[t]).values&&Array.isArray(r.values))for(var o=0;o<r.values.length;o++)(r.values[o].endsWith("(Freegifts)")||r.values[o].endsWith("% off)"))&&(r.values.splice(o,1),o--)}if(e.options_with_values&&Array.isArray(e.options_with_values))for(t=0;t<e.options_with_values.length;t++){var r;if(void 0!==e.options_with_values[t]&&void 0!==e.options_with_values[t].values)if((r=e.options_with_values[t]).values&&Array.isArray(r.values))for(o=0;o<r.values.length;o++)(r.values[o].title.endsWith("(Freegifts)")||r.values[o].title.endsWith("% off)"))&&(r.values.splice(o,1),o--)}var i=e.price,n=e.price_max,a=e.price_min,s=e.compare_at_price,c=e.compare_at_price_max,f=e.compare_at_price_min;
456if(e.variants&&Array.isArray(e.variants))for(var p=0;e.variants.length,void 0!==e.variants[p];p++){var l=e.variants[p],u=l.option3?l.option3:l.option2?l.option2:l.option1?l.option1:l.title?l.title:"";"undefined"!=typeof SECOMAPP&&void 0!==SECOMAPP.gifts_list_avai&&void 0!==SECOMAPP.gifts_list_avai[l.id]||u.endsWith("(Freegifts)")||u.endsWith("% off)")?(e.variants.splice(p,1),p-=1):((!n||n>=l.price)&&(n=l.price,i=l.price),(!a||a<=l.price)&&(a=l.price),l.compare_at_price&&((!c||c>=l.compare_at_price)&&(c=l.compare_at_price,s=l.compare_at_price),(!f||f<=l.compare_at_price)&&(f=l.compare_at_price)),void 0!==l.available&&1==l.available&&(e.available=!0))}e.price=i,e.price_max=a==n?null:a,e.price_min=n==a?null:n,e.compare_at_price=s,e.compare_at_price_max=f,e.compare_at_price_min=c,e.price_varies=n<a,e.compare_at_price_varies=c<f}return e},SECOMAPP.fg_codes=[],""!==SECOMAPP.getCookie("sca_fg_codes")&&(SECOMAPP.fg_codes=JSON.parse(SECOMAPP.getCookie("sca_fg_codes")));var e=SECOMAPP.getQueryString();e.freegifts_code&&-1===SECOMAPP.fg_codes.indexOf(e.freegifts_code)&&(void 0!==SECOMAPP.activateOnlyOnePromoCode&&!0===SECOMAPP.activateOnlyOnePromoCode&&(SECOMAPP.fg_codes=[]),SECOMAPP.fg_codes.push(e.freegifts_code),SECOMAPP.setCookie("sca_fg_codes",JSON.stringify(SECOMAPP.fg_codes)))}(); 457 458 ;SECOMAPP.customer={};SECOMAPP.customer.orders=[];SECOMAPP.customer.freegifts=[];;SECOMAPP.customer.email=null;SECOMAPP.customer.first_name=null;SECOMAPP.customer.last_name=null;SECOMAPP.customer.tags=null;SECOMAPP.customer.orders_count=null;SECOMAPP.customer.total_spent=null; 459</script>
459
459<script src="https://app.groas.ai/content.js" type="text/javascript"></script>
459 460 461 462 463<link rel="preconnect" href="https://fonts.googleapis.com"> 464<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 465<link href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Stencil+Display:wght@500;600;700;800&family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Bodoni+Moda:ital,wght@1,400;1,500&display=swap" rel="stylesheet"> 466 467<style> 468 :root { 469 --alt-green: #13322B; 470 --alt-green-rgb: 19, 50, 43; 471 --alt-orange: #D4844A; 472 --alt-orange-dark: #B86E36; 473 --alt-orange-rgb: 212, 132, 74; 474 --alt-cream: #F8F1DA; 475 --alt-cream-rgb: 248, 241, 218; 476 --alt-font-stencil: 'Big Shoulders Stencil Display', 'DM Mono', sans-serif; 477 --alt-font-mono: 'DM Mono', ui-monospace, monospace; 478 --alt-font-body: 'DM Sans', system-ui, sans-serif; 479 --alt-font-serif: 'Bodoni Moda', Georgia, serif; 480 --alt-radius: 0; 481 } 482 483 /* SQUARE CORNERS */ 484 .global-button, .global-button--primary, .global-button--secondary, .global-button--banner, 485 .add_to_cart, button[name="add"], button[name="checkout"], 486 .product-form button[type="submit"], 487 body .product-main .global-button, body .product-main .add_to_cart { 488 border-radius: var(--alt-radius) !important; 489 } 490 .product-quantity-box, .product-quantity-box input, .product-quantity-box .quantity, 491 .product-quantity-box .product-minus, .product-quantity-box .product-plus, 492 body .product-main .product-quantity-box, body .product-main .product-quantity-box input, 493 body .product-main .product-quantity-box .product-minus, body .product-main .product-quantity-box .product-plus, 494 input[type="text"], input[type="email"], input[type="tel"], input[type="number"], 495 input[type="password"], input[type="search"], textarea, select { 496 border-radius: var(--alt-radius) !important; 497 } 498 .mini-cart__item, .cart_content, .dropdown, .dropdown_container, 499 .header_search_form input, .search__form input { border-radius: var(--alt-radius) !important; } 500 .reviewsio-widget, .R-widget { --rio-border-radius: 0 !important; } 501 502 /* HIDE NATIVE RADIOS */ 503 body .swatch input[type="radio"], body .swatch_options input[type="radio"] { 504 position: absolute !important; opacity: 0 !important; pointer-events: none !important; 505 width: 1px !important; height: 1px !important; overflow: hidden !important; 506 clip: rect(0, 0, 0, 0) !important; 507 } 508 509 /* PDP TITLE â scoped to .product-main only */ 510 body .product-main .product__details .product_name, 511 body .product-main .product-details .title, 512 body .product-main .product-details > .title { 513 font-family: var(--alt-font-body) !important; 514 font-size: 2rem !important; 515 font-weight: 700 !important; 516 line-height: 1.2 !important; 517 color: var(--alt-green) !important; 518 letter-spacing: 0.5px !important; 519 margin-bottom: 8px !important; 520 } 521 body .product-main .product__details .feature-divider, 522 body .product-main .product-details .feature-divider { 523 border-color: rgba(var(--alt-green-rgb), 0.15) !important; 524 margin-bottom: 14px !important; 525 } 526 527 /* PDP PRICE â scoped to .product-main only */ 528 body .product-main .product-details .price, 529 body .product-main .product__details .price { 530 display: block !important; 531 margin: 8px 0 18px 0 !important; 532 padding: 0 !important; 533 font-family: var(--alt-font-body) !important; 534 font-size: 2rem !important; 535 font-weight: 700 !important; 536 line-height: 1.1 !important; 537 color: var(--alt-green) !important; 538 letter-spacing: 0 !important; 539 } 540 body .product-main .product-details .price .current_price, 541 body .product-main .product-details .price .current_price .money, 542 body .product-main .product__details .price .current_price, 543 body .product-main .product__details .price .current_price .money { 544 font: inherit !important; 545 color: inherit !important; 546 } 547 body .product-main .product-details .price .current_price .from, 548 body .product-main .product__details .price .current_price .from { 549 display: inline-block !important; 550 margin-right: 8px !important; 551 vertical-align: middle !important; 552 } 553 body .product-main .product-details .price .current_price .from em, 554 body .product-main .product__details .price .current_price .from em { 555 font-family: var(--alt-font-mono) !important; 556 font-size: 0.65rem !important; 557 font-weight: 500 !important; 558 letter-spacing: 1.5px !important; 559 text-transform: uppercase !important; 560 color: var(--alt-green) !important; 561 font-style: normal !important; 562 } 563 body .product-main .product-details .price .was_price, 564 body .product-main .product__details .price .was_price { 565 display: inline-block !important; 566 margin-left: 12px !important; 567 font-family: var(--alt-font-body) !important; 568 font-size: 1rem !important; 569 font-weight: 400 !important; 570 color: rgba(var(--alt-green-rgb), 0.5) !important; 571 text-decoration: line-through !important; 572 vertical-align: middle !important; 573 } 574 body .product-main .product-details .price .was_price .money, 575 body .product-main .product__details .price .was_price .money { 576 font: inherit !important; color: inherit !important; 577 } 578 body .product-main .product-details .price.sale .current_price, 579 body .product-main .product-details .price.sale .current_price .money, 580 body .product-main .product__details .price.sale .current_price, 581 body .product-main .product__details .price.sale .current_price .money { 582 color: var(--alt-orange) !important; 583 } 584 body .product-main .product-details .price .sold_out, 585 body .product-main .product__details .price .sold_out { 586 display: block !important; 587 margin-top: 6px !important; 588 font-family: var(--alt-font-mono) !important; 589 font-size: 0.78rem !important; 590 font-weight: 600 !important; 591 letter-spacing: 2px !important; 592 text-transform: uppercase !important; 593 color: var(--alt-orange) !important; 594 } 595 @media (max-width: 798px) { 596 body .product-main .product-details .price, 597 body .product-main .product__details .price { font-size: 1.7rem !important; } 598 body .product-main .product__details .product_name, 599 body .product-main .product-details .title, 600 body .product-main .product-details > .title { font-size: 1.7rem !important; } 601 } 602 603 /* PDP DESCRIPTION â scoped to .product-main only */ 604 body .product-main .description .rte { 605 font-family: var(--alt-font-body) !important; 606 font-size: 0.95rem !important; 607 line-height: 1.75 !important; 608 color: var(--alt-green) !important; 609 } 610 body .product-main .description .rte h3, 611 body .product-main .description .rte h4 { 612 font-family: var(--alt-font-mono) !important; 613 font-size: 0.78rem !important; 614 font-weight: 600 !important; 615 letter-spacing: 2px !important; 616 text-transform: uppercase !important; 617 color: var(--alt-green) !important; 618 margin-top: 24px !important; 619 margin-bottom: 12px !important; 620 } 621 622 /* COLLAPSIBLE TABS â scoped to .product-main only */ 623 body .product-main .collapsible-tab { 624 border-color: rgba(var(--alt-green-rgb), 0.15) !important; 625 } 626 body .product-main .collapsible-tab__heading { 627 font-family: var(--alt-font-mono) !important; 628 font-size: 0.82rem !important; 629 font-weight: 600 !important; 630 letter-spacing: 1.5px !important; 631 text-transform: uppercase !important; 632 color: var(--alt-green) !important; 633 } 634 body .product-main .product-links { 635 border-color: rgba(var(--alt-green-rgb), 0.15) !important; 636 } 637 body .product-main .price-ui-badge__sticker { 638 border-radius: 4px !important; 639 font-family: var(--alt-font-mono) !important; 640 font-size: 11px !important; 641 font-weight: 600 !important; 642 letter-spacing: 1.5px !important; 643 padding: 6px 12px !important; 644 } 645 646 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 647 VARIANT PICKERS â minimal styling. Tiles are content- 648 sized (no flex distribution, no min-height, no padding 649 overrides). Theme handles the natural box dimensions; 650 we just brand the colours, fonts, and selected state. 651 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 652 body .swatch .option_title { 653 font-family: var(--alt-font-mono) !important; 654 font-size: 11px !important; 655 font-weight: 500 !important; 656 letter-spacing: 1.6px !important; 657 text-transform: uppercase !important; 658 color: var(--alt-green) !important; 659 margin-bottom: 10px !important; 660 } 661 body .swatch .swatch-element { 662 border: 0 !important; 663 border-radius: 0 !important; 664 background: transparent !important; 665 box-shadow: none !important; 666 padding: 0 !important; 667 margin: 0 8px 8px 0 !important; 668 transition: none !important; 669 } 670 body .swatch .swatch-element label, 671 body .swatch label { 672 border-radius: 0 !important; 673 font-family: var(--alt-font-mono) !important; 674 font-size: 12px !important; 675 font-weight: 500 !important; 676 letter-spacing: 1.4px !important; 677 text-transform: uppercase !important; 678 margin: 0 !important; 679 cursor: pointer !important; 680 transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease !important; 681 } 682 683 /* UNSELECTED state */ 684 body .swatch .swatch-element:not(.soldout):not(.active):not(.selected):not(.is-selected) label { 685 background: var(--alt-cream) !important; 686 color: var(--alt-green) !important; 687 border: 1px solid rgba(var(--alt-green-rgb), 0.3) !important; 688 } 689 690 /* HOVER (only when not selected/soldout) */ 691 body .swatch .swatch-element:not(.soldout):not(.active):not(.selected):not(.is-selected):hover label, 692 body .swatch .swatch-element:not(.soldout):not(.active):not(.selected):not(.is-selected) label:hover { 693 border-color: var(--alt-orange) !important; 694 color: var(--alt-green) !important; 695 background: var(--alt-cream) !important; 696 } 697 698 /* SELECTED state â class-based (.active / .selected / .is-selected) */ 699 body .swatch .swatch-element.active label, 700 body .swatch .swatch-element.selected label, 701 body .swatch .swatch-element.is-selected label, 702 body .swatch .swatch-element.active:hover label, 703 body .swatch .swatch-element.selected:hover label, 704 body .swatch .swatch-element.is-selected:hover label { 705 background: var(--alt-green) !important; 706 color: var(--alt-cream) !important; 707 border: 1px solid var(--alt-green) !important; 708 } 709 710 /* SELECTED state â CSS-only belt: input:checked + .swatch-element label */ 711 body .swatch input[type="radio"]:checked + .swatch-element label, 712 body .swatch input[type="radio"]:checked + .swatch-element:hover label { 713 background: var(--alt-green) !important; 714 color: var(--alt-cream) !important; 715 border: 1px solid var(--alt-green) !important; 716 } 717 718 /* SOLD OUT state */ 719 body .swatch .swatch-element.soldout label {
720 opacity: 0.4 !important; 721 background: var(--alt-cream) !important; 722 color: var(--alt-green) !important; 723 border: 1px solid rgba(var(--alt-green-rgb), 0.2) !important; 724 cursor: not-allowed !important; 725 } 726 727 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 728 GRIND TYPE LAYOUT â equal-width 2x2 grid on desktop, 729 single column on mobile. Capped at 480px wide so it 730 doesn't sprawl across the full form. Targets only 731 swatches with 4+ swatch-elements (i.e. grind type); 732 bag size with 3 elements is untouched. 733 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 734 body .swatch:has(> .swatch-element ~ .swatch-element ~ .swatch-element ~ .swatch-element) { 735 display: grid !important; 736 grid-template-columns: 1fr 1fr !important; 737 gap: 8px !important; 738 max-width: 520px !important; 739 } 740 body .swatch:has(> .swatch-element ~ .swatch-element ~ .swatch-element ~ .swatch-element) > .option_title { 741 grid-column: 1 / -1 !important; 742 margin-bottom: 4px !important; 743 } 744 body .swatch:has(> .swatch-element ~ .swatch-element ~ .swatch-element ~ .swatch-element) .swatch-element { 745 margin: 0 !important; 746 } 747 body .swatch:has(> .swatch-element ~ .swatch-element ~ .swatch-element ~ .swatch-element) .swatch-element label { 748 display: block !important; 749 width: 100% !important; 750 text-align: center !important; 751 box-sizing: border-box !important; 752 font-size: 11px !important; 753 letter-spacing: 1px !important; 754 white-space: nowrap !important; 755 } 756 @media (max-width: 768px) { 757 body .swatch:has(> .swatch-element ~ .swatch-element ~ .swatch-element ~ .swatch-element) { 758 grid-template-columns: 1fr !important; 759 max-width: 100% !important; 760 } 761 } 762 763 /* QUANTITY â colours and fonts only, no height locks */ 764 body .product-main .product-quantity-box input, 765 body .product-main .product-quantity-box .quantity, 766 body .product_form .product-quantity-box input, 767 body .product_form .product-quantity-box .quantity, 768 body .cart_content .product-quantity-box input, 769 body .cart_content .product-quantity-box .quantity, 770 body .shopify-section--cart-template .product-quantity-box input, 771 body .shopify-section--cart-template .product-quantity-box .quantity { 772 border: 1px solid rgba(var(--alt-green-rgb), 0.3) !important; 773 font-family: var(--alt-font-body) !important; 774 font-weight: 600 !important; 775 color: var(--alt-green) !important; 776 background: var(--alt-cream) !important; 777 } 778 body .product-main .product-quantity-box .product-minus, 779 body .product-main .product-quantity-box .product-plus, 780 body .product_form .product-quantity-box .product-minus, 781 body .product_form .product-quantity-box .product-plus, 782 body .cart_content .product-quantity-box .product-minus, 783 body .cart_content .product-quantity-box .product-plus, 784 body .shopify-section--cart-template .product-quantity-box .product-minus, 785 body .shopify-section--cart-template .product-quantity-box .product-plus { 786 background: var(--alt-cream) !important; 787 border: 1px solid rgba(var(--alt-green-rgb), 0.3) !important; 788 color: var(--alt-green) !important; 789 transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important; 790 } 791 body .product-main .product-quantity-box .product-minus:hover, 792 body .product-main .product-quantity-box .product-plus:hover, 793 body .product_form .product-quantity-box .product-minus:hover, 794 body .product_form .product-quantity-box .product-plus:hover, 795 body .cart_content .product-quantity-box .product-minus:hover, 796 body .cart_content .product-quantity-box .product-plus:hover, 797 body .shopify-section--cart-template .product-quantity-box .product-minus:hover, 798 body .shopify-section--cart-template .product-quantity-box .product-plus:hover { 799 border-color: var(--alt-orange) !important; 800 color: var(--alt-orange) !important; 801 background: var(--alt-cream) !important; 802 } 803 body .product-main .purchase-details__quantity label, 804 body .product_form .purchase-details__quantity label { 805 font-family: var(--alt-font-mono) !important; 806 font-size: 11px !important; 807 font-weight: 500 !important; 808 letter-spacing: 1.6px !important; 809 text-transform: uppercase !important; 810 color: var(--alt-green) !important; 811 } 812 813 /* CART CTA â orange to darker orange on hover. Theme handles 814 dimensions; we only brand the colour, font, and corner. */ 815 body .product-main .global-button.add_to_cart, 816 body .product-main .add_to_cart, 817 body .product_form .global-button.add_to_cart, 818 body .product_form .add_to_cart, 819 body button[name="add"] { 820 background: var(--alt-orange) !important; 821 color: #FFFFFF !important; 822 border: 1px solid var(--alt-orange) !important; 823 border-radius: 0 !important; 824 font-family: var(--alt-font-stencil) !important; 825 font-size: 18px !important; 826 font-weight: 700 !important; 827 letter-spacing: 2px !important; 828 text-transform: uppercase !important; 829 padding: 16px 24px !important; 830 transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important; 831 } 832 body .product-main .global-button.add_to_cart:hover, 833 body .product-main .add_to_cart:hover, 834 body .product_form .global-button.add_to_cart:hover, 835 body .product_form .add_to_cart:hover, 836 body button[name="add"]:hover, 837 body .product-main .global-button.add_to_cart:focus, 838 body .product-main .add_to_cart:focus, 839 body .product_form .global-button.add_to_cart:focus, 840 body .product_form .add_to_cart:focus, 841 body button[name="add"]:focus { 842 background: var(--alt-orange-dark) !important; 843 border-color: var(--alt-orange-dark) !important; 844 color: #FFFFFF !important; 845 } 846 847 /* Hide the .checkmark SVG inside the ATB. It was inflating the 848 button's natural height by ~32px because it sits inline with 849 the text. Theme JS reveals it via .added after a successful add. */ 850 body button.add_to_cart svg.checkmark, 851 body button[name="add"] svg.checkmark { 852 display: none !important; 853 } 854 body button.add_to_cart.added svg.checkmark, 855 body button[name="add"].added svg.checkmark { 856 display: inline-block !important; 857 } 858 859 /* Bold Subscriptions widget background â theme cream. Moved here 860 from the removed "30% Banner" custom-liquid block (Subs 500g 861 rebuild, Oct 2026), which was the only thing setting it. */ 862 .bsub-widget__wrapper { 863 background-color: #F4EBD0 !important; 864 } 865 866 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 867 BOLD SUBSCRIPTIONS WIDGET â on-brand frequency grid 868 Subs 500g rebuild, Oct 2026. Restyles Bold's own markup 869 (bsub-widget__* / bsub-option-container) so the delivery 870 frequencies read like the variant swatches: square 2Ã2 871 buttons, DM Mono caps, cream â dark green when selected. 872 Bold's radios still drive the selling plan; the inputs are 873 visually hidden but stay focusable. If Bold renames these 874 classes the widget falls back to its default look. 875 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 876 body .bsub-widget, 877 body .bsub-widget__wrapper { 878 background: transparent !important; 879 border: 0 !important; 880 padding: 0 !important; 881 margin: 0 !important; 882 color: var(--alt-green) !important; 883 } 884 body .bsub-widget__delivery-fieldset { 885 display: grid !important; 886 grid-template-columns: 1fr 1fr !important; 887 gap: 8px !important; 888 border: 0 !important; 889 margin: 0 !important; 890 padding: 0 !important; 891 min-width: 0 !important; 892 } 893 /* Show "Delivery frequency" styled like the swatch option titles */ 894 body .bsub-widget__delivery-fieldset > legend { 895 display: block !important; 896 float: none !important; 897 grid-column: 1 / -1 !important; 898 width: 100% !important; 899 padding: 0 !important; 900 font-family: var(--alt-font-mono) !important; 901 font-size: 11px !important; 902 font-weight: 500 !important; 903 letter-spacing: 1.6px !important; 904 text-transform: uppercase !important; 905 color: var(--alt-green) !important; 906 margin: 0 0 10px 0 !important; 907 } 908 body .bsub-option-container { 909 display: block !important; 910 margin: 0 !important; 911 } 912 body .bsub-option-container label { 913 display: block !important; 914 position: relative !important; 915 margin: 0 !important; 916 cursor: pointer !important; 917 } 918 body .bsub-option-container input[type="radio"] { 919 position: absolute !important; 920 opacity: 0 !important; 921 width: 1px !important; 922 height: 1px !important; 923 margin: 0 !important; 924 pointer-events: none !important; 925 } 926 body .bsub-option-container .bsub-widget__plan-header { 927 display: flex !important; 928 flex-direction: column !important;
929 align-items: center !important; 930 justify-content: center !important; 931 gap: 3px !important; 932 min-height: 58px !important; 933 padding: 10px 8px !important; 934 text-align: center !important; 935 background: var(--alt-cream) !important; 936 color: var(--alt-green) !important; 937 border: 1px solid rgba(var(--alt-green-rgb), 0.3) !important; 938 border-radius: 0 !important; 939 transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease !important; 940 } 941 body .bsub-option-container .bsub-widget__plan-header::before { 942 content: none !important; 943 } 944 body .bsub-option-container .bsub-widget__plan-header svg { 945 display: none !important; 946 } 947 body .bsub-option-container .bsub-widget__text, 948 body .bsub-option-container .bsub-widget__main-text { 949 margin: 0 !important; 950 padding: 0 !important; 951 font-family: var(--alt-font-mono) !important; 952 font-size: 12px !important; 953 font-weight: 500 !important; 954 letter-spacing: 1.4px !important; 955 text-transform: uppercase !important; 956 color: inherit !important; 957 } 958 body .bsub-option-container .bsub-widget__plan-pricing { 959 display: block !important; 960 margin: 0 !important; 961 font-family: var(--alt-font-body) !important; 962 font-size: 12px !important; 963 font-weight: 400 !important; 964 letter-spacing: 0 !important; 965 text-transform: none !important; 966 color: inherit !important; 967 opacity: 0.75; 968 } 969 /* Hover (unselected) */ 970 body .bsub-option-container label:hover input:not(:checked) + .bsub-widget__plan-header { 971 border-color: var(--alt-orange) !important; 972 background: var(--alt-cream) !important; 973 color: var(--alt-green) !important; 974 } 975 /* Selected */ 976 body .bsub-option-container input:checked + .bsub-widget__plan-header, 977 body .bsub-option-container input:checked + .bsub-widget__plan-header:hover { 978 background: var(--alt-green) !important; 979 color: var(--alt-cream) !important; 980 border: 1px solid var(--alt-green) !important; 981 } 982 body .bsub-option-container input:checked + .bsub-widget__plan-header .bsub-widget__plan-pricing { 983 opacity: 0.85; 984 } 985 body .bsub-option-container .bsub-widget__plan-pricing span { 986 color: inherit !important; 987 } 988 /* Keyboard focus */ 989 body .bsub-option-container input:focus-visible + .bsub-widget__plan-header { 990 outline: 2px solid var(--alt-orange) !important; 991 outline-offset: 2px !important; 992 } 993 /* "Subscription details" toggle */ 994 body .bsub-widget__extra-actions { 995 margin-top: 10px !important; 996 } 997 body .bsub-widget__toggle-details-btn { 998 padding: 0 !important; 999 font-family: var(--alt-font-mono) !important; 1000 font-size: 11px !important; 1001 letter-spacing: 1px !important; 1002 text-transform: uppercase !important; 1003 color: var(--alt-green) !important; 1004 background: none !important; 1005 border: 0 !important; 1006 } 1007 body .bsub-widget__sub-details { 1008 border-radius: 0 !important; 1009 border-color: rgba(var(--alt-green-rgb), 0.3) !important; 1010 } 1011 1012 /* REUSABLE COMPONENTS */ 1013 .alt-eyebrow { 1014 font-family: var(--alt-font-mono); 1015 font-size: 11px; font-weight: 500; 1016 letter-spacing: 2.5px; text-transform: uppercase; 1017 color: var(--alt-orange); line-height: 1; 1018 } 1019 .alt-eyebrow-rule { 1020 width: 48px; height: 2px; 1021 background: var(--alt-orange); margin-bottom: 16px; 1022 } 1023 .alt-headline { 1024 font-family: var(--alt-font-stencil); font-weight: 700; 1025 text-transform: uppercase; letter-spacing: 1px; 1026 line-height: 1; color: var(--alt-green); 1027 } 1028 .alt-accent-italic { 1029 font-family: var(--alt-font-serif); font-style: italic; 1030 font-weight: 500; color: var(--alt-orange); 1031 } 1032 .alt-btn-primary { 1033 display: inline-flex; align-items: center; justify-content: center; 1034 background: var(--alt-orange) !important; 1035 color: #FFFFFF !important; 1036 border: 1px solid var(--alt-orange) !important; 1037 border-radius: 0 !important; 1038 font-family: var(--alt-font-stencil); 1039 font-size: 16px; font-weight: 700; 1040 letter-spacing: 2px; text-transform: uppercase; 1041 padding: 14px 28px; 1042 text-decoration: none !important; 1043 transition: background 0.15s ease, border-color 0.15s ease !important; 1044 } 1045 .alt-btn-primary:hover, .alt-btn-primary:focus { 1046 background: var(--alt-orange-dark) !important; 1047 border-color: var(--alt-orange-dark) !important; 1048 color: #FFFFFF !important; 1049 } 1050 .alt-btn-secondary { 1051 display: inline-flex; align-items: center; justify-content: center; 1052 background: transparent !important; 1053 color: var(--alt-cream) !important; 1054 border: 1px solid rgba(var(--alt-cream-rgb), 0.4) !important; 1055 border-radius: 0 !important; 1056 font-family: var(--alt-font-stencil); 1057 font-size: 16px; font-weight: 700; 1058 letter-spacing: 2px; text-transform: uppercase; 1059 padding: 14px 28px; 1060 text-decoration: none !important; 1061 transition: border-color 0.15s ease, color 0.15s ease !important; 1062 } 1063 .alt-btn-secondary:hover, .alt-btn-secondary:focus { 1064 border-color: var(--alt-orange) !important; 1065 color: var(--alt-orange) !important; 1066 } 1067 .alt-specimen-panel { 1068 position: relative; 1069 background: 1070 linear-gradient(135deg, rgba(var(--alt-orange-rgb), 0) 0%, rgba(var(--alt-orange-rgb), 0) 55%, rgba(var(--alt-orange-rgb), 0.22) 100%), 1071 var(--alt-green); 1072 color: var(--alt-cream); 1073 border-radius: 0; overflow: hidden; 1074 } 1075 .alt-specimen-panel::before { 1076 content: ""; position: absolute; 1077 top: 0; left: 0; right: 0; height: 2px; 1078 background: var(--alt-orange); z-index: 1; 1079 } 1080 1081 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1082 MINI CART â cream background, full-screen on mobile 1083 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1084 1085 /* Full-screen on mobile */ 1086 @media (max-width: 798px) { 1087 body .cart_content { 1088 position: fixed !important; 1089 top: 0 !important; 1090 right: 0 !important; 1091 bottom: 0 !important; 1092 left: 0 !important; 1093 max-width: 100% !important; 1094 width: 100% !important; 1095 max-height: 100vh !important; 1096 z-index: 9999 !important; 1097 padding-top: 0 !important; 1098 } 1099 } 1100 1101 /* Header bar */ 1102 body .cart_content .cart_content__continue-shopping { 1103 font-family: var(--alt-font-mono) !important; 1104 font-size: 10px !important; 1105 font-weight: 500 !important; 1106 letter-spacing: 2px !important; 1107 text-transform: uppercase !important; 1108 color: var(--alt-green) !important; 1109 border-color: rgba(var(--alt-green-rgb), 0.2) !important; 1110 } 1111 1112 /* Item title */ 1113 body .cart_content .mini-cart__item-title, 1114 body .cart_content .mini-cart__item-title a { 1115 font-family: var(--alt-font-body) !important; 1116 font-size: 12px !important; 1117 font-weight: 600 !important; 1118 line-height: 1.3 !important; 1119 color: var(--alt-green) !important; 1120 text-decoration: none !important; 1121 } 1122 body .cart_content .mini-cart__item-title a:hover { 1123 color: var(--alt-orange) !important; 1124 } 1125 1126 /* Variant text (e.g. "- 250g / Whole Bean") */ 1127 body .cart_content .mini-cart__item-title { 1128 font-family: var(--alt-font-body) !important; 1129 font-size: 12px !important; 1130 color: var(--alt-green) !important; 1131 } 1132 1133 /* Item price */ 1134 body .cart_content .mini-cart__item-price { 1135 font-family: var(--alt-font-body) !important; 1136 font-size: 13px !important; 1137 font-weight: 700 !important; 1138 color: var(--alt-green) !important; 1139 margin: 4px 0 !important; 1140 } 1141 body .cart_content .mini-cart__item-price .money { 1142 font: inherit !important; 1143 color: inherit !important; 1144 } 1145 body .cart_content .mini-cart__item-price .money.sale { 1146 color: var(--alt-orange) !important; 1147 } 1148 body .cart_content .mini-cart__item-price .was_price { 1149 font-weight: 400 !important; 1150 font-size: 11px !important; 1151 color: rgba(var(--alt-green-rgb), 0.5) !important; 1152 text-decoration: line-through !important; 1153 } 1154 1155 /* Discount labels */ 1156 body .cart_content .notification-discount { 1157 font-family: var(--alt-font-mono) !important; 1158 font-size: 10px !important; 1159 letter-spacing: 1px !important; 1160 text-transform: uppercase !important; 1161 color: var(--alt-orange) !important; 1162 } 1163 1164 /* Remove button */ 1165 body .cart_content .cart__remove-btn { 1166 color: rgba(var(--alt-green-rgb), 0.35) !important; 1167 transition: color 0.15s ease !important; 1168 } 1169 body .cart_content .cart__remove-btn:hover { 1170 color: var(--alt-orange) !important; 1171 } 1172 1173 /* Subtotal area */ 1174 body .cart_content .cart_subtotal { 1175 font-family: var(--alt-font-body) !important; 1176 font-weight: 700 !important; 1177 color: var(--alt-green) !important; 1178 } 1179 body .cart_content .cart_subtotal .money { 1180 font-family: var(--alt-font-body) !important; 1181 font-weight: 700 !important; 1182 color: var(--alt-green) !important; 1183 }
1184 body .cart_content .cart-message { 1185 font-family: var(--alt-font-body) !important; 1186 font-size: 11px !important; 1187 color: rgba(var(--alt-green-rgb), 0.6) !important; 1188 } 1189 1190 /* Checkout button in mini cart */ 1191 body .cart_content .global-button.add_to_cart, 1192 body .cart_content [data-minicart-checkout-button] { 1193 background: var(--alt-orange) !important; 1194 color: #FFFFFF !important; 1195 border: 1px solid var(--alt-orange) !important; 1196 border-radius: 0 !important; 1197 font-family: var(--alt-font-stencil) !important; 1198 font-size: 14px !important; 1199 font-weight: 700 !important; 1200 letter-spacing: 2px !important; 1201 text-transform: uppercase !important; 1202 transition: background 0.15s ease, border-color 0.15s ease !important; 1203 } 1204 body .cart_content .global-button.add_to_cart:hover, 1205 body .cart_content [data-minicart-checkout-button]:hover { 1206 background: var(--alt-orange-dark) !important; 1207 border-color: var(--alt-orange-dark) !important; 1208 } 1209 1210 /* Savings */ 1211 body .cart_content .cart_savings { 1212 font-family: var(--alt-font-body) !important; 1213 color: var(--alt-orange) !important; 1214 } 1215 1216 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1217 FREE SHIPPING PROGRESS BAR â mini cart 1218 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1219 .alt-shipping-bar { 1220 padding: 10px 15px; 1221 margin-bottom: 4px; 1222 } 1223 .alt-shipping-bar__text { 1224 font-family: var(--alt-font-mono) !important; 1225 font-size: 10px !important; 1226 font-weight: 500 !important; 1227 letter-spacing: 1.5px !important; 1228 text-transform: uppercase !important; 1229 color: var(--alt-green) !important; 1230 margin: 0 0 6px 0 !important; 1231 text-align: center !important; 1232 } 1233 .alt-shipping-bar__text span { 1234 color: var(--alt-orange) !important; 1235 font-weight: 600 !important; 1236 } 1237 .alt-shipping-bar__track { 1238 width: 100%; 1239 height: 4px; 1240 background: rgba(var(--alt-green-rgb), 0.1); 1241 border-radius: 2px; 1242 overflow: hidden; 1243 } 1244 .alt-shipping-bar__fill { 1245 height: 100%; 1246 background: var(--alt-orange); 1247 border-radius: 2px; 1248 transition: width 0.3s ease; 1249 } 1250 .alt-shipping-bar--complete .alt-shipping-bar__text { 1251 color: var(--alt-green) !important; 1252 } 1253 .alt-shipping-bar--complete .alt-shipping-bar__fill { 1254 background: var(--alt-green); 1255 } 1256 1257 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1258 EMPTY MINI CART â continue shopping + recommendations 1259 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1260 body .cart_content .js-empty-cart__message { 1261 padding: 20px 15px !important; 1262 text-align: center !important; 1263 } 1264 body .cart_content .empty_cart { 1265 font-family: var(--alt-font-body) !important; 1266 font-size: 0.95rem !important; 1267 color: var(--alt-green) !important; 1268 margin-bottom: 16px !important; 1269 } 1270 .alt-empty-cart__cta { 1271 display: inline-block !important; 1272 background: var(--alt-orange) !important; 1273 color: #FFFFFF !important; 1274 border: 1px solid var(--alt-orange) !important; 1275 border-radius: 0 !important; 1276 font-family: var(--alt-font-stencil) !important; 1277 font-size: 13px !important; 1278 font-weight: 700 !important; 1279 letter-spacing: 2px !important; 1280 text-transform: uppercase !important; 1281 padding: 12px 24px !important; 1282 text-decoration: none !important; 1283 transition: background 0.15s ease, border-color 0.15s ease !important; 1284 } 1285 .alt-empty-cart__cta:hover { 1286 background: var(--alt-orange-dark) !important; 1287 border-color: var(--alt-orange-dark) !important; 1288 color: #FFFFFF !important; 1289 } 1290 1291 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1292 EMPTY CART STATE 1293 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1294 body .shopify-section--cart-template .quote { 1295 font-family: var(--alt-font-body) !important; 1296 font-size: 1rem !important; 1297 color: rgba(var(--alt-green-rgb), 0.7) !important; 1298 line-height: 1.6 !important; 1299 text-align: center !important; 1300 } 1301 body .shopify-section--cart-template .cart__continue-shopping { 1302 display: inline-flex !important;
1303 align-items: center !important; 1304 justify-content: center !important; 1305 background: var(--alt-orange) !important; 1306 color: #FFFFFF !important; 1307 border: 1px solid var(--alt-orange) !important; 1308 border-radius: 0 !important; 1309 font-family: var(--alt-font-stencil) !important; 1310 font-size: 16px !important; 1311 font-weight: 700 !important; 1312 letter-spacing: 2px !important; 1313 text-transform: uppercase !important; 1314 padding: 14px 28px !important; 1315 text-decoration: none !important; 1316 transition: background 0.15s ease, border-color 0.15s ease !important; 1317 margin-top: 8px !important; 1318 } 1319 body .shopify-section--cart-template .cart__continue-shopping:hover { 1320 background: var(--alt-orange-dark) !important; 1321 border-color: var(--alt-orange-dark) !important; 1322 color: #FFFFFF !important; 1323 } 1324 1325 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1326 CART PAGE â item styling 1327 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1328 1329 /* Page title */ 1330 body .shopify-section--cart-template h1 { 1331 font-family: var(--alt-font-body) !important; 1332 font-size: 2rem !important; 1333 font-weight: 500 !important; 1334 color: var(--alt-green) !important; 1335 letter-spacing: 0.5px !important; 1336 } 1337 body .shopify-section--cart-template .feature-divider { 1338 border-color: rgba(var(--alt-green-rgb), 0.15) !important; 1339 } 1340 1341 /* Cart item title */ 1342 body .shopify-section--cart-template .cart__item--title, 1343 body .shopify-section--cart-template .cart__item--title a { 1344 font-family: var(--alt-font-body) !important; 1345 font-size: 1rem !important; 1346 font-weight: 700 !important; 1347 color: var(--alt-green) !important; 1348 text-decoration: none !important; 1349 line-height: 1.3 !important; 1350 } 1351 body .shopify-section--cart-template .cart__item--title a:hover { 1352 color: var(--alt-orange) !important; 1353 } 1354 1355 /* Cart item variant meta */ 1356 body .shopify-section--cart-template .cart__item .meta { 1357 font-family: var(--alt-font-body) !important; 1358 font-size: 0.85rem !important; 1359 color: rgba(var(--alt-green-rgb), 0.65) !important; 1360 } 1361 body .shopify-section--cart-template .cart__item .meta .label { 1362 font-family: var(--alt-font-mono) !important; 1363 font-size: 10px !important; 1364 font-weight: 500 !important; 1365 letter-spacing: 1.2px !important; 1366 text-transform: uppercase !important; 1367 color: var(--alt-orange) !important; 1368 } 1369 1370 /* Cart item price */ 1371 body .shopify-section--cart-template .modal_price { 1372 font-family: var(--alt-font-body) !important; 1373 font-size: 1rem !important; 1374 font-weight: 700 !important; 1375 color: var(--alt-green) !important; 1376 } 1377 body .shopify-section--cart-template .modal_price .money { 1378 font: inherit !important; 1379 color: inherit !important; 1380 } 1381 body .shopify-section--cart-template .modal_price .money.sale { 1382 color: var(--alt-orange) !important; 1383 } 1384 body .shopify-section--cart-template .modal_price .was_price { 1385 font-weight: 400 !important; 1386 font-size: 0.85rem !important; 1387 color: rgba(var(--alt-green-rgb), 0.5) !important; 1388 } 1389 1390 /* Cart line total */ 1391 body .shopify-section--cart-template .price_total { 1392 font-family: var(--alt-font-body) !important; 1393 font-size: 0.95rem !important; 1394 color: var(--alt-green) !important; 1395 } 1396 body .shopify-section--cart-template .price_total strong { 1397 font-family: var(--alt-font-mono) !important; 1398 font-size: 10px !important; 1399 font-weight: 500 !important; 1400 letter-spacing: 1.5px !important; 1401 text-transform: uppercase !important; 1402 color: var(--alt-green) !important; 1403 } 1404 1405 /* Cart discount labels */ 1406 body .shopify-section--cart-template .cart__item--discount { 1407 font-family: var(--alt-font-mono) !important; 1408 font-size: 10px !important; 1409 letter-spacing: 1px !important; 1410 text-transform: uppercase !important; 1411 color: var(--alt-orange) !important; 1412 } 1413 1414 /* Remove button */ 1415 body .shopify-section--cart-template .cart__remove-btn { 1416 font-family: var(--alt-font-mono) !important; 1417 font-size: 10px !important; 1418 font-weight: 500 !important; 1419 letter-spacing: 1.5px !important; 1420 text-transform: uppercase !important; 1421 color: rgba(var(--alt-green-rgb), 0.4) !important; 1422 text-decoration: none !important; 1423 transition: color 0.15s ease !important; 1424 } 1425 body .shopify-section--cart-template .cart__remove-btn:hover { 1426 color: var(--alt-orange) !important; 1427 } 1428 1429 /* Subtotal sidebar */ 1430 body .shopify-section--cart-template .subtotal { 1431 border-color: rgba(var(--alt-green-rgb), 0.15) !important; 1432 } 1433 body .shopify-section--cart-template .cart_subtotal { 1434 font-family: var(--alt-font-body) !important; 1435 font-size: 1.1rem !important; 1436 font-weight: 700 !important; 1437 color: var(--alt-green) !important; 1438 } 1439 body .shopify-section--cart-template .cart_subtotal .money { 1440 font: inherit !important; 1441 color: inherit !important; 1442 } 1443 body .shopify-section--cart-template .cart-message { 1444 font-family: var(--alt-font-body) !important; 1445 font-size: 0.8rem !important; 1446 color: rgba(var(--alt-green-rgb), 0.6) !important; 1447 } 1448 body .shopify-section--cart-template .cart_savings { 1449 font-family: var(--alt-font-body) !important; 1450 color: var(--alt-orange) !important; 1451 } 1452 1453 /* Continue shopping link on cart page */ 1454 body .shopify-section--cart-template .continue-shopping { 1455 font-family: var(--alt-font-mono) !important; 1456 font-size: 11px !important; 1457 font-weight: 500 !important; 1458 letter-spacing: 2px !important; 1459 text-transform: uppercase !important; 1460 color: var(--alt-green) !important; 1461 text-decoration: none !important; 1462 transition: color 0.15s ease !important; 1463 } 1464 body .shopify-section--cart-template .continue-shopping:hover { 1465 color: var(--alt-orange) !important; 1466 } 1467</style> 1468
1469<script> 1470 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1471 SWATCH STATE SYNC (capture phase) â keeps .active in 1472 sync with the radio's :checked state. Capture phase so 1473 it fires before any theme JS that calls stopPropagation. 1474 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1475 (function() { 1476 function findElemForRadio(radio, swatch) { 1477 if (radio.id) { 1478 var label = (swatch || document).querySelector('label[for="' + radio.id + '"]'); 1479 if (label) { 1480 var byLabel = label.closest('.swatch-element'); 1481 if (byLabel) return byLabel; 1482 } 1483 } 1484 var sib = radio.nextElementSibling; 1485 if (sib && sib.classList && sib.classList.contains('swatch-element')) return sib; 1486 return null; 1487 } 1488 1489 function syncSwatch(swatch) { 1490 if (!swatch) return; 1491 var radios = swatch.querySelectorAll('input[type="radio"]'); 1492 radios.forEach(function(radio) { 1493 var elem = findElemForRadio(radio, swatch); 1494 if (!elem) return; 1495 if (radio.checked) elem.classList.add('active'); 1496 else elem.classList.remove('active'); 1497 }); 1498 } 1499 1500 function syncAll() { 1501 document.querySelectorAll('.swatch').forEach(syncSwatch); 1502 } 1503 1504 if (document.readyState === 'loading') { 1505 document.addEventListener('DOMContentLoaded', syncAll); 1506 } else { 1507 syncAll(); 1508 } 1509 setTimeout(syncAll, 200); 1510 setTimeout(syncAll, 800); 1511 setTimeout(syncAll, 2000); 1512 1513 document.addEventListener('change', function(e) { 1514 if (!e.target || !e.target.matches) return; 1515 if (!e.target.matches('input[type="radio"]')) return; 1516 var swatch = e.target.closest('.swatch'); 1517 if (!swatch) return; 1518 syncSwatch(swatch); 1519 setTimeout(function() { syncSwatch(swatch); }, 50); 1520 }, true); 1521 1522 document.addEventListener('click', function(e) { 1523 var elem = e.target.closest && e.target.closest('.swatch-element'); 1524 if (!elem || elem.classList.contains('soldout')) return; 1525 var radio = null; 1526 var label = elem.querySelector('label[for]'); 1527 if (label) { 1528 radio = document.getElementById(label.getAttribute('for')); 1529 } 1530 if (!radio) { 1531 var sib = elem.previousElementSibling; 1532 if (sib && sib.tagName === 'INPUT' && sib.type === 'radio') radio = sib; 1533 } 1534 if (!radio) return; 1535 if (!radio.checked) { 1536 radio.checked = true; 1537 radio.dispatchEvent(new Event('change', { bubbles: true })); 1538 radio.dispatchEvent(new Event('input', { bubbles: true })); 1539 } 1540 var swatch = elem.closest('.swatch'); 1541 if (swatch) syncSwatch(swatch); 1542 }, true); 1543 })(); 1544</script>
1544<!-- BEGIN app block: shopify://apps/pandectes-gdpr/blocks/banner/58c0baa2-6cc1-480c-9ea6-38d6d559556a --> 1545 1546 1547 1548 <!-- TCF is active, scripts are loaded above --> 1549 1550
1550<script> 1551 if (!window.PandectesRulesSettings) { 1552 window.PandectesRulesSettings = {"store":{"id":54106423494,"adminMode":false,"headless":false,"storefrontRootDomain":"","checkoutRootDomain":"","storefrontAccessToken":""},"banner":{"cookiesBlockedByDefault":"0","hybridStrict":false,"isActive":true},"geolocation":{"brOnly":false,"caOnly":false,"euOnly":false},"blocker":{"isActive":false,"googleConsentMode":{"isActive":true,"id":"GTM-NZSCZVP6","analyticsId":"","adwordsId":"","adStorageCategory":4,"analyticsStorageCategory":2,"functionalityStorageCategory":1,"personalizationStorageCategory":1,"securityStorageCategory":0,"customEvent":true,"redactData":true,"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":[]}}}}; 1553 const rulesScript = document.createElement('script'); 1554 window.PandectesRulesSettings.auto = true; 1555 rulesScript.src = "https://cdn.shopify.com/extensions/01a11687-a319-7422-b9b0-51680bbe142b/gdpr-cookie-consent-419/assets/pandectes-rules.js"; 1556 const firstChild = document.head.firstChild; 1557 document.head.insertBefore(rulesScript, firstChild); 1558 } 1559 </script>
1559 1560 1561
1561<script> 1562 1563 window.PandectesSettings = {"store":{"id":54106423494,"plan":"plus","theme":"Turbo Tennessee V8.0.1","primaryLocale":"en","adminMode":false,"headless":false,"storefrontRootDomain":"","checkoutRootDomain":"","storefrontAccessToken":"","useGeolocation":false},"tsPublished":1768750880,"declaration":{"showPurpose":false,"showProvider":false,"showDateGenerated":false},"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":"Got It"},"leaveSiteButtonText":{"en":"Leave this site"},"preferencesButtonText":{"en":"Preferences"},"cookiePolicyText":{"en":"Cookie policy"},"preferencesPopupTitleText":{"en":"Manage consent preferences"},"preferencesPopupIntroText":{"en":"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience."},"preferencesPopupSaveButtonText":{"en":"Save preferences & exit"},"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 be able to access your personal data at any time. This includes your account information, your order records as well as any GDPR related requests you have made so far. You have the right to request a full report of your data."},"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":"Use this option if you want to remove your personal and other data from our store. Keep in mind that this process will delete your account, so you will no longer be able to access or use it anymore."},"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."}
1563,"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"}}
1563,"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. Without these cookies services you have asked for, like shopping baskets or e-billing, cannot be provided."},"functionalityCookiesTitleText":{"en":"Functionality cookies"},"functionalityCookiesDescriptionText":{"en":"These cookies allow the website to remember choices you make (such as your user name, language or the region you are in) and provide enhanced, more personal features. For instance, a website may be able to provide you with local weather reports or traffic news by storing in a cookie the region in which you are currently located. These cookies can also be used to remember changes you have made to text size, fonts and other parts of web pages that you can customise. They may also be used to provide services you have asked for such as watching a video or commenting on a blog. The information these cookies collect may be anonymised and they cannot track your browsing activity on other websites."},"performanceCookiesTitleText":{"en":"Performance cookies"},"performanceCookiesDescriptionText":{"en":"These cookies collect information about how visitors use a website, for instance which pages visitors go to most often, and if they get error messages from web pages. These cookies donât collect information that identifies a visitor. All information these cookies collect is aggregated and therefore anonymous. It is only used to improve how a website works."},"targetingCookiesTitleText":{"en":"Targeting cookies"},"targetingCookiesDescriptionText":{"en":"These cookies are used to deliver adverts more relevant to you and your interests They are also used to limit the number of times you see an advertisement as well as help measure the effectiveness of the advertising campaign. They are usually placed by advertising networks with the website operatorâs permission. They remember that you have visited a website and this information is shared with other organisations such as advertisers. Quite often targeting or advertising cookies will be linked to site functionality provided by the other organisation."},"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},"dismissOnScroll":false,"dismissOnWindowClick":false,"dismissOnTimeout":false,"palette":{"popup":{"background":"#FFFFFF","backgroundForCalculations":{"a":1,"b":255,"g":255,"r":255},"text":"#404040"},"button":{"background":"#13322B","backgroundForCalculations":{"a":1,"b":43,"g":50,"r":19},"text":"#FFFFFF","textForCalculation":{"a":1,"b":255,"g":255,"r":255},"border":"transparent"}},"content":{"href":"https://altitude-coffee.co.uk/policies/privacy-policy","imprintHref":"/","close":"✕","target":"_blank","logo":""},"window":"<div role=\"dialog\" aria-label=\"{{header}}\" aria-describedby=\"cookieconsent:desc\" id=\"pandectes-banner\" class=\"cc-window-wrapper cc-bottom-right-wrapper\"><div class=\"pd-cookie-banner-window cc-window {{classes}}\">{{children}}</div></div>","compliance":{"custom":"<div class=\"cc-compliance cc-highlight\">{{preferences}}{{allow}}</div>"},"type":"custom","layouts":{"basic":"{{messagelink}}{{compliance}}"},"position":"bottom-right","theme":"edgeless","revokable":false,"animateRevokable":false,"revokableReset":false,"revokableLogoUrl":"https://altitude-coffee-london.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"
1563:"<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,"euOnly":false},"dsr":{"guestsSupport":false,"accessSectionDownloadReportAuto":false},"banner":{"resetTs":1638536077,"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: left} .cc-window-wrapper{z-index: 16777100;} .cc-window{z-index: 16777100;font-family: inherit;} .pd-cookie-banner-window .cc-header{font-family: inherit;} .pd-cp-ui{font-family: inherit; background-color: #FFFFFF;color:#404040;} button.pd-cp-btn, a.pd-cp-btn{background-color:#13322B;color:#FFFFFF!important;} input + .pd-cp-preferences-slider{background-color: rgba(64, 64, 64, 0.3)} .pd-cp-scrolling-section::-webkit-scrollbar{background-color: rgba(64, 64, 64, 0.3)} input:checked + .pd-cp-preferences-slider{background-color: rgba(64, 64, 64, 1)} .pd-cp-scrolling-section::-webkit-scrollbar-thumb {background-color: rgba(64, 64, 64, 1)} .pd-cp-ui-close{color:#404040;} .pd-cp-preferences-slider:before{background-color: #FFFFFF} .pd-cp-title:before {border-color: #404040!important} .pd-cp-preferences-slider{background-color:#404040} .pd-cp-toggle{color:#404040!important} @media(max-width:699px) {.pd-cp-ui-close-top svg {fill: #404040}} .pd-cp-toggle:hover,.pd-cp-toggle:visited,.pd-cp-toggle:active{color:#404040!important} .pd-cookie-banner-window {} ","customJavascript":{},"showPoweredBy":false,"logoHeight":40,"hybridStrict":false,"cookiesBlockedByDefault":"0","isActive":true,"implicitSavePreferences":true,"cookieIcon":false,"blockBots":false,"showCookiesDetails":true,"hasTransition":true,"blockingPage":false,"showOnlyLandingPage":false,"leaveSiteUrl":"https://www.google.com","linkRespectStoreLang":false},"cookies":{"0":[{"name":"_shopify_tw","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_shopify_m","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_shopify_tm","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_tracking_consent","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Tracking preferences."}}],"1":[{"name":"secure_customer_sig","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with customer login."}},{"name":"cart_currency","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with shopping cart."}},{"name":"ku1-sid","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Klarna","firstParty":true,"retention":"Session","session":true,"expires":1,"unit":"declDays","purpose":{"en":"Used for caching purposes."}},{"name":"ku1-vid","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Klarna","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used as visitor identifier."}},{"name":"shopify_pay_redirect","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"Cart","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"Secret","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"Secure_customer_sig","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"_ab","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with access to admin."}},{"name":"_pay_session","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"_secure_session_id","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with navigation through a storefront."}},{"name":"_shopify_country","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Cookie is placed by Shopify to store location data."}},{"name":"_shopify_m","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_shopify_tm","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_shopify_tw","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used for managing customer privacy settings."}},{"name":"_storefront_u","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used to facilitate updating customer account information."}},{"name":"_tracking_consent","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Tracking preferences."}},{"name":"cart","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with shopping cart."}},{"name":"cart_sig","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"cart_ts","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"cart_ver","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with shopping cart."}},{"name":"checkout","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"checkout_token","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"cookietest","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"master_device_id","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with merchant login."}},{"name":"previous_checkout_token","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"previous_step","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"remember_me","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"storefront_digest","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with customer login."}},{"name":"tracked_start_checkout","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used in connection with checkout."}},{"name":"_pandectes_gdpr","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Pandectes","firstParty":true,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":"Used for the functionality of the cookies consent banner."}}],"2":[{"name":"_orig_referrer","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Tracks landing pages."}},{"name":"_landing_page","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Tracks landing pages."}},{"name":"_shopify_y","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics."}}
1563,{"name":"_shopify_s","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics."}},{"name":"__cf_bm","type":"http","domain":".boldapps.net","path":"/","provider":"CloudFlare","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Used to manage incoming traffic that matches criteria associated with bots."}},{"name":"_shopify_sa_t","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics relating to marketing & referrals."}},{"name":"_shopify_sa_p","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics relating to marketing & referrals."}},{"name":"_ga","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Google","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Cookie is set by Google Analytics with unknown functionality"}},{"name":"_gid","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Google","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Cookie is placed by Google Analytics to count and track pageviews."}},{"name":"_gat","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Google","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Cookie is placed by Google Analytics to filter requests from bots."}},{"name":"_shopify_fs","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics."}}],"4":[{"name":"_y","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics."}},{"name":"_s","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Shopify","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Shopify analytics."}},{"name":"__kla_id","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Klaviyo","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Tracks when someone clicks through a Klaviyo email to your website"}},{"name":"_gcl_au","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Google","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Cookie is placed by Google Tag Manager to track conversions."}},{"name":"_fbp","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Facebook","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Cookie is placed by Facebook to track visits across websites."}},{"name":"fr","type":"http","domain":".facebook.com","path":"/","provider":"Facebook","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"Is used to deliver, measure and improve the relevancy of ads"}},{"name":"IDE","type":"http","domain":".doubleclick.net","path":"/","provider":"Google","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":"To measure the visitorsâ actions after they click through from an advert. Expires after 1 year."}},{"name":"_shopify_d\t","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":true,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}}],"8":[{"name":"localization","type":"http","domain":"altitude-coffee.co.uk","path":"/","provider":"Unknown","firstParty":false,"retention":"1 day(s)","session":false,"expires":1,"unit":"declDays","purpose":{"en":""}},{"name":"_ga_04D8XJQEBC","type":"http","domain":".altitude-coffee.co.uk","path":"/","provider":"Google","firstParty":false,"retention":"1 year(s)","session":false,"expires":1,"unit":"declYears","purpose":{"en":""}}]},"blocker":{"isActive":false,"googleConsentMode":{"id":"GTM-NZSCZVP6","analyticsId":"","adwordsId":"","isActive":true,"adStorageCategory":4,"analyticsStorageCategory":2,"personalizationStorageCategory":1,"functionalityStorageCategory":1,"customEvent":true,"securityStorageCategory":0,"redactData":true,"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":[]}}}}; 1564 1565 window.addEventListener('DOMContentLoaded', function(){ 1566 const script = document.createElement('script'); 1567 1568 script.src = "https://cdn.shopify.com/extensions/01a11687-a319-7422-b9b0-51680bbe142b/gdpr-cookie-consent-419/assets/pandectes-core.js"; 1569 1570 script.defer = true; 1571 document.body.appendChild(script); 1572 }) 1573 </script>
1573 1574 1575 1576 1577 1578 1579 1580 1581<!-- END app block --><!-- BEGIN app block: shopify://apps/wsh-wholesale-pricing/blocks/app-embed/94cbfa01-7191-4bb2-bcd8-b519b9b3bd06 -->
1581<script> 1582 1583 window.wpdExtensionIsProductPage = {"id":6253847085254,"title":"The Captainâs Roast - Espresso Blend","handle":"espresso-roast-coffee-blend","description":"\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e","published_at":"2022-10-02T15:11:31+01:00","created_at":"2021-02-22T05:47:36+00:00","vendor":"Altitude Coffee London","type":"Coffee","tags":["coffee","coffee products"],"price":1150,"price_min":1150,"price_max":4200,"available":true,"price_varies":true,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":38309800706246,"title":"250g \/ Whole Bean","option1":"250g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN250-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","public_title":"250g \/ Whole Bean","options":["250g","Whole Bean"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122000","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800804550,"title":"250g \/ Espresso - Fine Ground","option1":"250g","option2":"Espresso - Fine Ground","option3":null,"sku":"CAPTAIN250-E","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Espresso - Fine Ground","public_title":"250g \/ Espresso - Fine Ground","options":["250g","Espresso - Fine Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800837318,"title":"250g \/ Filter - Medium Ground","option1":"250g","option2":"Filter - Medium Ground","option3":null,"sku":"CAPTAIN250-F","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Filter - Medium Ground","public_title":"250g \/ Filter - Medium Ground","options":["250g","Filter - Medium Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800870086,"title":"250g \/ Press - Coarse Ground","option1":"250g","option2":"Press - Coarse Ground","option3":null,"sku":"CAPTAIN250-P","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Press - Coarse Ground","public_title":"250g \/ Press - Coarse Ground","options":["250g","Press - Coarse Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800739014,"title":"500g \/ Whole Bean","option1":"500g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN500-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 500g \/ Whole Bean","public_title":"500g \/ Whole Bean","options":["500g","Whole Bean"],"price":2200,"weight":600,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122017","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800771782,"title":"1kg \/ Whole Bean","option1":"1kg","option2":"Whole Bean","option3":null,"sku":"CAPTAIN1K-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 1kg \/ Whole Bean","public_title":"1kg \/ Whole Bean","options":["1kg","Whole Bean"],"price":4200,"weight":1190,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122024","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076","\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076"],"featured_image":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","options":["Bag Size","Grind Type"],"media":[{"alt":"The Captain's Roast Espresso Blend. Specialty coffee blend","id":33293037175102,"position":1,"preview_image":{"aspect_ratio":1.0,"height":4016,"width":4016,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"aspect_ratio":1.0,"height":4016,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","width":4016},{"alt":"The Captain's Roast coffee blend taste notes","id":34232458019134,"position":2,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076","width":2000},{"alt":"The Captain's Roast espresso blend on white background","id":33293037207870,"position":3,"preview_image":{"aspect_ratio":1.0,"height":4016,"width":4016,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076"},"aspect_ratio":1.0,"height":4016,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076","width":4016}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e"}; 1584 window.wpdExtensionIsProductPage.selected_or_first_available_variant = {"id":38309800706246,"title":"250g \/ Whole Bean","option1":"250g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN250-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","public_title":"250g \/ Whole Bean","options":["250g","Whole Bean"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122000","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}; 1585 window.wpdExtensionProductCollectionIds = "246352347334,283163361478,262795198
1585662"; 1586; 1587window.wpdExtensionIsCartPage = false; 1588 1589window.showCrossOutPrice = false; 1590window.WPDAppProxy = "/apps/wpdapp"; 1591window.showVDTableWithPrice = false; 1592window.vdBadgeLabel = "Volume Discounts"; 1593 1594 1595window.WPDMarketLocalization = ""; 1596window.WPDMoneyFormat = "£{{amount}}"; 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 window.is_wcp_wholesale_customer = false; 1626 1627 1628 window.wcp_customer = { 1629 email: "", 1630 id: "", 1631 tags: null, 1632 default_address: null, 1633 tax_exempt: false, 1634 company_id: "", 1635 location_id: "" 1636 }; 1637 1638 window.shopPermanentDomain = "altitude-coffee-london.myshopify.com"; 1639 window.wpdAPIRootUrl = "https://bdr.wholesalehelper.io/"; 1640 window.wpdHasGuestDiscounts = false; 1641</script>
1641 1642 1643 1644 1645 1646 1647<!-- END app block --><!-- BEGIN app block: shopify://apps/instafeed/blocks/head-block/c447db20-095d-4a10-9725-b5977662c9d5 --><!-- BEGIN app snippet: storefront-script --> 1648 1649 1650 1651
1651<script src="https://cdn.nfcube.com/instafeed-fe76c8d3412f38ec6f7e4fab39bbed15.js" defer></script>
1651 1652 1653 1654<!-- END app snippet --> 1655 1656 1657 1658 1659<!-- END app block --><!-- BEGIN app block: shopify://apps/bold-subscriptions/blocks/bsub-embed/9ceb49f0-5fe5-4b5e-943d-f8af8985167d -->
1660<script id="bold-subscriptions-app-embed-script" type="text/javascript" defer> 1661 1662 if (window.location.href.includes('/account/login') && false) { 1663 window.location.href = `https://altitudecoffeelondon.com/pages/manage-subscriptions`; 1664 } 1665 1666 1667 window.BOLD = window.BOLD || {}; 1668 window.BOLD.subscriptions = window.BOLD.subscriptions || {}; 1669 window.BOLD.subscriptions.config = window.BOLD.subscriptions.config || {}; 1670 window.BOLD.subscriptions.config.isAppEmbedEnabled = true; 1671 window.BOLD.subscriptions.classes = window.BOLD.subscriptions.classes || {}; 1672 window.BOLD.subscriptions.patches = window.BOLD.subscriptions.patches || {}; 1673 window.BOLD.subscriptions.patches.maxCheckoutRetries = window.BOLD.subscriptions.patches.maxCheckoutRetries || 200; 1674 window.BOLD.subscriptions.patches.currentCheckoutRetries = window.BOLD.subscriptions.patches.currentCheckoutRetries || 0; 1675 window.BOLD.subscriptions.patches.maxCashierPatchAttempts = window.BOLD.subscriptions.patches.maxCashierPatchAttempts || 200; 1676 window.BOLD.subscriptions.patches.currentCashierPatchAttempts = window.BOLD.subscriptions.patches.currentCashierPatchAttempts || 0; 1677 window.BOLD.subscriptions.config.platform = 'shopify'; 1678 window.BOLD.subscriptions.config.shopDomain = 'altitude-coffee-london.myshopify.com'; 1679 window.BOLD.subscriptions.config.customDomain = 'altitudecoffeelondon.com'; 1680 window.BOLD.subscriptions.config.shopIdentifier = '54106423494'; 1681 window.BOLD.subscriptions.config.cashierUrl = 'https://cashier.boldcommerce.com'; 1682 window.BOLD.subscriptions.config.boldAPIBase = 'https://app-api.boldapps.net/'; 1683 window.BOLD.subscriptions.config.cashierApplicationUUID = '2e6a2bbc-b12b-4255-abdf-a02af85c0d4e'; 1684 window.BOLD.subscriptions.config.appUrl = 'https://sub.boldapps.net'; 1685 window.BOLD.subscriptions.config.currencyCode = 'GBP'; 1686 window.BOLD.subscriptions.config.checkoutType = 'shopify'; 1687 window.BOLD.subscriptions.config.currencyFormat = "£\u0026#123;\u0026#123;amount}}"; 1688 window.BOLD.subscriptions.config.shopCurrencies = [{"id":2007,"currency":"GBP","currency_format":"\u0026pound;\u0026#123;\u0026#123;amount}}","created_at":"2021-03-26 10:55:27","updated_at":"2021-03-26 10:55:27"}]; 1689 window.BOLD.subscriptions.config.shopSettings = {"allow_msp_cancellation":true,"allow_msp_prepaid_renewal":true,"customer_can_pause_subscription":true,"customer_can_change_next_order_date":true,"customer_can_change_order_frequency":true,"customer_can_create_an_additional_order":true,"customer_can_use_passwordless_login":true,"customer_passwordless_login_redirect":false,"customer_can_add_products_to_existing_subscriptions":true,"customer_can_reactivate_subscription":true,"customer_can_reactivate_subscription_with_deleted_products":false,"show_currency_code":true,"stored_payment_method_policy":"required","customer_portal_path":"pages\/manage-subscriptions","display_only_subscription_products":true}; 1690 window.BOLD.subscriptions.config.customerLoginPath = null; 1691 window.BOLD.subscriptions.config.isPrepaidEnabled = window.BOLD.subscriptions.config.isPrepaidEnabled || true; 1692 window.BOLD.subscriptions.config.loadSubscriptionGroupFrom = 'default'; 1693 window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes = "default"; 1694 window.BOLD.subscriptions.config.cashierPluginOnlyMode = window.BOLD.subscriptions.config.cashierPluginOnlyMode || false; 1695 if (window.BOLD.subscriptions.config.waitForCheckoutLoader === undefined) { 1696 window.BOLD.subscriptions.config.waitForCheckoutLoader = true; 1697 } 1698 1699 window.BOLD.subscriptions.config.addToCartFormSelectors = window.BOLD.subscriptions.config.addToCartFormSelectors || []; 1700 window.BOLD.subscriptions.config.addToCartButtonSelectors = window.BOLD.subscriptions.config.addToCartButtonSelectors || []; 1701 window.BOLD.subscriptions.config.widgetInsertBeforeSelectors = window.BOLD.subscriptions.config.widgetInsertBeforeSelectors || []; 1702 window.BOLD.subscriptions.config.quickAddToCartButtonSelectors = window.BOLD.subscriptions.config.quickAddToCartButtonSelectors || []; 1703 window.BOLD.subscriptions.config.cartElementSelectors = window.BOLD.subscriptions.config.cartElementSelectors || []; 1704 window.BOLD.subscriptions.config.cartTotalElementSelectors = window.BOLD.subscriptions.config.cartTotalElementSelectors || []; 1705 window.BOLD.subscriptions.config.lineItemSelectors = window.BOLD.subscriptions.config.lineItemSelectors || []; 1706 window.BOLD.subscriptions.config.lineItemNameSelectors = window.BOLD.subscriptions.config.lineItemNameSelectors || []; 1707 window.BOLD.subscriptions.config.checkoutButtonSelectors = window.BOLD.subscriptions.config.checkoutButtonSelectors || []; 1708 1709 window.BOLD.subscriptions.config.featureFlags = window.BOLD.subscriptions.config.featureFlagOverrides || ["BE-2298-Support-Variant-Selections-In-Sub-Groups","BE-6925-remove-bold-error-code-from-error-message","BE-8664-default-address-source-bold","BE-9502-add-logs-to-investigate-infinite-loop","BE-6695-improve-subs-onboarding","BE-10096-list-deleted-variants","BE-10183-customer-portal-paginates-products","BE-10178-suppress-dup-inventory-failure-emails","BE-9073-reactivate-subscription-setting"]; 1710 window.BOLD.subscriptions.config.subscriptionProcessingFrequency = '60'; 1711 window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage = true; 1712 window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {}; 1713 1714 // Interval text markup template 1715 window.BOLD.subscriptions.config.lineItemPropertyListSelectors = window.BOLD.subscriptions.config.lineItemPropertyListSelectors || []; 1716 window.BOLD.subscriptions.config.lineItemPropertyListSelectors.push('dl.definitionList'); 1717 window.BOLD.subscriptions.config.lineItemPropertyListTemplate = window.BOLD.subscriptions.config.lineItemPropertyListTemplate || '<dl class="definitionList"></dl>'; 1718 window.BOLD.subscriptions.config.lineItemPropertyTemplate = window.BOLD.subscriptions.config.lineItemPropertyTemplate || '<dt class="definitionList-key">{{key}}:</dt><dd class="definitionList-value">{{value}}</dd>'; 1719 1720 // Discount text markup template 1721 window.BOLD.subscriptions.config.discountItemTemplate = window.BOLD.subscriptions.config.discountItemTemplate || '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>'; 1722 1723 1724 // Constants in XMLHttpRequest are not reliable, so we will create our own 1725 // reference: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState 1726 window.BOLD.subscriptions.config.XMLHttpRequest = { 1727 UNSENT:0, // Client has been created. open() not called yet. 1728 OPENED: 1, // open() has been called. 1729 HEADERS_RECEIVED: 2, // send() has been called, and headers and status are available. 1730 LOADING: 3, // Downloading; responseText holds partial data. 1731 DONE: 4 // The operation is complete. 1732 }; 1733 1734 window.BOLD.subscriptions.config.assetBaseUrl = 'https://sub.boldapps.net'; 1735 if (window.localStorage && window.localStorage.getItem('boldSubscriptionsAssetBaseUrl')) { 1736 window.BOLD.subscriptions.config.assetBaseUrl = window.localStorage.getItem('boldSubscriptionsAssetBaseUrl') 1737 } 1738 1739 window.BOLD.subscriptions.data.subscriptionGroups = []; 1740 if (localStorage && localStorage.getItem('boldSubscriptionsSubscriptionGroups')) { 1741 window.BOLD.subscriptions.data.subscriptionGroups = JSON.parse(localStorage.getItem('boldSubscriptionsSubscriptionGroups')); 1742 } else { 1743 window.BOLD.subscriptions.data.subscriptionGroups = [{"id":15599,"billing_rules":[{"id":32192,"subscription_group_id":15599,"interval_name":"1 WEEK","billing_rule":"FREQ=WEEKLY","custom_billing_rule":""},{"id":32193,"subscription_group_id":15599,"interval_name":"2 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=2","custom_billing_rule":""},{"id":136853,"subscription_group_id":15599,"interval_name":"3 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=3","custom_billing_rule":""},{"id":136854,"subscription_group_id":15599,"interval_name":"MONTHLY","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":15479,"subscription_group_id":15599,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[],"selection_options":[{"platform_entity_id":"6684319940806"}],"discount_type":"no_discount","percent_discount":0,"fixed_discount":0,"can_add_to_cart":true},{"id":15600,"billing_rules":[{"id":32195,"subscription_group_id":15600,"interval_name":"1 WEEK","billing_rule":"FREQ=WEEKLY","custom_billing_rule":""},{"id":32196,"subscription_group_id":15600,"interval_name":"2 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=2","custom_billing_rule":""},{"id":136855,"subscription_group_id":15600,"interval_name":"3 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=3","custom_billing_rule":""},{"id":136856,"subscription_group_id":15600,"interval_name":"MONTHLY","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":15480,"subscription_group_id":15600,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[],"selection_options":[{"platform_entity_id":"6684321022150"}],"discount_type":"no_discount","percent_discount":0,"fixed_discount":0,"can_add_to_cart":true},{"id":25828,"billing_rules":[{"id":54663,"subscription_group_id":25828,"interval_name":"1 WEEK","billing_rule":"FREQ=WEEKLY","custom_billing_rule":""},{"id":54664,"subscription_group_id":25828,"interval_name":"2 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=2","custom_billing_rule":""},{"id":136857,"subscription_group_id":25828,"interval_name":"3 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=3","custom_billing_rule":""},{"id":136858,"subscription_group_id":25828,"interval_name":"MONTHLY","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":25759,"subscription_group_id":25828,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[],"selection_options":[{"platform_entity_id":"7203394257094"}],"discount_type":"no_discount","percent_discount":0,"fixed_discount":0,"can_add_to_cart":true},{"id":33141,"billing_rules":[{"id":75142,"subscription_group_id":33141,"interval_name":"1 WEEK","billing_rule":"FREQ=WEEKLY","custom_billing_rule":""},{"id":75143,"subscription_group_id":33141,"interval_name":"2 WEEKS","billing_rule":"FREQ=WEEKLY","custom_billing_rule":""},{"id":136859,"subscription_group_id":33141,"interval_name":"3 WEEKS","billing_rule":"FREQ=WEEKLY;INTERVAL=3","custom_billing_rule":""},{"id":136860,"subscription_group_id":33141,"interval_name":"MONTHLY","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":32923,"subscription_group_id":33141,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[],"selection_options":[{"platform_entity_id":"8241699094846"}],"discount_type":"no_discount","percent_discount":0,"fixed_discount":0,"can_add_to_cart":true}]; 1744 } 1745 1746 window.BOLD.subscriptions.isFeatureFlagEnabled = function (featureFlag) { 1747 for (var i = 0; i < window.BOLD.subscriptions.config.featureFlags.length; i++) { 1748 if (window.BOLD.subscriptions.config.featureFlags[i] === featureFlag){ 1749 return true; 1750 } 1751 } 1752 return false;
1753 } 1754 1755 window.BOLD.subscriptions.logger = { 1756 tag: "bold_subscriptions", 1757 // the bold subscriptions log level 1758 // 0 - errors (default) 1759 // 1 - warnings + errors 1760 // 2 - info + warnings + errors 1761 // use window.localStorage.setItem('boldSubscriptionsLogLevel', x) to set the log level 1762 levels: { 1763 ERROR: 0, 1764 WARN: 1, 1765 INFO: 2, 1766 }, 1767 level: parseInt((window.localStorage && window.localStorage.getItem('boldSubscriptionsLogLevel')) || "0", 10), 1768 _log: function(callArgs, level) { 1769 if (!window.console) { 1770 return null; 1771 } 1772 1773 if (window.BOLD.subscriptions.logger.level < level) { 1774 return; 1775 } 1776 1777 var params = Array.prototype.slice.call(callArgs); 1778 params.unshift(window.BOLD.subscriptions.logger.tag); 1779 1780 switch (level) { 1781 case window.BOLD.subscriptions.logger.levels.INFO: 1782 console.info.apply(null, params); 1783 return; 1784 case window.BOLD.subscriptions.logger.levels.WARN: 1785 console.warn.apply(null, params); 1786 return; 1787 case window.BOLD.subscriptions.logger.levels.ERROR: 1788 console.error.apply(null, params); 1789 return; 1790 default: 1791 console.log.apply(null, params); 1792 return; 1793 } 1794 }, 1795 info: function() { 1796 window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.INFO); 1797 }, 1798 warn: function() { 1799 window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.WARN); 1800 }, 1801 error: function() { 1802 window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.ERROR); 1803 } 1804 } 1805 1806 window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI = function() { 1807 return window.BOLD.subscriptions.config.loadSubscriptionGroupFrom === window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes['BSUB_API']; 1808 } 1809 1810 window.BOLD.subscriptions.getSubscriptionGroupFromProductId = function (productId) { 1811 var data = window.BOLD.subscriptions.data; 1812 var foundGroup = null; 1813 for (var i = 0; i < data.subscriptionGroups.length; i += 1) { 1814 var subscriptionGroup = data.subscriptionGroups[i]; 1815 for (var j = 0; j < subscriptionGroup.selection_options.length; j += 1) { 1816 var selectionOption = subscriptionGroup.selection_options[j]; 1817 if (selectionOption.platform_entity_id === productId.toString()) { 1818 foundGroup = subscriptionGroup; 1819 break; 1820 } 1821 } 1822 if (foundGroup) { 1823 break; 1824 } 1825 } 1826 return foundGroup; 1827 }; 1828 1829 window.BOLD.subscriptions.getSubscriptionGroupById = function(subGroupId) { 1830 var subscriptionGroups = window.BOLD.subscriptions.data.subscriptionGroups; 1831 1832 for (var i = 0; i < subscriptionGroups.length; i += 1) { 1833 var subGroup = subscriptionGroups[i]; 1834 if (subGroup.id === subGroupId) { 1835 return subGroup; 1836 } 1837 } 1838 1839 return null; 1840 }; 1841 1842 window.BOLD.subscriptions.addSubscriptionGroup = function (subscriptionGroup) { 1843 if(!window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroup.id)) 1844 { 1845 window.BOLD.subscriptions.data.subscriptionGroups.push(subscriptionGroup); 1846 } 1847 } 1848 1849 window.BOLD.subscriptions.getSubscriptionGroupPrepaidDurationById = function(subscriptionGroupId, prepaidDurationId) { 1850 var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroupId); 1851 1852 if ( 1853 !subscriptionGroup 1854 || !subscriptionGroup.prepaid_durations 1855 || !subscriptionGroup.prepaid_durations.length 1856 ) { 1857 return null; 1858 } 1859 1860 for (var i = 0; i < subscriptionGroup.prepaid_durations.length; i++) { 1861 var prepaidDuration = subscriptionGroup.prepaid_durations[i]; 1862 if (prepaidDuration.id === prepaidDurationId) { 1863 return prepaidDuration; 1864 } 1865 } 1866 1867 return null; 1868 } 1869 1870 window.BOLD.subscriptions.getSubscriptionGroupBillingRuleById = function(subGroup, billingRuleId) { 1871 for (var i = 0; i < subGroup.billing_rules.length; i += 1) { 1872 var billingRule = subGroup.billing_rules[i]; 1873 if (billingRule.id === billingRuleId) { 1874 return billingRule; 1875 } 1876 } 1877 1878 return null; 1879 }; 1880 1881 window.BOLD.subscriptions.toggleDisabledAddToCartButtons = function(d) { 1882 var addToCartForms = document.querySelectorAll(window.BOLD.subscriptions.config.addToCartFormSelectors.join(',')); 1883 var disable = !!d; 1884 for (var i = 0; i < addToCartForms.length; i++) { 1885 var addToCartForm = addToCartForms[i]; 1886 var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(
1886addToCartForm); 1887 var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId); 1888 1889 if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection') ) { 1890 if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) { 1891 var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')); 1892 for (var j = 0; j < addToCartButtons.length; j++) { 1893 var addToCartButton = addToCartButtons[j]; 1894 var toggleAction = disable ? addToCartButton.setAttribute : addToCartButton.removeAttribute; 1895 1896 addToCartButton.disabled = disable; 1897 toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable); 1898 } 1899 } 1900 } else { 1901 if (subscriptionGroup) { 1902 var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')); 1903 for (var j = 0; j < addToCartButtons.length; j++) { 1904 var addToCartButton = addToCartButtons[j]; 1905 var toggleAction = disable ? addToCartButton.setAttribute : addToCartButton.removeAttribute; 1906 1907 addToCartButton.disabled = disable; 1908 toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable); 1909 } 1910 } 1911 } 1912 1913 } 1914 }; 1915 1916 window.BOLD.subscriptions.disableAddToCartButtons = function () { 1917 // only disable the add to cart buttons if the app isn't loaded yet 1918 if (!window.BOLD.subscriptions.app) { 1919 window.BOLD.subscriptions.toggleDisabledAddToCartButtons(true); 1920 } else { 1921 window.BOLD.subscriptions.enableAddToCartButtons(); 1922 } 1923 }; 1924 1925 window.BOLD.subscriptions.enableAddToCartButtons = function () { 1926 document.removeEventListener('click', window.BOLD.subscriptions.preventSubscriptionAddToCart); 1927 window.BOLD.subscriptions.toggleDisabledAddToCartButtons(false); 1928 }; 1929 1930 window.BOLD.subscriptions.toggleDisabledCheckoutButtons = function(d) { 1931 var checkoutButtons = document.querySelectorAll(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(',')); 1932 var disable = !!d; 1933 for (var i = 0; i < checkoutButtons.length; i++) { 1934 var checkoutButton = checkoutButtons[i]; 1935 var toggleAction = disable ? checkoutButton.setAttribute : checkoutButton.removeAttribute; 1936 1937 checkoutButton.disabled = disable; 1938 toggleAction.call(checkoutButton, 'data-disabled-by-subscriptions', disable); 1939 } 1940 } 1941 1942 window.BOLD.subscriptions.disableCheckoutButtons = function() { 1943 // only disable the checkout buttons if the app isn't loaded yet 1944 if (!window.BOLD.subscriptions.app) { 1945 window.BOLD.subscriptions.toggleDisabledCheckoutButtons(true); 1946 } else { 1947 window.BOLD.subscriptions.enableCheckoutButtons(); 1948 } 1949 } 1950 1951 window.BOLD.subscriptions.enableCheckoutButtons = function() { 1952 document.removeEventListener('click', window.BOLD.subscriptions.preventCheckout); 1953 window.BOLD.subscriptions.toggleDisabledCheckoutButtons(false); 1954 } 1955 1956 window.BOLD.subscriptions.hasSuccessfulAddToCarts = function() { 1957 if (typeof(Storage) !== "undefined") { 1958 var successfulAddToCarts = JSON.parse( 1959 window.localStorage.getItem('boldSubscriptionsSuccessfulAddToCarts') || '[]' 1960 ); 1961 if (successfulAddToCarts.length > 0) { 1962 return true; 1963 } 1964 } 1965 1966 return false; 1967 } 1968 1969 window.BOLD.subscriptions.hasPendingAddToCarts = function() { 1970 if (typeof(Storage) !== "undefined") { 1971 var pendingAddToCarts = JSON.parse( 1972 window.localStorage.getItem('boldSubscriptionsPendingAddToCarts') || '[]' 1973 ); 1974 if (pendingAddToCarts.length > 0) { 1975 return true; 1976 } 1977 } 1978 1979 return false;
1980 } 1981 1982 window.BOLD.subscriptions.addJSAsset = function(src, deferred) { 1983 var scriptTag = document.getElementById('bold-subscriptions-app-embed-script'); 1984 var jsElement = document.createElement('script'); 1985 jsElement.type = 'text/javascript'; 1986 jsElement.src = src; 1987 if (deferred) { 1988 jsElement.defer = true; 1989 } 1990 scriptTag.parentNode.insertBefore(jsElement, scriptTag); 1991 }; 1992 1993 window.BOLD.subscriptions.addCSSAsset = function(href) { 1994 var scriptTag = document.getElementById('bold-subscriptions-app-embed-script'); 1995 var cssElement = document.createElement('link'); 1996 cssElement.href = href; 1997 cssElement.rel = 'stylesheet'; 1998 scriptTag.parentNode.insertBefore(cssElement, scriptTag); 1999 }; 2000 2001 window.BOLD.subscriptions.loadStorefrontAssets = function loadStorefrontAssets() { 2002 var assets = window.BOLD.subscriptions.config.assets; 2003 window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.css']); 2004 window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.js'], false); 2005 }; 2006 2007 window.BOLD.subscriptions.loadCustomerPortalAssets = function loadCustomerPortalAssets() { 2008 if (document.getElementById('customer-portal-root') || document.getElementsByClassName('bsub-express-add-ons-widget')) { 2009 var assets = window.BOLD.subscriptions.config.assets; 2010 window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.css']); 2011 window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.js'], true); 2012 } 2013 }; 2014 2015 window.BOLD.subscriptions.processManifest = function() { 2016 if (!window.BOLD.subscriptions.processedManifest) { 2017 window.BOLD.subscriptions.processedManifest = true; 2018 window.BOLD.subscriptions.config.assets = JSON.parse(this.responseText); 2019 2020 2021 window.BOLD.subscriptions.loadCustomerPortalAssets(); 2022 } 2023 }; 2024 2025 window.BOLD.subscriptions.addInitialLoadingMessage = function() { 2026 var customerPortalNode = document.getElementById('customer-portal-root'); 2027 if (customerPortalNode && window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage) { 2028 customerPortalNode.innerHTML = '<div class="bold-subscriptions-loader-container"><div class="bold-subscriptions-loader"></div></div>'; 2029 } 2030 } 2031 2032 window.BOLD.subscriptions.contentLoaded = function() { 2033 window.BOLD.subscriptions.data.contentLoadedEventTriggered = true; 2034 window.BOLD.subscriptions.addInitialLoadingMessage(); 2035 2036 }; 2037 2038 window.BOLD.subscriptions.preventSubscriptionAddToCart = function(e) { 2039 if (e.target.matches(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')) && e.target.form) { 2040 var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(e.target.form); 2041 var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId); 2042 if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection')) 2043 { 2044 if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) { 2045 // This code prevents products in subscription groups from being added to the cart before the 2046 // Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the 2047 // buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually. 2048 e.preventDefault(); 2049 return false; 2050 } 2051 } else { 2052 if (subscriptionGroup) { 2053 // This code prevents products in subscription groups from being added to the cart before the 2054 // Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the 2055 // buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually. 2056 e.preventDefault(); 2057 return false;
2058 } 2059 } 2060 2061 } 2062 }; 2063 2064 window.BOLD.subscriptions.preventCheckout = function(e) { 2065 if ( 2066 e.target.matches(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(',')) 2067 && (window.BOLD.subscriptions.hasSuccessfulAddToCarts() || window.BOLD.subscriptions.hasPendingAddToCarts()) 2068 ) { 2069 // This code prevents checkouts on the shop until the Subscriptions app fully loads. 2070 // When the Subscriptions app is ready it will enable the checkout buttons itself. 2071 // Use window.BOLD.subscriptions.enableCheckoutButtons to enable them manually. 2072 e.preventDefault(); 2073 return false; 2074 } 2075 } 2076 2077 if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) { 2078 2079 document.addEventListener('DOMContentLoaded', window.BOLD.subscriptions.contentLoaded); 2080 } 2081 2082 if (!Element.prototype.matches) { 2083 Element.prototype.matches = 2084 Element.prototype.matchesSelector || 2085 Element.prototype.mozMatchesSelector || 2086 Element.prototype.msMatchesSelector || 2087 Element.prototype.oMatchesSelector || 2088 Element.prototype.webkitMatchesSelector || 2089 function(s) { 2090 var matches = (this.document || this.ownerDocument).querySelectorAll(s), 2091 i = matches.length; 2092 while (--i >= 0 && matches.item(i) !== this) {} 2093 return i > -1; 2094 }; 2095 } 2096 2097 if (!Element.prototype.closest) { 2098 Element.prototype.closest = function(s) { 2099 var el = this; 2100 2101 do { 2102 if (Element.prototype.matches.call(el, s)) return el; 2103 el = el.parentElement || el.parentNode; 2104 } while (el !== null && el.nodeType === 1); 2105 return null; 2106 }; 2107 } 2108 2109 window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons = function (isVisible) { 2110 if (window.BOLD.subscriptions.config.additionalCheckoutSelectors === undefined) { 2111 return; 2112 } 2113 2114 var selectors = window.BOLD.subscriptions.config.additionalCheckoutSelectors; 2115 2116 for (var i = 0; i < selectors.length; i++) { 2117 var elements = document.querySelectorAll(selectors[i]); 2118 2119 for (var j = 0; j < elements.length; j++) { 2120 elements[j].style.display = isVisible ? 'block' : 'none'; 2121 } 2122 } 2123 } 2124 2125 window.BOLD.subscriptions.hideAdditionalCheckoutButtons = function() { 2126 window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(false); 2127 }; 2128 2129 window.BOLD.subscriptions.showAdditionalCheckoutButtons = function() { 2130 window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(true); 2131 }; 2132 2133 window.BOLD.subscriptions.enhanceMspUrls = function(data) { 2134 var mspUrl = 'https://sub.boldapps.net/shop/7064/customer_portal'; 2135 var elements = document.querySelectorAll("a[href='"+mspUrl+"']"); 2136 2137 if(!elements.length || !data.success) { 2138 return; 2139 } 2140 2141 for (var i = 0; i < elements.length; i++) { 2142 elements[i].href = elements[i].href + "?jwt="+data.value.jwt+"&customerId="+data.value.customerId; 2143 } 2144 }; 2145 2146 if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) { 2147 window.addEventListener('load', function () { 2148 if (document.getElementById('customer-portal-root')) { 2149 window.BOLD.subscriptions.getJWT(window.BOLD.subscriptions.enhanceMspUrls); 2150 } 2151 }); 2152 2153 // This will be called immediately 2154 // Use this anonymous function to avoid polluting the global namespace 2155 (function() { 2156 var xhr = new XMLHttpRequest(); 2157 xhr.addEventListener('load', window.BOLD.subscriptions.processManifest); 2158 xhr.open('GET', window.BOLD.subscriptions.config.assetBaseUrl + '/static/manifest.json?t=' + (new Date()).getTime()); 2159 xhr.send(); 2160 })() 2161 } 2162 2163 window.BOLD.subscriptions.patches.patchCashier = function() { 2164 if (window.BOLD && window.BOLD.checkout) { 2165 window.BOLD.checkout.disable(); 2166 window.BOLD.checkout.listenerFn = window.BOLD.subscriptions.patches.cashierListenerFn; 2167 window.BOLD.checkout.enable(); 2168 } else if (window.BOLD.subscriptions.patches.currentCashierPatchAttempts < window.BOLD.subscriptions.patches.maxCashierPatchAttempts) { 2169 window.BOLD.subscriptions.patches.currentCashierPatchAttempts++; 2170 setTimeout(window.BOLD.subscriptions.patches.patchCashier, 100); 2171 } 2172 }; 2173 2174 window.BOLD.subscriptions.patches.finishCheckout = function(event, form, cart) { 2175 window.BOLD.subscriptions.patches.currentCheckoutRetries++; 2176 2177 if (!window.BOLD.subscriptions.app 2178 && window.BOLD.subscriptions.patches.currentCheckoutRetries < window.BOLD.subscriptions.patches.maxCheckoutRetries 2179 ) { 2180 setTimeout(function () { window.BOLD.subscriptions.patches.finishCheckout(event, form, cart); }, 100); 2181 return; 2182 } else if (window.BOLD.subscriptions.app) { 2183 window.BOLD.subscriptions.patches.currentCheckoutRetries = 0; 2184 window.BOLD.subscriptions.app.addCartParams(form, cart); 2185 } 2186 2187 var noSubscriptions = false;
2188 if ((window.BOLD.subscriptions.app && window.BOLD.subscriptions.app.successfulAddToCarts.length === 0) 2189 || !window.BOLD.subscriptions.app 2190 ) { 2191 noSubscriptions = true; 2192 event.target.dataset.cashierConfirmedNoPlugins = true; 2193 2194 if (window.BOLD.subscriptions.setCashierFeatureToken) { 2195 window.BOLD.subscriptions.setCashierFeatureToken(false); 2196 } 2197 } 2198 2199 if ((noSubscriptions && window.BOLD.subscriptions.config.cashierPluginOnlyMode) 2200 || (typeof BOLD.checkout.isFeatureRequired === 'function' && !BOLD.checkout.isFeatureRequired()) 2201 ) { 2202 // send them to the original checkout when in plugin only mode 2203 // and either BSUB is there but there are no subscription products 2204 // or BSUB isn't there at all 2205 if (form.dataset.old_form_action) { 2206 form.action = form.dataset.old_form_action; 2207 } 2208 event.target.click(); 2209 } else { 2210 // sends them to Cashier since BSUB got a chance to add it's stuff 2211 // and plugin only mode is not enabled 2212 form.submit(); 2213 } 2214 }; 2215</script>
vendor: 1 bytes, line 2215
2215
2216<script id="bold-subscriptions-app-embed-platform-script" type="text/javascript" defer> 2217 window.BOLD.subscriptions.config.shopPlatformId = '54106423494'; 2218 window.BOLD.subscriptions.config.appSlug = 'subscriptions'; 2219 2220 window.BOLD = window.BOLD || {}; 2221 window.BOLD.subscriptions = window.BOLD.subscriptions || {}; 2222 window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {}; 2223 window.BOLD.subscriptions.data.platform = window.BOLD.subscriptions.data.platform || {}; 2224 window.BOLD.subscriptions.data.platform.customer = { id: '' }; 2225 window.BOLD.subscriptions.data.platform.product = {"id":6253847085254,"title":"The Captainâs Roast - Espresso Blend","handle":"espresso-roast-coffee-blend","description":"\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e","published_at":"2022-10-02T15:11:31+01:00","created_at":"2021-02-22T05:47:36+00:00","vendor":"Altitude Coffee London","type":"Coffee","tags":["coffee","coffee products"],"price":1150,"price_min":1150,"price_max":4200,"available":true,"price_varies":true,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":38309800706246,"title":"250g \/ Whole Bean","option1":"250g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN250-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","public_title":"250g \/ Whole Bean","options":["250g","Whole Bean"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122000","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800804550,"title":"250g \/ Espresso - Fine Ground","option1":"250g","option2":"Espresso - Fine Ground","option3":null,"sku":"CAPTAIN250-E","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Espresso - Fine Ground","public_title":"250g \/ Espresso - Fine Ground","options":["250g","Espresso - Fine Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800837318,"title":"250g \/ Filter - Medium Ground","option1":"250g","option2":"Filter - Medium Ground","option3":null,"sku":"CAPTAIN250-F","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Filter - Medium Ground","public_title":"250g \/ Filter - Medium Ground","options":["250g","Filter - Medium Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800870086,"title":"250g \/ Press - Coarse Ground","option1":"250g","option2":"Press - Coarse Ground","option3":null,"sku":"CAPTAIN250-P","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Press - Coarse Ground","public_title":"250g \/ Press - Coarse Ground","options":["250g","Press - Coarse Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800739014,"title":"500g \/ Whole Bean","option1":"500g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN500-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 500g \/ Whole Bean","public_title":"500g \/ Whole Bean","options":["500g","Whole Bean"],"price":2200,"weight":600,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122017","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800771782,"title":"1kg \/ Whole Bean","option1":"1kg","option2":"Whole Bean","option3":null,"sku":"CAPTAIN1K-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 1kg \/ Whole Bean","public_title":"1kg \/ Whole Bean","options":["1kg","Whole Bean"],"price":4200,"weight":1190,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122024","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076","\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076"],"featured_image":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","options":["Bag Size","Grind Type"],"media":[{"alt":"The Captain's Roast Espresso Blend. Specialty coffee blend","id":33293037175102,"position":1,"preview_image":{"aspect_ratio":1.0,"height":4016,"width":4016,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"aspect_ratio":1.0,"height":4016,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","width":4016},{"alt":"The Captain's Roast coffee blend taste notes","id":34232458019134,"position":2,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076","width":2000},{"alt":"The Captain's Roast espresso blend on white background","id":33293037207870,"position":3,"preview_image":{"aspect_ratio":1.0,"height":4016,"width":4016,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076"},"aspect_ratio":1.0,"height":4016,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076","width":4016}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e"}; 2226 window.BOLD.subscriptions.data.platform.products = []; 2227 window.BOLD.subscriptions.data.platform.variantProductMap = {}; 2228 2229 window.BOLD.subscriptions.getProductByVariantId = function(variantId) { 2230 if (window.BOLD.subscriptions.data.platform.product && 2231 window.BOLD.subscriptions.data.platform.product.variants) { 2232 for (var i = 0; i < window.BOLD.subscriptions.data.platform.product.variants.length; i++) { 2233 if (window.BOLD.subscriptions.data.platform.product.variants[i].id === variantId) { 2234 return window.BOLD.subscriptions.data.platform.product; 2235 } 2236 } 2237 } 2238 2239 if (window.BOLD.subscriptions.data.platform.variantProductMap[variantId]) { 2240 return window.BOLD.subscriptions.data.platform.variantProductMap[variantId]; 2241 } 2242 2243 var productElements = document.querySelectorAll('[data-product-id]'); 2244 for (var i = 0; i < productElements.length; i++) { 2245 var productJsonElement = productElements[i].querySelector('[data-product-json]'); 2246 2247 if (productJsonElement) { 2248 try { 2249 var productData = JSON.parse(productJsonElement.textContent); 2250 if (productData && productData.variants) { 2251 for (var j = 0; j < productData.variants.length; j++) { 2252 if (productData.variants[j].id === variantId) { 2253 return productData; 2254 } 2255 } 2256 } 2257 } catch (e) { 2258 // Continue if parsing fails 2259 } 2260 } 2261 } 2262 2263 return null; 2264 } 2265 2266 window.BOLD.subscriptions.config.addToCartFormSelectors.push( 2267 '.product-form.product-form-product-template:not(.bold-subscriptions-no-widget)' 2268 ,'.product-form.product-form--payment-button:not(.bold-subscriptions-no-widget)' 2269 ); 2270 window.BOLD.subscriptions.config.addToCartButtonSelectors.push('[type="submit"]'); 2271 window.BOLD.subscriptions.config.quickAddToCartButtonSelectors.push('a[data-event-type="product-click"]'); 2272 window.BOLD.subscriptions.config.widgetInsertBeforeSelectors.push('[type="submit"]'); 2273 window.BOLD.subscriptions.config.cartElementSelectors.push('form[action="/cart"]'); 2274 window.BOLD.subscriptions.config.cartTotalElementSelectors.push('[data-cart-subtotal]', '.text-right .ajaxcart__subtotal'); 2275 window.BOLD.subscriptions.config.checkoutButtonSelectors.push( 2276 '[name="checkout"]', 2277 '[href*="checkout"]:not([href*="tools/checkout"])', 2278 '[onclick*="checkout"]:not([onclick*="tools/checkout"])', 2279 ); 2280 2281 // Discount text markup template 2282 2283 window.BOLD.subscriptions.config.discountItemTemplate = '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>'; 2284 2285 2286 window.BOLD.subscriptions.getProductIdFromAddToCartForm = function(addToCartForm) { 2287 var idInput = addToCartForm.querySelector('[name="id"]'); 2288 if (idInput === null) { 2289 window.BOLD.subscriptions.logger.error('could not get variant id input from add to cart form â make sure your form has an input with [name="id"]') 2290 return null; 2291 } 2292 2293 var variantId = parseInt(idInput.value, 10); 2294 if (isNaN(variantId)) { 2295 window.BOLD.subscriptions.logger.error('could not parse variant id from [name="id"] input') 2296 return null; 2297 } 2298 2299 var product = window.BOLD.subscriptions.getProductByVariantId(variantId); 2300 2301 if (product === undefined || product === null) { 2302 window.BOLD.subscriptions.logger.error('could not find product data for variant id ' + variantId + ' â product data may not be available on this page') 2303 return null; 2304 } 2305 2306 return product.id; 2307 }; 2308 2309 window.BOLD.subscriptions.getAddToCartForms = function() { 2310 var forms = [];
2311 var idInputs = document.querySelectorAll('[name="id"]'); 2312 2313 for (var i = 0; i < idInputs.length; i++) { 2314 var idInput = idInputs[i]; 2315 var form = idInput.closest('form:not(.bold-subscriptions-no-widget)'); 2316 if (form) { 2317 forms.push(form); 2318 } 2319 } 2320 2321 return forms; 2322 }; 2323 2324 window.BOLD.subscriptions.getJWT = function (callback) { 2325 if(window.BOLD.subscriptions.data.platform.customer.id !== '') { 2326 var shopPlatformId = '54106423494'; 2327 var appSlug = 'subscriptions'; 2328 var customerPlatformId = window.BOLD.subscriptions.data.platform.customer.id; 2329 var proxyPath = '/apps/app-proxy/customers/v1/shops/'+shopPlatformId+'/apps/'+appSlug+'/customers/pid/'+customerPlatformId+'/jwt'; 2330 2331 var xmlhttp = new XMLHttpRequest(); 2332 2333 xmlhttp.onreadystatechange = function() { 2334 if (xmlhttp.readyState === window.BOLD.subscriptions.config.XMLHttpRequest.DONE) { 2335 if (xmlhttp.status === 200) { 2336 var data = JSON.parse(xmlhttp.responseText); 2337 callback({ 2338 success: true, 2339 value: { 2340 jwt: data.bold_platform_jwt, 2341 customerId: window.BOLD.subscriptions.data.platform.customer.id, 2342 }, 2343 }); 2344 } else if (xmlhttp.status === 404) { 2345 callback({ 2346 success: false, 2347 error: 'not_logged_in', 2348 }); 2349 } else { 2350 callback({ 2351 success: false, 2352 error: 'unknown', 2353 }); 2354 } 2355 } 2356 }; 2357 2358 xmlhttp.open("GET", proxyPath, true); 2359 xmlhttp.setRequestHeader('Accept', 'application/liquid'); 2360 xmlhttp.send(); 2361 } else { 2362 callback({ 2363 success: false, 2364 error: 'not_logged_in', 2365 }); 2366 } 2367 }; 2368 2369 window.BOLD.subscriptions.setCashierFeatureToken = function(value) { 2370 if (window.BOLD.checkout_features_defaults && window.BOLD.subscriptions.config.cashierApplicationUUID) { 2371 window.BOLD.checkout_features_defaults.forEach(function(item) { 2372 if (item.id === window.BOLD.subscriptions.config.cashierApplicationUUID) { 2373 item.require = value; 2374 } 2375 }); 2376 } 2377 }; 2378 2379 // Cashier patches 2380 window.BOLD.subscriptions.patches.cashierListenerFn = function(event) { 2381 if (window.BOLD.checkout.isCheckoutButton(event.target) && window.BOLD.checkout.isEnabled()) { 2382 window.BOLD.subscriptions.patches.pushToCashier(event); 2383 } else if(window.BOLD.checkout.isCheckoutButton(event.target) && typeof window.cashier_installed_on_site === 'undefined') { 2384 var request = new XMLHttpRequest(); 2385 request.open('HEAD', '/apps/checkout/isInstalled', false); 2386 request.send(null); 2387 2388 if(request.status >= 200 && request.status < 400) { 2389 window.BOLD.subscriptions.patches.pushToCashier(event); 2390 } else { 2391 window.cashier_installed_on_site = false; 2392 } 2393 } 2394 }; 2395 2396 window.BOLD.subscriptions.localTime = function() { 2397 var localDate = new Date(); 2398 return localDate.getTime(); 2399 }; 2400 2401 2402 window.BOLD.subscriptions.patches.pushToCashier = function(event) { 2403 event.preventDefault(); 2404 var form = window.BOLD.checkout.getForm(event.target); 2405 var formData = new FormData(form); 2406 var request = new XMLHttpRequest(); 2407 request.open('POST', '/cart/update.js?tmp=' + Date.now(), true); 2408 request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 2409 2410 request.onload = function() { 2411 if (request.status >= 200 && request.status < 400) { 2412 // Success! 2413 var cart = JSON.parse(request.responseText); 2414 2415 // If items are empty redirect back to the cart 2416 if (cart.items.length === 0) { 2417 return window.location.href = '/cart'; 2418 } 2419
2420 cart.items.forEach(function(element) { 2421 delete element.product_description; 2422 }); 2423 2424 if (document.getElementById('CartSpecialInstructions')) { 2425 // If the cart note exists, grab its value 2426 cart.note = document.getElementById('CartSpecialInstructions').value; 2427 } 2428 2429 var cartObj = JSON.stringify(cart); 2430 2431 var form = window.BOLD.checkout.getForm(event.target); 2432 form.dataset.old_form_action = form.action; 2433 form.action = '/apps/checkout/begin-checkout' + googleAnalyticsGetParamString({}); 2434 var cartCookie = window.BOLD.checkout.getCookie('cart'); 2435 var element = document.createElement('INPUT'); 2436 element.type = 'HIDDEN'; 2437 element.name = 'cart_id'; 2438 element.value = cartCookie; 2439 form.appendChild(element); 2440 2441 var dateElement = document.createElement('INPUT'); 2442 dateElement.type = 'HIDDEN'; 2443 dateElement.name = 'checkout_local_time'; 2444 dateElement.value = window.BOLD.subscriptions.localTime(); 2445 form.appendChild(dateElement); 2446 2447 var cartElement = document.createElement('INPUT'); 2448 cartElement.type = 'HIDDEN'; 2449 cartElement.name = 'cart'; 2450 cartElement.value = cartObj; 2451 form.appendChild(cartElement); 2452 form.method = 'POST'; 2453 2454 if(window.BOLD && window.BOLD.checkout && typeof window.BOLD.checkout.languageIsoCode === 'string') { 2455 var langInput = document.createElement('INPUT'); 2456 langInput.type = 'HIDDEN'; 2457 langInput.name = 'language_iso'; 2458 langInput.value = window.BOLD.checkout.languageIsoCode; 2459 form.appendChild(langInput); 2460 } 2461 2462 if (window.BOLD && window.BOLD.common && typeof window.BOLD.common.eventEmitter === 'object' && typeof window.BOLDCURRENCY !== 'undefined') { 2463 window.BOLD.common.eventEmitter.emit('BOLD_CASHIER_checkout', {target: form}); 2464 } 2465 2466 window.BOLD.subscriptions.patches.finishCheckout(event, form, cart); 2467 } 2468 }; 2469 2470 request.send(formData); 2471 }; 2472 2473 2474</script>
2474 2475 2476 2477<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490
2490<script async src="https://static.klaviyo.com/onsite/js/VmaSRx/klaviyo.js?company_id=VmaSRx"></script>
2490 2491
2491<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>
2491 2492 2493 2494
2494<script id="viewed_product"> 2495 if (item == null) { 2496 var _learnq = _learnq || []; 2497 2498 var MetafieldReviews = null 2499 var MetafieldYotpoRating = null 2500 var MetafieldYotpoCount = null 2501 var MetafieldLooxRating = null 2502 var MetafieldLooxCount = null 2503 var okendoProduct = null 2504 var okendoProductReviewCount = null 2505 var okendoProductReviewAverageValue = null 2506 try { 2507 // The following fields are used for Customer Hub recently viewed in order to add reviews. 2508 // This information is not part of __kla_viewed. Instead, it is part of __kla_viewed_reviewed_items 2509 MetafieldReviews = {"rating":{"scale_min":"1.0","scale_max":"5.0","value":"4.9395"},"rating_count":248}; 2510 MetafieldYotpoRating = null 2511 MetafieldYotpoCount = null 2512 MetafieldLooxRating = null 2513 MetafieldLooxCount = null 2514 2515 okendoProduct = null 2516 // If the okendo metafield is not legacy, it will error, which then requires the new json formatted data 2517 if (okendoProduct && 'error' in okendoProduct) { 2518 okendoProduct = null 2519 } 2520 okendoProductReviewCount = okendoProduct ? okendoProduct.reviewCount : null 2521 okendoProductReviewAverageValue = okendoProduct ? okendoProduct.reviewAverageValue : null 2522 } catch (error) { 2523 console.error('Error in Klaviyo onsite reviews tracking:', error); 2524 } 2525 2526 var item = { 2527 Name: "The Captainâs Roast - Espresso Blend", 2528 ProductID: 6253847085254, 2529 Categories: ["Award Winning Coffee Blends","Christmas At Altitude Coffee London","Coffee"], 2530 ImageURL: "https://altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_grande.jpg?v=1680956690", 2531 URL: "https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend", 2532 Brand: "Altitude Coffee London", 2533 Price: "£11.50", 2534 Value: "11.50", 2535 CompareAtPrice: "£0.00" 2536 }; 2537 _learnq.push(['track', 'Viewed Product', item]); 2538 _learnq.push(['trackViewedItem', { 2539 Title: item.Name, 2540 ItemId: item.ProductID, 2541 Categories: item.Categories, 2542 ImageUrl: item.ImageURL, 2543 Url: item.URL, 2544 Metadata: { 2545 Brand: item.Brand, 2546 Price: item.Price, 2547 Value: item.Value, 2548 CompareAtPrice: item.CompareAtPrice 2549 }, 2550 metafields:{ 2551 reviews: MetafieldReviews, 2552 yotpo:{ 2553 rating: MetafieldYotpoRating, 2554 count: MetafieldYotpoCount, 2555 }, 2556 loox:{ 2557 rating: MetafieldLooxRating, 2558 count: MetafieldLooxCount, 2559 }, 2560 okendo: { 2561 rating: okendoProductReviewAverageValue, 2562 count: okendoProductReviewCount, 2563 } 2564 } 2565 }]); 2566 } 2567 </script>
2567 2568 2569 2570 2571 2572 2573
2573<script> 2574 window.klaviyoReviewsProductDesignMode = false 2575 </script>
2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585<!-- END app block --><!-- BEGIN app block: shopify://apps/tabs-studio/blocks/global_embed_block/19980fb9-f2ca-4ada-ad36-c0364c3318b8 --> 2586<style id="tabs-by-station-custom-styles"> 2587 .station-tabs .station-tabs-link{margin:0px 14px 14px 0px !important;border-radius:5px !important;padding:8px 14px 8px 14px !important;font-weight:500 !important;color:#474747 !important;border-color:#474747 !important;border-style:solid !important;border-width:1px !important;}.station-tabs.mod-full-width .station-tabs-link, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-link{margin:0 0 14px !important;padding:12px 18px !important;}.station-tabs .station-tabs-tab{margin:0px 14px 14px 0px !important;border-radius:5px !important;padding:8px 14px 8px 14px !important;font-weight:500 !important;color:#474747 !important;border-color:#474747 !important;border-style:solid !important;border-width:1px !important;}.station-tabs.mod-full-width .station-tabs-tab, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-tab{margin:0 0 14px !important;padding:12px 18px !important;}.station-tabs .station-tabs-content-inner > :first-child{margin-top:0 !important;}.station-tabs .station-tabs-tabcontent > :first-child{margin-top:0 !important;}.station-tabs .station-tabs-content-inner > :last-child{margin-bottom:0 !important;}.station-tabs .station-tabs-tabcontent > :last-child{margin-bottom:0 !important;}.station-tabs .station-tabs-link:hover{color:#fff !important;background-color:#F6F6F6 !important;}.station-tabs .station-tabs-tab:hover{color:#fff !important;background-color:#F6F6F6 !important;}.station-tabs .station-tabs-link.is-active:hover{color:#fff !important;background-color:#F6F6F6 !important;}.station-tabs .station-tabs-tab.is-active:hover{color:#fff !important;background-color:#F6F6F6 !important;}[data-station-tabs-app] .station-tabs{justify-content:center !important;}.station-tabs .station-tabs-tabset{justify-content:center !important;}.station-tabs .station-tabs-link.is-active{color:#474747 !important;}.station-tabs .station-tabs-tab.is-active{color:#474747 !important;}.station-tabs .station-tabs-content-inner{margin:8px 0px 0px 0px !important;padding:0px 10px 0px 10px !important;}.station-tabs.mod-full-width .station-tabs-content-inner, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-content-inner{margin:0 !important;padding:12px 18px 36px 18px !important;}.station-tabs .station-tabs-tabcontent{margin:8px 0px 0px 0px !important;padding:0px 10px 0px 10px !important;}.station-tabs.mod-full-width .station-tabs-tabcontent, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-tabcontent{margin:0 !important;padding:12px 18px 36px 18px !important;}.station-tabs.mod-full-width .station-tabs-link:last-of-type, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-link:last-of-type{margin:0 !important;}.station-tabs.mod-full-width .station-tabs-tabtitle:last-of-type .station-tabs-tab, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-tabtitle:last-of-type .station-tabs-tab{margin:0 !important;} 2588 .product-app--container { 2589 max-width: 1200px; 2590 margin: auto; 2591} 2592</style> 2593
2594<script id="station-tabs-data-json" type="application/json">{ 2595 "globalAbove": null, 2596 "globalBelow": null, 2597 "proTabsHTML": "", 2598 "productTitle": "The Captainâs Roast - Espresso Blend", 2599 "productDescription": "\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e" 2600}</script>
2600<script> 2601 document.documentElement.classList.add('tabsst-loading'); 2602 document.addEventListener('stationTabsLegacyAPILoaded', function(e) { 2603 e.detail.isLegacy = true; 2604 e.detail.settings.init_on_load = false; 2605 }); 2606 2607 document.addEventListener('stationTabsAPIReady', function(e) { 2608 var Tabs = e.detail; 2609 2610 if (Tabs.appSettings) { 2611 Tabs.appSettings = {"default_tab":true,"default_tab_title":"","show_stop_element":true,"layout":"horizontal","layout_breakpoint":768,"deep_links":false,"clean_content_level":"basic_tags","content_classnames":null,"open_first_tab":true,"allow_multiple_open":false,"remove_empty_tabs":false,"default_tab_translations":null,"start_tab_element":"h4"}; 2612 Tabs.appSettings = {lang: 'en'}; 2613 2614 Tabs.appSettings = { 2615 indicatorType: "chevrons", 2616 indicatorPlacement: "after" 2617 }; 2618 } 2619 2620 if (Tabs.isLegacy) { return; } 2621 Tabs.init(); 2622 }); 2623 2624 2625</script>
2625 2626<!-- END app block -->
2626<script src="https://cdn.shopify.com/extensions/01a0fd26-7ac2-744c-b8be-62b575756472/tabs-studio-40/assets/s3340b1d9cf54.js" type="text/javascript" defer="defer"></script>
2626 2627<link href="https://cdn.shopify.com/extensions/01a0fd26-7ac2-744c-b8be-62b575756472/tabs-studio-40/assets/ccf2dff1a1a65.css" rel="stylesheet" type="text/css" media="all"> 2628<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
2629<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: 54106423494,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};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 2629
2629
2630<script> 2631 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 2632</script>
vendor: 1 bytes, line 2632
2632
2633<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}
2633).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: 54106423494,storefrontBaseUrl: "https://altitudecoffeelondon.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://altitudecoffeelondon.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab"],webPixelsConfigList: [{"id":"2129363323","configuration":"{\"accountID\":\"123456789\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"33ee5eb3a4f7f4f7c9649d0a1cdb3908","type":"APP","apiClientId":1363407,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
2633,"dataSharingState":"unrestricted"},{"id":"2122744187","configuration":"{\"accountID\":\"VmaSRx\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"884244859","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-P4R6SN47ZG\\\",\\\"GT-5R3FV3P\\\"],\\\"target_country\\\":\\\"GB\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/GuFiCJfE1f0BEJ22iacC\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/3tgNCJrE1f0BEJ22iacC\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-P4R6SN47ZG\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/1OBjCJHE1f0BEJ22iacC\\\",\\\"MC-YM7J3FRB2H\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-P4R6SN47ZG\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/EDFNCI7E1f0BEJ22iacC\\\",\\\"MC-YM7J3FRB2H\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/9Z24CIvE1f0BEJ22iacC\\\",\\\"MC-YM7J3FRB2H\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-P4R6SN47ZG\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/6YMSCJ3E1f0BEJ22iacC\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-P4R6SN47ZG\\\",\\\"AW-618814237\\\/SBwKCJTE1f0BEJ22iacC\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-P4R6SN47ZG\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"405766462","configuration":"{\"pixel_id\":\"354249629218088\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"89653566","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Sweet Analytics"},{"id":"207913339","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":[],"name":"Google Tag Manager"},{"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":"Altitude Coffee London","paymentSettings":{"currencyCode":"GBP"},"myshopifyDomain":"altitude-coffee-london.myshopify.com","countryCode":"GB","storefrontUrl":"https:\/\/altitudecoffeelondon.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":11.5,"currencyCode":"GBP"},"product":{"title":"The Captainâs Roast - Espresso Blend","vendor":"Altitude Coffee London","id":"6253847085254","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","type":"Coffee"},"id":"38309800706246","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"sku":"CAPTAIN250-WB","title":"250g \/ Whole Bean","untranslatedTitle":"250g \/ Whole Bean"},{"price":{"amount":11.5,"currencyCode":"GBP"},"product":{"title":"The Captainâs Roast - Espresso Blend","vendor":"Altitude Coffee London","id":"6253847085254","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","type":"Coffee"},"id":"38309800804550","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"sku":"CAPTAIN250-E","title":"250g \/ Espresso - Fine Ground","untranslatedTitle":"250g \/ Espresso - Fine Ground"},{"price":{"amount":11.5,"currencyCode":"GBP"},"product":{"title":"The Captainâs Roast - Espresso Blend","vendor":"Altitude Coffee London","id":"6253847085254","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","type":"Coffee"},"id":"38309800837318","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"sku":"CAPTAIN250-F","title":"250g \/ Filter - Medium Ground","untranslatedTitle":"250g \/ Filter - Medium Ground"},{"price":{"amount":11.5,"currencyCode":"GBP"},"product":{"title":"The Captainâs Roast - Espresso Blend","vendor":"Altitude Coffee London","id":"6253847085254","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","type":"Coffee"},"id":"38309800870086","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"sku":"CAPTAIN250-P","title":"250g \/ Press - Coarse Ground","untranslatedTitle":"250g \/ Press - Coarse Ground"},{"price":{"amount":22.0,"currencyCode":"GBP"},"product":{"title":"The Captainâs Roast - Espresso Blend","vendor":"Altitude Coffee London","id":"6253847085254","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","type":"Coffee"},"id":"38309800739014","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"sku":"CAPTAIN500-WB","title":"500g \/ Whole Bean","untranslatedTitle":"500g \/ Whole Bean"},{"price":{"amount":42.0,"currencyCode":"GBP"},"product":{"title":"The Captainâs Roast - Espresso Blend","vendor":"Altitude Coffee London","id":"6253847085254","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","type":"Coffee"},"id":"38309800771782","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"sku":"CAPTAIN1K-WB","title":"1kg \/ Whole Bean","untranslatedTitle":"1kg \/ Whole Bean"}
2633],"products":[{"id":"6253847085254","handle":"espresso-roast-coffee-blend","isCollective":null,"title":"The Captainâs Roast - Espresso Blend","type":"Coffee","untranslatedTitle":"The Captainâs Roast - Espresso Blend","url":"\/products\/espresso-roast-coffee-blend","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"38309800706246","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"price":{"amount":11.5,"currencyCode":"GBP"},"sku":"CAPTAIN250-WB","title":"250g \/ Whole Bean","untranslatedTitle":"250g \/ Whole Bean"},{"id":"38309800804550","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"price":{"amount":11.5,"currencyCode":"GBP"},"sku":"CAPTAIN250-E","title":"250g \/ Espresso - Fine Ground","untranslatedTitle":"250g \/ Espresso - Fine Ground"},{"id":"38309800837318","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"price":{"amount":11.5,"currencyCode":"GBP"},"sku":"CAPTAIN250-F","title":"250g \/ Filter - Medium Ground","untranslatedTitle":"250g \/ Filter - Medium Ground"},{"id":"38309800870086","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"price":{"amount":11.5,"currencyCode":"GBP"},"sku":"CAPTAIN250-P","title":"250g \/ Press - Coarse Ground","untranslatedTitle":"250g \/ Press - Coarse Ground"},{"id":"38309800739014","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"price":{"amount":22.0,"currencyCode":"GBP"},"sku":"CAPTAIN500-WB","title":"500g \/ Whole Bean","untranslatedTitle":"500g \/ Whole Bean"},{"id":"38309800771782","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"price":{"amount":42.0,"currencyCode":"GBP"},"sku":"CAPTAIN1K-WB","title":"1kg \/ Whole Bean","untranslatedTitle":"1kg \/ Whole Bean"}]},{"id":"8227241853246","handle":"award-winning-blends-collection","isCollective":null,"title":"Award Winning Blends Collection","type":"Coffee","untranslatedTitle":"Award Winning Blends Collection","url":"\/products\/award-winning-blends-collection","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"44930187395390","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/Blend4PackShotMap.jpg?v=1681398670"},"price":{"amount":44.0,"currencyCode":"GBP"},"sku":"4BLEND-WB","title":"Whole Bean","untranslatedTitle":"Whole Bean"}]},{"id":"6604448301254","handle":"altitude-coffee-london-selection-box","isCollective":null,"title":"Specialty Coffee Premium Collection","type":"Coffee","untranslatedTitle":"Specialty Coffee Premium Collection","url":"\/products\/altitude-coffee-london-selection-box","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"39531106959558","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/SpecialtyCollectionMap.jpg?v=1681399025"},"price":{"amount":44.0,"currencyCode":"GBP"},"sku":"SELECTION4-WB","title":"Whole Bean","untranslatedTitle":"Whole Bean"}]},{"id":"6660207050950","handle":"blends-triple-pack","isCollective":null,"title":"Award Winning Blends Triple Pack","type":"Coffee","untranslatedTitle":"Award Winning Blends Triple Pack","url":"\/products\/blends-triple-pack","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"39749244256454","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/BlendsTripleMap.jpg?v=1681399776"},"price":{"amount":29.95,"currencyCode":"GBP"},"sku":"3BLEND250-WB","title":"Whole Bean","untranslatedTitle":"Whole Bean"}]},{"id":"6691463069894","handle":"single-origins-triple-pack","isCollective":null,"title":"Single Origins Triple Pack","type":"Coffee","untranslatedTitle":"Single Origins Triple Pack","url":"\/products\/single-origins-triple-pack","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"39866565951686","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/SingleOriginTripleMap.jpg?v=1681399289"},"price":{"amount":39.0,"currencyCode":"GBP"},"sku":"SINGLE3-WB","title":"Whole Bean","untranslatedTitle":"Whole Bean"}
2633]},{"id":"6602322772166","handle":"blends-discovery-pack","isCollective":null,"title":"Blends Discovery Twin Pack","type":"Coffee","untranslatedTitle":"Blends Discovery Twin Pack","url":"\/products\/blends-discovery-pack","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"39523510190278","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/BlendsTwinMap.jpg?v=1681399610"},"price":{"amount":19.95,"currencyCode":"GBP"},"sku":"BLENDPACK250-WB","title":"Whole Bean","untranslatedTitle":"Whole Bean"}]},{"id":"6602351444166","handle":"single-origins-discovery-twin-pack","isCollective":null,"title":"Single Origins Discovery Twin Pack","type":"Coffee","untranslatedTitle":"Single Origins Discovery Twin Pack","url":"\/products\/single-origins-discovery-twin-pack","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"39523652960454","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/SingleOriginTwinMap.jpg?v=1681399209"},"price":{"amount":22.0,"currencyCode":"GBP"},"sku":"SINGLETWIN250-WB","title":"Whole Bean","untranslatedTitle":"Whole Bean"}]},{"id":"6647063249094","handle":"specialty-coffee-blend-the-adventurer","isCollective":null,"title":"The Adventurer Blend","type":"Coffee","untranslatedTitle":"The Adventurer Blend","url":"\/products\/specialty-coffee-blend-the-adventurer","vendor":"Altitude Coffee London","remoteShopId":null,"variants":[{"id":"39708833448134","image":{"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/AdventurerMap.jpg?v=1680956655"},"price":{"amount":11.5,"currencyCode":"GBP"},"sku":"ADVEN250-WB","title":"250g \/ Whole Bean","untranslatedTitle":"250g \/ Whole Bean"}]}],"purchasingCompany":null},},"https://altitudecoffeelondon.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"182430302587","themePublished":"true","eventMetadataId":"13223386-16d4-49c7-9135-d0ac81674b08","pageType":"product","resourceId":"6253847085254","shopId":"54106423494","storefrontBaseUrl":"https:\/\/altitudecoffeelondon.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":11.5,\"currencyCode\":\"GBP\"},\"product\":{\"title\":\"The Captainâs Roast - Espresso Blend\",\"vendor\":\"Altitude Coffee London\",\"id\":\"6253847085254\",\"untranslatedTitle\":\"The Captainâs Roast - Espresso Blend\",\"url\":\"\/products\/espresso-roast-coffee-blend\",\"type\":\"Coffee\"},\"id\":\"38309800706246\",\"image\":{\"src\":\"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690\"},\"sku\":\"CAPTAIN250-WB\",\"title\":\"250g \/ Whole Bean\",\"untranslatedTitle\":\"250g \/ Whole Bean\"}}]]"});})();</script>
2633<script> 2634 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 2635 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 2636 window.ShopifyAnalytics.meta.currency = 'GBP'; 2637 var meta = {"product":{"id":6253847085254,"gid":"gid:\/\/shopify\/Product\/6253847085254","vendor":"Altitude Coffee London","type":"Coffee","handle":"espresso-roast-coffee-blend","variants":[{"id":38309800706246,"price":1150,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","public_title":"250g \/ Whole Bean","sku":"CAPTAIN250-WB"},{"id":38309800804550,"price":1150,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Espresso - Fine Ground","public_title":"250g \/ Espresso - Fine Ground","sku":"CAPTAIN250-E"},{"id":38309800837318,"price":1150,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Filter - Medium Ground","public_title":"250g \/ Filter - Medium Ground","sku":"CAPTAIN250-F"},{"id":38309800870086,"price":1150,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Press - Coarse Ground","public_title":"250g \/ Press - Coarse Ground","sku":"CAPTAIN250-P"},{"id":38309800739014,"price":2200,"name":"The Captainâs Roast - Espresso Blend - 500g \/ Whole Bean","public_title":"500g \/ Whole Bean","sku":"CAPTAIN500-WB"},{"id":38309800771782,"price":4200,"name":"The Captainâs Roast - Espresso Blend - 1kg \/ Whole Bean","public_title":"1kg \/ Whole Bean","sku":"CAPTAIN1K-WB"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":6253847085254,"requestId":"2f191e3b-1f85-434e-99bc-f9f51f73e1ec-1791582446"}}; 2638 for (var attr in meta) { 2639 window.ShopifyAnalytics.meta[attr] = meta[attr]; 2640 } 2641</script>
vendor: 1 bytes, line 2641
2641
2642<script class="analytics"> 2643 (function () { 2644 var customDocumentWrite = function(content) { 2645 var jquery = null; 2646 2647 if (window.jQuery) { 2648 jquery = window.jQuery; 2649 } else if (window.Checkout && window.Checkout.$) { 2650 jquery = window.Checkout.$; 2651 } 2652 2653 if (jquery) { 2654 jquery('body').append(content); 2655 } 2656 }; 2657 2658 var hasLoggedConversion = function(token) { 2659 if (token) { 2660 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 2661 } 2662 return false; 2663 } 2664 2665 var setCookieIfConversion = function(token) { 2666 if (token) { 2667 var twoMonthsFromNow = new Date(Date.now()); 2668 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 2669 2670 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 2671 } 2672 } 2673 2674 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 2675 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 2676 if (trekkie.integrations) { 2677 return; 2678 } 2679 trekkie.methods = [ 2680 'identify', 2681 'page', 2682 'ready', 2683 'track', 2684 'trackForm', 2685 'trackLink' 2686 ]; 2687 trekkie.factory = function(method) { 2688 return function() { 2689 var args = Array.prototype.slice.call(arguments); 2690 args.unshift(method); 2691 trekkie.push(args); 2692 if (method == 'track' || method == 'page') { 2693 var pageUrl; 2694 try { 2695 pageUrl = window.location.href; 2696 } catch (e) {} 2697 var pageReferrer; 2698 try { 2699 pageReferrer = document.referrer; 2700 } catch (e) {} 2701 try { 2702 if (window.__TREKKIE_SHIM_QUEUE == null) { 2703 window.__TREKKIE_SHIM_QUEUE = []; 2704 } 2705 window.__TREKKIE_SHIM_QUEUE.push({ 2706 from: 'trekkie-stub', 2707 method: method, 2708 args: args.slice(1), 2709 pageContext: { 2710 url: pageUrl, 2711 referrer: pageReferrer 2712 } 2713 }); 2714 } catch (e) { 2715 // no-op 2716 } 2717 } 2718 return trekkie; 2719 }; 2720 }; 2721 for (var i = 0; i < trekkie.methods.length; i++) { 2722 var key = trekkie.methods[i]; 2723 trekkie[key] = trekkie.factory(key); 2724 } 2725 trekkie.load = function(config) { 2726 trekkie.config = config || {}; 2727 trekkie.config.initialDocumentCookie = document.cookie; 2728 var first = document.getElementsByTagName('script')[0]; 2729var script = document.createElement('script'); 2730script.type = 'text/javascript'; 2731script.onerror = function(e) { 2732 var scriptFallback = document.createElement('script'); 2733 scriptFallback.type = 'text/javascript'; 2734 scriptFallback.onerror = function(error) { 2735 var Monorail = { 2736 produce: function produce(monorailDomain, schemaId, payload) { 2737 var currentMs = new Date().getTime(); 2738 var event = { 2739 schema_id: schemaId, 2740 payload: payload, 2741 metadata: { 2742 event_created_at_ms: currentMs, 2743 event_sent_at_ms: currentMs 2744 } 2745 }; 2746 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 2747 }, 2748 sendRequest: function sendRequest(endpointUrl, payload) { 2749 // Try the sendBeacon API 2750 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 2751 var blobData = new window.Blob([payload], { 2752 type: 'text/plain' 2753 }); 2754 2755 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 2756 return true; 2757 } // sendBeacon was not successful 2758 2759 } // XHR beacon 2760 2761 var xhr = new XMLHttpRequest(); 2762 2763 try { 2764 xhr.open('POST', endpointUrl); 2765 xhr.setRequestHeader('Content-Type', 'text/plain'); 2766 xhr.send(payload); 2767 } catch (e) { 2768 console.log(e); 2769 } 2770 2771 return false; 2772 }, 2773 isIos12: function isIos12() { 2774 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 2775 } 2776 }; 2777 Monorail.produce('monorail-edge.shopifysvc.com', 2778 'trekkie_storefront_load_errors/1.1', 2779 {shop_id: 54106423494, 2780 theme_id: 182430302587, 2781 app_name: "storefront", 2782 context_url: window.location.href, 2783 source_url: "//altitudecoffeelondon.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 2784 2785 }; 2786 scriptFallback.async = true; 2787 scriptFallback.src = '//altitudecoffeelondon.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 2788 first.parentNode.insertBefore(scriptFallback, first); 2789}; 2790script.async = true; 2791script.src = '//altitudecoffeelondon.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 2792first.parentNode.insertBefore(script, first); 2793 2794 }; 2795 trekkie.load( 2796 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":54106423494,"isMerchantRequest":null,"themeId":182430302587,"themeCityHash":"12525142817966920572","contentLanguage":"en","currency":"GBP","eventMetadataId":"13223386-16d4-49c7-9135-d0ac81674b08"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 2797 ); 2798 2799 var loaded = false;
2800 trekkie.ready(function() { 2801 if (loaded) return; 2802 loaded = true; 2803 2804 window.ShopifyAnalytics.lib = window.trekkie; 2805 2806 var originalDocumentWrite = document.write; 2807 document.write = customDocumentWrite; 2808 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 2809 document.write = originalDocumentWrite; 2810 2811 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 2812 var token = match? match[1]: undefined; 2813 if (!hasLoggedConversion(token)) { 2814 setCookieIfConversion(token); 2815 window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"GBP","variantId":38309800706246,"productId":6253847085254,"productGid":"gid:\/\/shopify\/Product\/6253847085254","name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","price":"11.50","sku":"CAPTAIN250-WB","brand":"Altitude Coffee London","variant":"250g \/ Whole Bean","category":"Coffee","nonInteraction":true,"remote":false,"available":true},undefined,undefined,{"shopifyEmitted":true}); 2816 } 2817 }); 2818 2819 window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":6253847085254,"requestId":"2f191e3b-1f85-434e-99bc-f9f51f73e1ec-1791582446","shopifyEmitted":true}); 2820 2821 var eventsListenerScript = document.createElement('script'); 2822 eventsListenerScript.async = true; 2823 eventsListenerScript.src = "//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 2824 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 2825})();</script>
vendor: 1 bytes, line 2825
2825
2826<script 2827 defer 2828 src="https://altitudecoffeelondon.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.1.min.js" 2829 data-application="storefront-renderer" 2830 data-shop-id="54106423494" 2831 data-render-region="gcp-us-west1" 2832 data-page-type="product" 2833 data-theme-instance-id="182430302587" 2834 data-theme-name="Turbo" 2835 data-theme-version="8.0.1" 2836 data-monorail-region="shop_domain" 2837 data-resource-timing-sampling-rate="10" 2838 data-shs="true" 2839 data-shs-beacon="true" 2840 data-shs-export-with-fetch="true" 2841 data-shs-logs-sample-rate="1" 2842 data-shs-beacon-endpoint="https://altitudecoffeelondon.com/api/collect" 2843></script>
2843 2844<meta name="shopify-y" content="5a9849b8-edd3-4140-ad53-22946794fb80" data-expiration="1823140046000"><meta name="shopify-s" content="e965b2e0-0c00-4372-9e98-a6a7fb74be3a" data-expiration="1791584246000"> 2845</head> <noscript> <style> 2846 .product_section .product_form, 2847 .product_gallery { 2848 opacity: 1; 2849 } 2850 2851 .multi_select, 2852 form .select { 2853 display: block !important; 2854 } 2855 2856 .image-element__wrap { 2857 display: none; 2858 }</style></noscript> <body class="product" 2859 data-money-format="£{{amount}}" 2860 data-shop-currency="GBP" 2861 data-shop-url="https://altitudecoffeelondon.com">
2862<script>window.KlarnaThemeGlobals={}; window.KlarnaThemeGlobals.data_purchase_amount = 1150;window.KlarnaThemeGlobals.productVariants=[{"id":38309800706246,"title":"250g \/ Whole Bean","option1":"250g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN250-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","public_title":"250g \/ Whole Bean","options":["250g","Whole Bean"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122000","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800804550,"title":"250g \/ Espresso - Fine Ground","option1":"250g","option2":"Espresso - Fine Ground","option3":null,"sku":"CAPTAIN250-E","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Espresso - Fine Ground","public_title":"250g \/ Espresso - Fine Ground","options":["250g","Espresso - Fine Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800837318,"title":"250g \/ Filter - Medium Ground","option1":"250g","option2":"Filter - Medium Ground","option3":null,"sku":"CAPTAIN250-F","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Filter - Medium Ground","public_title":"250g \/ Filter - Medium Ground","options":["250g","Filter - Medium Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800870086,"title":"250g \/ Press - Coarse Ground","option1":"250g","option2":"Press - Coarse Ground","option3":null,"sku":"CAPTAIN250-P","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Press - Coarse Ground","public_title":"250g \/ Press - Coarse Ground","options":["250g","Press - Coarse Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800739014,"title":"500g \/ Whole Bean","option1":"500g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN500-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 500g \/ Whole Bean","public_title":"500g \/ Whole Bean","options":["500g","Whole Bean"],"price":2200,"weight":600,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122017","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800771782,"title":"1kg \/ Whole Bean","option1":"1kg","option2":"Whole Bean","option3":null,"sku":"CAPTAIN1K-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 1kg \/ Whole Bean","public_title":"1kg \/ Whole Bean","options":["1kg","Whole Bean"],"price":4200,"weight":1190,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122024","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}];window.KlarnaThemeGlobals.documentCopy=document.cloneNode(true);</script>
2862 2863 2864
2865<script> 2866 (() => { 2867 const configElement = document.getElementById("elevar-gtm-suite-config"); 2868 2869 if (!configElement) { 2870 console.error("Elevar Data Layer: Config element not found"); 2871 return; 2872 } 2873 2874 const config = JSON.parse(configElement.textContent); 2875 2876 const script = document.createElement("script"); 2877 script.type = "text/javascript"; 2878 script.src = config.gtm_suite_script; 2879 2880 script.onerror = () => { 2881 console.error("Elevar Data Layer: JS script failed to load"); 2882 }; 2883 script.onload = async () => { 2884 if (!window.ElevarGtmSuite) { 2885 console.error("Elevar Data Layer: `ElevarGtmSuite` is not defined"); 2886 return; 2887 } 2888 2889 const cartData = { 2890 attributes:{}, 2891 cartTotal: "0.0", 2892 currencyCode:"GBP", 2893 items: [] 2894} 2895; 2896 2897 await window.ElevarGtmSuite.handlers.cartAttributesReconcile( 2898 cartData, 2899 config.event_config.save_order_notes, 2900 config.consent_enabled 2901 ); 2902 2903 if (config.event_config.user) { 2904 const data = {cartTotal: "0.0", 2905 currencyCode:"GBP",}; 2906 window.ElevarGtmSuite.handlers.user(data); 2907 } 2908 2909 if (config.event_config.product_add_to_cart_ajax) { 2910 window.ElevarGtmSuite.handlers.productAddToCartAjax( 2911 config.event_config.save_order_notes, 2912 config.consent_enabled 2913 ); 2914 } 2915 2916 if (config.event_config.cart_reconcile) { 2917 window.ElevarGtmSuite.handlers.cartItemsReconcile(cartData); 2918 }const data ={ 2919 attributes:{}, 2920 currencyCode:"GBP", 2921 2922defaultVariant: {id:"CAPTAIN250-WB",name:"The Captainâs Roast - Espresso Blend", 2923 brand:"Altitude Coffee London", 2924 category:"Coffee", 2925 variant:"250g \/ Whole Bean", 2926 price: "11.5", 2927 productId: "6253847085254", 2928 variantId: "38309800706246", 2929 compareAtPrice: "0.0", 2930 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2931 inventory: "-1490" 2932 },items: [{id:"CAPTAIN250-WB",name:"The Captainâs Roast - Espresso Blend", 2933 brand:"Altitude Coffee London", 2934 category:"Coffee", 2935 variant:"250g \/ Whole Bean", 2936 price: "11.5", 2937 productId: "6253847085254", 2938 variantId: "38309800706246", 2939 compareAtPrice: "0.0", 2940 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2941 inventory: "-1490" 2942 },{id:"CAPTAIN250-E",name:"The Captainâs Roast - Espresso Blend", 2943 brand:"Altitude Coffee London", 2944 category:"Coffee", 2945 variant:"250g \/ Espresso - Fine Ground", 2946 price: "11.5", 2947 productId: "6253847085254", 2948 variantId: "38309800804550", 2949 compareAtPrice: "0.0", 2950 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2951 inventory: "-338" 2952 },{id:"CAPTAIN250-F",name:"The Captainâs Roast - Espresso Blend", 2953 brand:"Altitude Coffee London", 2954 category:"Coffee", 2955 variant:"250g \/ Filter - Medium Ground", 2956 price: "11.5", 2957 productId: "6253847085254", 2958 variantId: "38309800837318", 2959 compareAtPrice: "0.0", 2960 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2961 inventory: "-185" 2962 },{id:"CAPTAIN250-P",name:"The Captainâs Roast - Espresso Blend", 2963 brand:"Altitude Coffee London", 2964 category:"Coffee", 2965 variant:"250g \/ Press - Coarse Ground", 2966 price: "11.5", 2967 productId: "6253847085254", 2968 variantId: "38309800870086", 2969 compareAtPrice: "0.0", 2970 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2971 inventory: "-152" 2972 },{id:"CAPTAIN500-WB",name:"The Captainâs Roast - Espresso Blend", 2973 brand:"Altitude Coffee London", 2974 category:"Coffee", 2975 variant:"500g \/ Whole Bean", 2976 price: "22.0", 2977 productId: "6253847085254", 2978 variantId: "38309800739014", 2979 compareAtPrice: "0.0", 2980 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2981 inventory: "-1061" 2982 },{id:"CAPTAIN1K-WB",name:"The Captainâs Roast - Espresso Blend", 2983 brand:"Altitude Coffee London", 2984 category:"Coffee", 2985 variant:"1kg \/ Whole Bean", 2986 price: "42.0", 2987 productId: "6253847085254", 2988 variantId: "38309800771782", 2989 compareAtPrice: "0.0", 2990 image:"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690", 2991 inventory: "-1503" 2992 },] 2993 }; 2994
2995 if (config.event_config.product_view) { 2996 window.ElevarGtmSuite.handlers.productView(data); 2997 } 2998 if (config.event_config.product_add_to_cart) { 2999 window.ElevarGtmSuite.handlers.productAddToCartForm( 3000 data, 3001 config.event_config.save_order_notes, 3002 config.consent_enabled 3003 ); 3004 }}; 3005 3006 document.body.appendChild(script); 3007 })(); 3008</script>
3008 3009<!-- Google Tag Manager (noscript) --> 3010<noscript><iframe src="https://analytics.altitudecoffeelondon.com/ns.html?id=GTM-NZSCZVP6" 3011height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 3012<!-- End Google Tag Manager (noscript) -->
3012<script> 3013 document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,'js'); 3014 if(window.Shopify&&window.Shopify.designMode)document.documentElement.className+=' in-theme-editor'; 3015 if(('ontouchstart' in window)||window.DocumentTouch&&document instanceof DocumentTouch)document.documentElement.className=document.documentElement.className.replace(/\bno-touch\b/,'has-touch');</script>
3015 <svg 3016 class="icon-star-reference" 3017 aria-hidden="true" 3018 focusable="false" 3019 role="presentation" 3020 xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="3 3 17 17" fill="none" 3021 > <symbol id="icon-star"> <rect class="icon-star-background" width="20" height="20" fill="currentColor"/> <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/></symbol> <clipPath id="icon-star-clip"> <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></clipPath></svg> <div id="shopify-section-header" class="shopify-section shopify-section--header">
3021<script 3022 type="application/json" 3023 data-section-type="header" 3024 data-section-id="header" 3025></script>
3025 3026 3027 3028
3029<script type="application/ld+json"> 3030 { 3031 "@context": "http://schema.org", 3032 "@type": "Organization", 3033 "name": "Altitude Coffee London", 3034 3035 3036 "logo": "https://altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_1452x.png?v=1616621864", 3037 3038 "sameAs": [ 3039 "", 3040 "", 3041 "", 3042 "", 3043 "https://facebook.com/altcoffeeldn", 3044 "", 3045 "", 3046 "https://instagram.com/altcoffeeldn", 3047 "", 3048 "", 3049 "", 3050 "", 3051 "", 3052 "", 3053 "", 3054 "", 3055 "", 3056 "", 3057 "", 3058 "", 3059 "", 3060 "https://twitter.com/altcoffeeldn", 3061 "", 3062 "", 3063 "" 3064 ], 3065 "url": "https://altitudecoffeelondon.com" 3066 } 3067</script>
3067 3068 3069 3070 3071 3072<header id="header" class="mobile_nav-fixed--true"> <div class="promo-banner"> <div class="promo-banner__content"> <p>FREE TRACKED DELIVERY FROM £30</p></div> <div class="promo-banner__close"></div></div> <div class="top-bar"> <details data-mobile-menu> <summary class="mobile_nav dropdown_link" data-mobile-menu-trigger> <div data-mobile-menu-icon> <span></span> <span></span> <span></span> <span></span></div> <span class="mobile-menu-title">Menu</span></summary> <div class="mobile-menu-container dropdown" data-nav> <ul class="menu" id="mobile_menu"> <template data-nav-parent-template> <li class="sublink"> <a href="#" data-no-instant class="parent-link--true"><div class="mobile-menu-item-title" data-nav-title></div><span class="right icon-down-arrow"></span></a> <ul class="mobile-mega-menu" data-meganav-target-container></ul></li></template> <li data-mobile-dropdown-rel="about-us" data-meganav-mobile-target="about-us"> <a data-nav-title data-no-instant href="/pages/about-us" class="parent-link--true"> 3073 ABOUT US</a></li> <li data-mobile-dropdown-rel="shop-coffee" class="sublink" data-meganav-mobile-target="shop-coffee"> <a data-no-instant href="/collections/coffee" class="parent-link--true"> <div class="mobile-menu-item-title" data-nav-title>SHOP COFFEE</div> <span class="right icon-down-arrow"></span></a> <ul> <li><a href="/collections/coffee-blends">AWARD WINNING BLENDS</a></li> <li><a href="/collections/single-origins">SINGLE ORIGINS</a></li> <li><a href="/collections/coffee-bundles">COFFEE COLLECTIONS</a></li></ul></li> <li data-mobile-dropdown-rel="shop-equipment" class="sublink" data-meganav-mobile-target="shop-equipment"> <a data-no-instant href="/collections/coffee-equipment" class="parent-link--true"> <div class="mobile-menu-item-title" data-nav-title>SHOP EQUIPMENT</div> <span class="right icon-down-arrow"></span></a> <ul> <li><a href="/collections/espresso-machines">ESPRESSO MACHINES</a></li> <li><a href="/collections/coffee-grinders">COFFEE GRINDERS</a></li> <li><a href="/collections/coffee-brewing-equipment">BREWING GEAR</a></li> <li><a href="/collections/exclusive-equipment-bundles">EXCLUSIVE EQUIPMENT BUNDLES</a></li></ul></li> <li data-mobile-dropdown-rel="subscriptions" data-meganav-mobile-target="subscriptions"> <a data-nav-title data-no-instant href="/collections/subscriptions" class="parent-link--true"> 3074 SUBSCRIPTIONS</a></li> <li data-mobile-dropdown-rel="wholesale-portal" data-meganav-mobile-target="wholesale-portal"> <a data-nav-title data-no-instant href="https://altitudecoffeelondon.com/apps/wpdapp/wholesale/login" class="parent-link--true"> 3075 WHOLESALE PORTAL</a></li> <template data-nav-parent-template> <li class="sublink"> <a href="#" data-no-instant class="parent-link--true"><div class="mobile-menu-item-title" data-nav-title></div><span class="right icon-down-arrow"></span></a> <ul class="mobile-mega-menu" data-meganav-target-container></ul></li></template> <li data-no-instant> <a href="https://altitudecoffeelondon.com/customer_authentication/redirect?locale=en®ion_country=GB" id="customer_login_link">Login</a></li></ul></div></details> <a href="/" title="Altitude Coffee London" class="mobile_logo logo"> <img src="//altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_410x.png?v=1616621864" alt="Altitude Coffee London" class="lazyload"></a> <div class="top-bar--right"> <a 3076 href="/search" 3077 class="icon-search dropdown_link" 3078 title="Search" 3079 data-dropdown-rel="search" 3080 ></a> <div class="cart-container"> <a 3081 href="/cart" 3082 class="icon-bag mini_cart dropdown_link" 3083 title="Basket" 3084 data-no-instant 3085 > <span class="cart_count">0</span></a 3086 ></div> <div class="dropdown_container" data-dropdown="search"> <div class="dropdown" data-autocomplete-true> <form action="/search" class="header_search_form"> <input type="hidden" name="type" value="product"> <span class="icon-search search-submit"></span> <input 3087 type="text" 3088 name="q" 3089 placeholder="Search" 3090 autocapitalize="off" 3091 autocomplete="off" 3092 autocorrect="off" 3093 class="search-terms" 3094 ></form></div></div> 3095 3096 3097</header> 3098 3099 3100 3101 3102 3103<header 3104 class=" 3105 3106 search-enabled--true 3107 " 3108 data-desktop-header 3109 data-header-feature-image="true" 3110> <div 3111 class=" 3112 header 3113 header-fixed--true 3114 header-background--solid 3115 " 3116 data-header-is-absolute="" 3117 > <div class="promo-banner"> <div class="promo-banner__content"> <p>FREE TRACKED DELIVERY FROM £30</p></div> <div class="promo-banner__close"></div></div> <div class="top-bar"> <ul class="top-bar__menu menu"></ul> <div class="top-bar--right-menu"> <ul class="top-bar__menu"> <li> <a 3118 href="/account" 3119 class=" 3120 top-bar__login-link 3121 icon-user 3122 " 3123 title="My Account " 3124 > 3125 Login</a></li></ul> <div class="cart-container"> <a 3126 href="/cart" 3127 class="icon-bag mini_cart dropdown_link" 3128 data-no-instant 3129 > <span class="cart_count">0</span></a> <div class="tos_warning cart_content animated fadeIn"> <div class="js-empty-cart__message "> <p class="empty_cart">Your Basket is Empty</p> <a href="/collections/coffee" class="alt-empty-cart__cta">CONTINUE SHOPPING</a></div> <form 3130 action="/cart" 3131 method="post" 3132 class="hidden" 3133 data-total-discount="0" 3134 data-money-format="£{{amount}}" 3135 data-shop-currency="GBP" 3136 data-shop-name="Altitude Coffee London" 3137 data-cart-form="mini-cart" 3138 > <a class="cart_content__continue-shopping secondary_button"> 3139 Continue Shopping</a> 3140 3141 3142 3143<div class="alt-shipping-bar" data-shipping-bar style="display:none"> <p class="alt-shipping-bar__text" data-shipping-bar-text></p> <div class="alt-shipping-bar__track" data-shipping-bar-track> <div class="alt-shipping-bar__fill" data-shipping-bar-fill style="width:0%"></div></div> 3144</div> 3145
3146<script> 3147(function() { 3148 var THRESHOLD = 3000; /* £30 in pence */ 3149 var moneyFmt = "£{{amount}}"; 3150 3151 function fmtMoney(cents) { 3152 var a = (cents / 100).toFixed(2); 3153 return moneyFmt 3154 .replace(/\{\{\s*amount\s*\}\}/, a) 3155 .replace(/\{\{\s*amount_no_decimals\s*\}\}/, Math.round(cents / 100)) 3156 .replace(/\{\{\s*amount_with_comma_separator\s*\}\}/, a.replace('.', ',')) 3157 .replace(/\{\{\s*amount_no_decimals_with_comma_separator\s*\}\}/, Math.round(cents / 100)); 3158 } 3159 3160 function isSubscriptionsOnly(cart) { 3161 if (!cart.items || cart.items.length === 0) return false; 3162 return cart.items.every(function(item) { 3163 return !!item.selling_plan_allocation; 3164 }); 3165 } 3166 3167 function updateBars() { 3168 fetch('/cart.js') 3169 .then(function(r) { return r.json(); }) 3170 .then(function(cart) { renderBars(cart); }); 3171 } 3172 3173 function renderBars(cart) { 3174 var bars = document.querySelectorAll('[data-shipping-bar]'); 3175 var subsOnly = isSubscriptionsOnly(cart); 3176 bars.forEach(function(bar) { 3177 if (cart.item_count === 0) { 3178 bar.style.display = 'none'; 3179 return; 3180 } 3181 bar.style.display = ''; 3182 var text = bar.querySelector('[data-shipping-bar-text]'); 3183 var track = bar.querySelector('[data-shipping-bar-track]'); 3184 var fill = bar.querySelector('[data-shipping-bar-fill]'); 3185 3186 if (subsOnly) { 3187 text.innerHTML = 'Free delivery on subscriptions'; 3188 bar.classList.add('alt-shipping-bar--complete'); 3189 if (track) track.style.display = 'none'; 3190 return; 3191 } 3192 3193 if (track) track.style.display = ''; 3194 var remaining = THRESHOLD - cart.total_price; 3195 var progress = Math.min(100, Math.round((cart.total_price / THRESHOLD) * 100)); 3196 3197 if (remaining > 0) { 3198 text.innerHTML = 'Spend <span>' + fmtMoney(remaining) + '</span> more for free delivery'; 3199 bar.classList.remove('alt-shipping-bar--complete'); 3200 } else { 3201 text.innerHTML = 'You\'ve unlocked <span>free delivery.</span>'; 3202 bar.classList.add('alt-shipping-bar--complete'); 3203 } 3204 fill.style.width = progress + '%'; 3205 }); 3206 } 3207 3208 /* Initial render */ 3209 updateBars(); 3210 3211 /* Hook into the theme's refreshCart so bars update after every cart change */ 3212 if (typeof window.refreshCart === 'function') { 3213 var origRefresh = window.refreshCart; 3214 window.refreshCart = function(cart) { 3215 origRefresh(cart); 3216 renderBars(cart); 3217 }; 3218 } else { 3219 /* Fallback: poll for refreshCart being defined (theme JS loads async) */ 3220 var hookInterval = setInterval(function() { 3221 if (typeof window.refreshCart === 'function') { 3222 var origRefresh = window.refreshCart; 3223 window.refreshCart = function(cart) { 3224 origRefresh(cart); 3225 renderBars(cart); 3226 }; 3227 clearInterval(hookInterval); 3228 } 3229 }, 200); 3230 setTimeout(function() { clearInterval(hookInterval); }, 5000); 3231 } 3232})(); 3233</script>
3233 <ul class="cart_items js-cart_items"></ul> <ul> <li class="cart_discounts js-cart_discounts sale"></li> <li class="cart_subtotal js-cart_subtotal"> <span class="right"> <span class="money"> 3234 3235 3236 3237 £0.00</span></span> <span>Subtotal</span></li> <li class="cart_savings sale js-cart_savings"></li> <li><p class="cart-message meta">Tax included. All payment methods accepted. 3238</p></li> <li> <button 3239 type="submit" 3240 name="checkout" 3241 class="global-button global-button--primary add_to_cart" 3242 data-minicart-checkout-button 3243 > <span class="icon-lock"></span>CHECKOUT SECURELY</button></li></ul></form> 3244 3245 3246 3247<div class="mcr" data-mcr-root data-product-id="" style="display:none"> <div class="mcr__header"> <span class="mcr__title">You might also like</span></div> <div class="mcr__grid" data-mcr-grid></div> 3248</div> 3249 3250<style> 3251 .mcr { 3252 padding: 12px 15px 8px; 3253 border-top: 1px solid rgba(var(--alt-green-rgb), 0.12); 3254 margin-top: 8px; 3255 } 3256 .mcr__header { margin-bottom: 10px; } 3257 .mcr__title { 3258 font-family: var(--alt-font-mono) !important; 3259 font-size: 10px !important; 3260 font-weight: 500 !important; 3261 letter-spacing: 2px !important; 3262 text-transform: uppercase !important; 3263 color: var(--alt-orange) !important; 3264 } 3265 .mcr__grid { 3266 display: flex; 3267 flex-direction: column; 3268 gap: 8px; 3269 } 3270 3271 /* Card â compact row */ 3272 .mcr-card { 3273 display: flex; 3274 align-items: center; 3275 gap: 10px; 3276 padding: 8px; 3277 background: rgba(var(--alt-cream-rgb), 0.4); 3278 border: 1px solid rgba(var(--alt-green-rgb), 0.08); 3279 } 3280 .mcr-card__img { 3281 flex: 0 0 48px; 3282 width: 48px; 3283 } 3284 .mcr-card__img img { 3285 width: 100%; 3286 height: auto; 3287 display: block; 3288 } 3289 .mcr-card__img a { display: block; } 3290 .mcr-card__body { 3291 flex: 1; 3292 min-width: 0; 3293 } 3294 .mcr-card__row { 3295 display: flex; 3296 align-items: center; 3297 justify-content: space-between; 3298 gap: 8px; 3299 } 3300 .mcr-card__info { 3301 flex: 1; 3302 min-width: 0; 3303 } 3304 .mcr-card__name { 3305 font-family: var(--alt-font-body) !important; 3306 font-size: 11px !important; 3307 font-weight: 600 !important; 3308 color: var(--alt-green) !important; 3309 line-height: 1.3 !important; 3310 margin: 0 !important; 3311 white-space: nowrap !important; 3312 overflow: hidden !important; 3313 text-overflow: ellipsis !important; 3314 } 3315 .mcr-card__name a { 3316 color: inherit !important; 3317 text-decoration: none !important; 3318 } 3319 .mcr-card__name a:hover { 3320 color: var(--alt-orange) !important; 3321 } 3322 .mcr-card__price { 3323 font-family: var(--alt-font-body) !important; 3324 font-size: 11px !important; 3325 font-weight: 600 !important; 3326 color: var(--alt-green) !important; 3327 margin: 2px 0 0 0 !important; 3328 } 3329 .mcr-card__price .mcr-sale { color: var(--alt-orange) !important; } 3330 .mcr-card__price .mcr-was { 3331 font-weight: 400 !important; 3332 font-size: 10px !important; 3333 color: rgba(var(--alt-green-rgb), 0.45) !important; 3334 text-decoration: line-through !important; 3335 margin-left: 4px !important; 3336 } 3337 3338 /* Add button â compact, right-aligned */ 3339 .mcr-card__add-btn { 3340 flex: 0 0 auto; 3341 padding: 5px 12px !important; 3342 background: var(--alt-orange) !important; 3343 color: #FFFFFF !important; 3344 border: 1px solid var(--alt-orange) !important; 3345 border-radius: 0 !important; 3346 font-family: var(--alt-font-stencil) !important; 3347 font-size: 10px !important; 3348 font-weight: 700 !important; 3349 letter-spacing: 1.5px !important; 3350 text-transform: uppercase !important; 3351 cursor: pointer !important; 3352 transition: background 0.15s ease, border-color 0.15s ease !important; 3353 white-space: nowrap !important; 3354 } 3355 .mcr-card__add-btn:hover { 3356 background: var(--alt-orange-dark) !important; 3357 border-color: var(--alt-orange-dark) !important; 3358 } 3359 3360 /* Expanded variant picker â hidden by default */ 3361 .mcr-card__expand { 3362 display: none; 3363 margin-top: 8px; 3364 padding-top: 8px; 3365 border-top: 1px solid rgba(var(--alt-green-rgb), 0.08); 3366 }
3367 .mcr-card__expand.is-open { display: block; } 3368 .mcr-card__variants { 3369 display: flex; 3370 flex-wrap: wrap; 3371 gap: 4px; 3372 margin-bottom: 6px; 3373 } 3374 .mcr-card__select { 3375 flex: 1 1 auto; 3376 min-width: 0; 3377 padding: 3px 4px !important; 3378 font-family: var(--alt-font-mono) !important; 3379 font-size: 9px !important; 3380 font-weight: 500 !important; 3381 letter-spacing: 0.8px !important; 3382 text-transform: uppercase !important; 3383 color: var(--alt-green) !important; 3384 background: var(--alt-cream) !important; 3385 border: 1px solid rgba(var(--alt-green-rgb), 0.25) !important; 3386 border-radius: 0 !important; 3387 cursor: pointer !important; 3388 appearance: auto !important; 3389 -webkit-appearance: menulist !important; 3390 height: 24px !important; 3391 } 3392 .mcr-card__confirm-btn { 3393 width: 100%; 3394 padding: 6px 10px !important; 3395 background: var(--alt-orange) !important; 3396 color: #FFFFFF !important; 3397 border: 1px solid var(--alt-orange) !important; 3398 border-radius: 0 !important; 3399 font-family: var(--alt-font-stencil) !important; 3400 font-size: 10px !important; 3401 font-weight: 700 !important; 3402 letter-spacing: 1.5px !important; 3403 text-transform: uppercase !important; 3404 cursor: pointer !important; 3405 transition: background 0.15s ease, border-color 0.15s ease !important; 3406 } 3407 .mcr-card__confirm-btn:hover { 3408 background: var(--alt-orange-dark) !important; 3409 border-color: var(--alt-orange-dark) !important; 3410 } 3411 .mcr-card__confirm-btn:disabled { 3412 opacity: 0.4 !important; 3413 cursor: not-allowed !important; 3414 } 3415</style> 3416
3417<script> 3418(function() { 3419 clearTimeout(window.__mcrTimer); 3420 window.__mcrTimer = setTimeout(initMcr, 50); 3421 3422 function initMcr() { 3423 var moneyFmt = "£{{amount}}"; 3424 3425 function fmt(cents) { 3426 var a = (cents / 100).toFixed(2); 3427 return moneyFmt 3428 .replace(/\{\{\s*amount\s*\}\}/, a) 3429 .replace(/\{\{\s*amount_no_decimals\s*\}\}/, Math.round(cents / 100)) 3430 .replace(/\{\{\s*amount_with_comma_separator\s*\}\}/, a.replace('.', ',')) 3431 .replace(/\{\{\s*amount_no_decimals_with_comma_separator\s*\}\}/, Math.round(cents / 100)); 3432 } 3433 3434 function esc(s) { 3435 var d = document.createElement('div'); 3436 d.textContent = s; 3437 return d.innerHTML; 3438 } 3439 3440 /* Fetch fresh cart data, then load recommendations */ 3441 function loadRecs() { 3442 fetch('/cart.js') 3443 .then(function(r) { return r.json(); }) 3444 .then(function(cart) { 3445 var roots = document.querySelectorAll('[data-mcr-root]'); 3446 if (!roots.length) return; 3447 3448 var cartProductIds = cart.items.map(function(item) { return item.product_id; }); 3449 3450 if (cart.item_count === 0) { 3451 /* Empty cart â show bestsellers from the coffee collection. 3452 The collection API returns a different shape to the 3453 recommendations API, so we normalise before handing 3454 off to the shared card() / fillGrids() pipeline. */ 3455 fetch('/collections/coffee/products.json?limit=4') 3456 .then(function(r) { return r.json(); }) 3457 .then(function(data) { 3458 if (!data.products || !data.products.length) { 3459 roots.forEach(function(w) { w.style.display = 'none'; }); 3460 return; 3461 } 3462 window.__mcrProds = data.products.slice(0, 2).map(function(p) { 3463 /* featured_image: collection API nests under images[] */ 3464 if (!p.featured_image && p.images && p.images.length) { 3465 p.featured_image = p.images[0].src; 3466 } 3467 /* variants prices: collection API returns string dollars, 3468 card() expects integer cents via fmt() */ 3469 if (p.variants) { 3470 p.variants = p.variants.map(function(v) { 3471 if (typeof v.price === 'string') v.price = Math.round(parseFloat(v.price) * 100); 3472 if (typeof v.compare_at_price === 'string' && v.compare_at_price) { 3473 v.compare_at_price = Math.round(parseFloat(v.compare_at_price) * 100); 3474 } 3475 /* options array: collection API may omit, build from option1/2/3 */ 3476 if (!v.options) { 3477 v.options = [v.option1, v.option2, v.option3].filter(Boolean); 3478 } 3479 return v; 3480 }); 3481 } 3482 return p; 3483 }); 3484 roots.forEach(function(w) { 3485 w.style.display = ''; 3486 var title = w.querySelector('.mcr__title'); 3487 if (title) title.textContent = 'Bestsellers'; 3488 }); 3489 /* Clear grids so they re-render */ 3490 document.querySelectorAll('[data-mcr-grid]').forEach(function(g) { g.innerHTML = ''; }); 3491 fillGrids(); 3492 }) 3493 .catch(function() { 3494 roots.forEach(function(w) { w.style.display = 'none'; }); 3495 }); 3496 return; 3497 } 3498 3499 /* Use first cart item's product ID for recommendations */ 3500 var pid = cart.items[0].product_id; 3501 3502 /* Update the data attribute for consistency */ 3503 roots.forEach(function(r) { r.setAttribute('data-product-id', pid); }); 3504 3505 fetch('/recommendations/products.json?product_id=' + pid + '&limit=6&intent=related') 3506 .then(function(r) { return r.json(); }) 3507 .then(function(data) { 3508 if (!data.products || !data.products.length) { 3509 roots.forEach(function(w) { w.style.display = 'none'; }); 3510 return; 3511 } 3512 3513 var prods = data.products.filter(function(p) { 3514 return cartProductIds.indexOf(p.id) === -1; 3515 }).slice(0, 2); 3516 3517 if (!prods.length) {
3518 roots.forEach(function(w) { w.style.display = 'none'; }); 3519 return; 3520 } 3521 3522 window.__mcrProds = prods; 3523 roots.forEach(function(w) { w.style.display = ''; }); 3524 fillGrids(); 3525 setTimeout(fillGrids, 200); 3526 setTimeout(fillGrids, 800); 3527 }) 3528 .catch(function() { 3529 roots.forEach(function(w) { w.style.display = 'none'; }); 3530 }); 3531 }); 3532 } 3533 3534 function fillGrids() { 3535 var prods = window.__mcrProds; 3536 if (!prods) return; 3537 document.querySelectorAll('[data-mcr-grid]').forEach(function(grid) { 3538 if (grid.children.length > 0) return; 3539 prods.forEach(function(p) { 3540 var c = card(p); 3541 wireCard(c, p); 3542 grid.appendChild(c); 3543 }); 3544 }); 3545 } 3546 3547 /* Clear and re-populate all grids (called after cart changes) */ 3548 function refreshRecs() { 3549 document.querySelectorAll('[data-mcr-grid]').forEach(function(grid) { 3550 grid.innerHTML = ''; 3551 }); 3552 window.__mcrProds = null; 3553 loadRecs(); 3554 } 3555 3556 /* Initial load */ 3557 loadRecs(); 3558 3559 /* Hook into theme's refreshCart so recs update after every cart change */ 3560 function hookRefreshCart() { 3561 if (typeof window.refreshCart === 'function' && !window.__mcrHooked) { 3562 var origRefresh = window.refreshCart; 3563 window.refreshCart = function(cart) { 3564 origRefresh(cart); 3565 refreshRecs(); 3566 }; 3567 window.__mcrHooked = true; 3568 } 3569 } 3570 hookRefreshCart(); 3571 var hookInt = setInterval(function() { 3572 hookRefreshCart(); 3573 if (window.__mcrHooked) clearInterval(hookInt); 3574 }, 200); 3575 setTimeout(function() { clearInterval(hookInt); }, 5000); 3576 3577 function card(product) { 3578 var el = document.createElement('div'); 3579 el.className = 'mcr-card'; 3580 3581 var v0 = product.variants[0]; 3582 var multi = product.variants.length > 1; 3583 3584 var img = product.featured_image 3585 ? product.featured_image.replace(/\.([a-z]+)\?/, '_200x.$1?') 3586 : ''; 3587 3588 var priceHTML = ''; 3589 if (v0.compare_at_price && v0.compare_at_price > v0.price) { 3590 priceHTML = '<span class="mcr-sale">' + fmt(v0.price) + '</span><span class="mcr-was">' + fmt(v0.compare_at_price) + '</span>'; 3591 } else { 3592 priceHTML = fmt(v0.price); 3593 } 3594 3595 /* Build variant dropdowns (hidden initially) */ 3596 var expandHTML = ''; 3597 if (multi) { 3598 expandHTML = '<div class="mcr-card__expand" data-mcr-expand>'; 3599 expandHTML += '<div class="mcr-card__variants">'; 3600 product.options.forEach(function(opt, idx) { 3601 var name = (typeof opt === 'object' && opt.name) ? opt.name : opt; 3602 var vals = []; 3603 if (typeof opt === 'object' && Array.isArray(opt.values)) { 3604 vals = opt.values; 3605 } else { 3606 var seen = {};
3607 product.variants.forEach(function(v) { 3608 if (!seen[v.options[idx]]) { seen[v.options[idx]] = true; vals.push(v.options[idx]); } 3609 }); 3610 } 3611 expandHTML += '<select class="mcr-card__select" data-option-index="' + idx + '" aria-label="' + esc(name) + '">'; 3612 vals.forEach(function(val) { 3613 expandHTML += '<option value="' + esc(val) + '">' + esc(val) + '</option>'; 3614 }); 3615 expandHTML += '</select>'; 3616 }); 3617 expandHTML += '</div>'; 3618 expandHTML += '<button type="button" class="mcr-card__confirm-btn" data-mcr-confirm data-variant-id="' + v0.id + '"' + 3619 (v0.available ? '' : ' disabled') + '>' + 3620 (v0.available ? 'Add to basket' : 'Sold out') + '</button>'; 3621 expandHTML += '</div>'; 3622 } 3623 3624 el.innerHTML = 3625 '<div class="mcr-card__img"><a href="' + product.url + '">' + 3626 (img ? '<img src="' + img + '" alt="' + esc(product.title) + '" loading="lazy" />' : '') + 3627 '</a></div>' + 3628 '<div class="mcr-card__body">' + 3629 '<div class="mcr-card__row">' + 3630 '<div class="mcr-card__info">' + 3631 '<p class="mcr-card__name"><a href="' + product.url + '">' + esc(product.title) + '</a></p>' + 3632 '<p class="mcr-card__price" data-mcr-price>' + priceHTML + '</p>' + 3633 '</div>' + 3634 '<button type="button" class="mcr-card__add-btn" data-mcr-add data-variant-id="' + v0.id + '"' + 3635 (v0.available ? '' : ' disabled') + '>' + 3636 (v0.available ? (multi ? 'Add' : 'Add') : 'Sold out') + 3637 '</button>' + 3638 '</div>' + 3639 expandHTML + 3640 '</div>'; 3641 3642 return el; 3643 } 3644 3645 function wireCard(c, product) { 3646 var multi = product.variants.length > 1; 3647 var addBtn = c.querySelector('[data-mcr-add]'); 3648 var expand = c.querySelector('[data-mcr-expand]'); 3649 var confirmBtn = c.querySelector('[data-mcr-confirm]'); 3650 3651 if (multi && expand) { 3652 /* "Add" toggles the variant picker */ 3653 addBtn.addEventListener('click', function() { 3654 var isOpen = expand.classList.contains('is-open'); 3655 expand.classList.toggle('is-open'); 3656 addBtn.textContent = isOpen ? 'Add' : 'Cancel'; 3657 }); 3658 3659 /* Variant change updates confirm button */ 3660 var selects = c.querySelectorAll('[data-option-index]'); 3661 selects.forEach(function(sel) { 3662 sel.addEventListener('change', function() { sync(c, product); }); 3663 }); 3664 3665 /* Confirm button adds to cart */ 3666 confirmBtn.addEventListener('click', function() { 3667 var vid = confirmBtn.getAttribute('data-variant-id'); 3668 confirmBtn.disabled = true; 3669 confirmBtn.textContent = 'Adding...'; 3670 addToCart(vid); 3671 }); 3672 } else { 3673 /* Single variant â add directly */ 3674 addBtn.addEventListener('click', function() { 3675 var vid = addBtn.getAttribute('data-variant-id'); 3676 addBtn.disabled = true; 3677 addBtn.textContent = '...'; 3678 addToCart(vid); 3679 }); 3680 } 3681 } 3682 3683 function addToCart(vid) { 3684 fetch('/cart/add.js', { 3685 method: 'POST', 3686 headers: { 'Content-Type': 'application/json' }, 3687 body: JSON.stringify({ id: parseInt(vid, 10), quantity: 1 }) 3688 }) 3689 .then(function(r) { 3690 if (!r.ok) throw new Error(); 3691 /* Refresh cart contents via theme's native method */ 3692 if (typeof Shopify !== 'undefined' && Shopify.getCart) { 3693 Shopify.getCart(function(cart) { 3694 if (typeof refreshCart === 'function') refreshCart(cart); 3695 }); 3696 } 3697 /* Open the mini cart dropdown */ 3698 setTimeout(function() { 3699 var header = document.getElementById('header'); 3700 var sticky = document.querySelector('.sticky_nav--stick'); 3701 var target; 3702 if (header && header.offsetParent !== null) { 3703 target = header.querySelector('.cart-container'); 3704 } else if (sticky) { 3705 target = sticky.querySelector('.cart-container'); 3706 } else { 3707 target = document.querySelector('.top-bar .cart-container'); 3708 } 3709 if (target) target.classList.add('active_link'); 3710 3711 /* Update cart count in header */ 3712 fetch('/cart.js').then(function(r) { return r.json(); }).then(function(cart) { 3713 document.querySelectorAll('.cart_count').forEach(function(el) { 3714 el.textContent = cart.item_count; 3715 }); 3716 }); 3717 }, 300); 3718 }) 3719 .catch(function() { window.location.reload(); }); 3720 } 3721 3722 function sync(el, product) { 3723 var chosen = []; 3724 el.querySelectorAll('[data-option-index]').forEach(function(sel) { 3725 chosen.push(sel.value); 3726 }); 3727 3728 var match = null;
3729 product.variants.forEach(function(v) { 3730 if (match) return; 3731 var ok = v.options.every(function(o, i) { 3732 return chosen[i] === undefined || o === chosen[i]; 3733 }); 3734 if (ok) match = v; 3735 }); 3736 3737 var btn = el.querySelector('[data-mcr-confirm]'); 3738 var price = el.querySelector('[data-mcr-price]'); 3739 3740 if (match) { 3741 btn.setAttribute('data-variant-id', match.id); 3742 btn.disabled = !match.available; 3743 btn.textContent = match.available ? 'Add to basket' : 'Sold out'; 3744 3745 if (match.compare_at_price && match.compare_at_price > match.price) { 3746 price.innerHTML = '<span class="mcr-sale">' + fmt(match.price) + '</span><span class="mcr-was">' + fmt(match.compare_at_price) + '</span>'; 3747 } else { 3748 price.innerHTML = fmt(match.price); 3749 } 3750 } 3751 } 3752 } /* end initMcr */ 3753})(); 3754</script>
3754</div></div></div></div> <div class="main-nav__wrapper"> <div 3755 class="main-nav menu-position--inline logo-alignment--center logo-position--left search-enabled--true" 3756 3757 > <div class="header__logo logo--image"> <a href="/" title="Altitude Coffee London"> <img src="//altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_410x.png?v=1616621864" class="primary_logo lazyload" alt="Altitude Coffee London" /></a></div> <div class="nav nav--combined center"> 3758 3759 3760 3761<nav 3762 class="nav-desktop " 3763 data-nav 3764 data-nav-desktop 3765 aria-label="Translation missing: en.navigation.header.main_nav" 3766> <template data-nav-parent-template> <li 3767 class=" 3768 nav-desktop__tier-1-item 3769 nav-desktop__tier-1-item--widemenu-parent 3770 " 3771 data-nav-desktop-parent 3772 > <details data-nav-desktop-details> <summary 3773 data-href 3774 class=" 3775 nav-desktop__tier-1-link 3776 nav-desktop__tier-1-link--parent 3777 " 3778 data-nav-desktop-link 3779 aria-expanded="false" 3780 3781 aria-controls="nav-tier-2-" 3782 role="button" 3783 > <span data-nav-title></span> <span class="icon-down-arrow"></span></summary> <div 3784 class=" 3785 nav-desktop__tier-2 3786 nav-desktop__tier-2--full-width-menu 3787 " 3788 tabindex="-1" 3789 data-nav-desktop-tier-2 3790 data-nav-desktop-submenu 3791 data-nav-desktop-full-width-menu 3792 data-meganav-target-container 3793 ></details></li></template> <ul 3794 class="nav-desktop__tier-1" 3795 data-nav-desktop-tier-1 3796 > <li 3797 class=" 3798 nav-desktop__tier-1-item 3799 3800 " 3801 3802 data-meganav-desktop-target="about-us" 3803 > <a href="/pages/about-us" 3804 3805 class=" 3806 nav-desktop__tier-1-link 3807 3808 3809 " 3810 data-nav-desktop-link 3811 3812 > <span data-nav-title>ABOUT US</span></a></li> <li 3813 class=" 3814 nav-desktop__tier-1-item 3815 3816 3817 nav-desktop__tier-1-item--dropdown-parent 3818 3819 3820 " 3821 data-nav-desktop-parent 3822 data-meganav-desktop-target="shop-coffee" 3823 > <details data-nav-desktop-details> <summary data-href="/collections/coffee" 3824 3825 class=" 3826 nav-desktop__tier-1-link 3827 nav-desktop__tier-1-link--parent 3828 nav-desktop__tier-1-link--active 3829 " 3830 data-nav-desktop-link 3831 3832 aria-expanded="false" 3833 aria-controls="nav-tier-2-2" 3834 role="button" 3835 3836 > <span data-nav-title>SHOP COFFEE</span> <span class="icon-down-arrow"></span></summary> <ul 3837 3838 id="nav-tier-2-2" 3839 class=" 3840 nav-desktop__tier-2 3841 3842 3843 nav-desktop__tier-2--dropdown 3844 3845 3846 " 3847 tabindex="-1" 3848 data-nav-desktop-tier-2 3849 data-nav-desktop-submenu 3850 3851 > <li 3852 class="nav-desktop__tier-2-item" 3853 3854 > <a href="/collections/coffee-blends" 3855 3856 class=" 3857 nav-desktop__tier-2-link 3858 3859 " 3860 data-nav-desktop-link 3861 3862 > <span>AWARD WINNING BLENDS</span></a></li> <li 3863 class="nav-desktop__tier-2-item" 3864 3865 > <a href="/collections/single-origins" 3866 3867 class=" 3868 nav-desktop__tier-2-link 3869 3870 " 3871 data-nav-desktop-link 3872 3873 > <span>SINGLE ORIGINS</span></a></li> <li 3874 class="nav-desktop__tier-2-item" 3875 3876 > <a href="/collections/coffee-bundles" 3877 3878 class=" 3879 nav-desktop__tier-2-link 3880 3881 "
3882 data-nav-desktop-link 3883 3884 > <span>COFFEE COLLECTIONS</span></a></li></ul></details></li> <li 3885 class=" 3886 nav-desktop__tier-1-item 3887 3888 3889 nav-desktop__tier-1-item--dropdown-parent 3890 3891 3892 " 3893 data-nav-desktop-parent 3894 data-meganav-desktop-target="shop-equipment" 3895 > <details data-nav-desktop-details> <summary data-href="/collections/coffee-equipment" 3896 3897 class=" 3898 nav-desktop__tier-1-link 3899 nav-desktop__tier-1-link--parent 3900 3901 " 3902 data-nav-desktop-link 3903 3904 aria-expanded="false" 3905 aria-controls="nav-tier-2-3" 3906 role="button" 3907 3908 > <span data-nav-title>SHOP EQUIPMENT</span> <span class="icon-down-arrow"></span></summary> <ul 3909 3910 id="nav-tier-2-3" 3911 class=" 3912 nav-desktop__tier-2 3913 3914 3915 nav-desktop__tier-2--dropdown 3916 3917 3918 " 3919 tabindex="-1" 3920 data-nav-desktop-tier-2 3921 data-nav-desktop-submenu 3922 3923 > <li 3924 class="nav-desktop__tier-2-item" 3925 3926 > <a href="/collections/espresso-machines" 3927 3928 class=" 3929 nav-desktop__tier-2-link 3930 3931 " 3932 data-nav-desktop-link 3933 3934 > <span>ESPRESSO MACHINES</span></a></li> <li 3935 class="nav-desktop__tier-2-item" 3936 3937 > <a href="/collections/coffee-grinders" 3938 3939 class=" 3940 nav-desktop__tier-2-link 3941 3942 " 3943 data-nav-desktop-link 3944 3945 > <span>COFFEE GRINDERS</span></a></li> <li 3946 class="nav-desktop__tier-2-item" 3947 3948 > <a href="/collections/coffee-brewing-equipment" 3949 3950 class=" 3951 nav-desktop__tier-2-link 3952 3953 " 3954 data-nav-desktop-link 3955 3956 > <span>BREWING GEAR</span></a></li> <li 3957 class="nav-desktop__tier-2-item" 3958 3959 > <a href="/collections/exclusive-equipment-bundles" 3960 3961 class=" 3962 nav-desktop__tier-2-link 3963 3964 " 3965 data-nav-desktop-link 3966 3967 > <span>EXCLUSIVE EQUIPMENT BUNDLES</span></a></li></ul></details></li> <li 3968 class=" 3969 nav-desktop__tier-1-item 3970 3971 " 3972 3973 data-meganav-desktop-target="subscriptions" 3974 > <a href="/collections/subscriptions" 3975 3976 class=" 3977 nav-desktop__tier-1-link 3978 3979 3980 " 3981 data-nav-desktop-link 3982 3983 > <span data-nav-title>SUBSCRIPTIONS</span></a></li> <li 3984 class=" 3985 nav-desktop__tier-1-item 3986 3987 " 3988 3989 data-meganav-desktop-target="wholesale-portal" 3990 > <a href="https://altitudecoffeelondon.com/apps/wpdapp/wholesale/login" 3991 3992 class=" 3993 nav-desktop__tier-1-link 3994 3995 3996 " 3997 data-nav-desktop-link 3998 3999 > <span data-nav-title>WHOLESALE PORTAL</span></a></li></ul> 4000</nav> 4001 4002 4003 4004 4005 4006<nav 4007 class="nav-desktop " 4008 data-nav 4009 data-nav-desktop 4010 aria-label="Translation missing: en.navigation.header.main_nav" 4011> <template data-nav-parent-template> <li 4012 class=" 4013 nav-desktop__tier-1-item 4014 nav-desktop__tier-1-item--widemenu-parent 4015 " 4016 data-nav-desktop-parent 4017 > <details data-nav-desktop-details> <summary 4018 data-href 4019 class=" 4020 nav-desktop__tier-1-link 4021 nav-desktop__tier-1-link--parent 4022 "
4023 data-nav-desktop-link 4024 aria-expanded="false" 4025 4026 aria-controls="nav-tier-2-" 4027 role="button" 4028 > <span data-nav-title></span> <span class="icon-down-arrow"></span></summary> <div 4029 class=" 4030 nav-desktop__tier-2 4031 nav-desktop__tier-2--full-width-menu 4032 " 4033 tabindex="-1" 4034 data-nav-desktop-tier-2 4035 data-nav-desktop-submenu 4036 data-nav-desktop-full-width-menu 4037 data-meganav-target-container 4038 ></details></li></template> <ul 4039 class="nav-desktop__tier-1" 4040 data-nav-desktop-tier-1 4041 ></ul> 4042</nav></div> <div class="search-container" data-autocomplete-true> <form action="/search" class="search__form"> <input type="hidden" name="type" value="product" /> <span class="icon-search search-submit"></span> <input type="text" name="q" placeholder="Search" value="" autocapitalize="off" autocomplete="off" autocorrect="off" /></form> <div class="search-link"> <a href="/search" class="icon-search dropdown_link" title="Search" data-dropdown-rel="search"></a></div></div></div> 4043 4044</header> 4045 4046
4047<script> 4048 (() => { 4049 const header = document.querySelector('[data-header-feature-image="true"]'); 4050 if (header) { 4051 header.classList.add('feature_image'); 4052 } 4053 4054 const headerContent = document.querySelector('[data-header-is-absolute="true"]'); 4055 if (header) { 4056 header.classList.add('is-absolute'); 4057 } 4058 })(); 4059</script>
4059 4060 4061<style> 4062 div.header__logo, 4063 div.header__logo img, 4064 div.header__logo span, 4065 .sticky_nav .menu-position--block .header__logo { 4066 max-width: 160px; 4067 } 4068 4069 @media (min-width: 1025px) { 4070 .main-nav .header__logo { 4071 margin-left: 30px; 4072 } 4073 } 4074</style> 4075 4076 4077</div> <div class="mega-menu-container nav-desktop__tier-1"></div> <div class="section-wrapper"> 4078 4079 4080 <wlm class="wlm-content"> <div id="shopify-section-template--25721425101179__main" class="shopify-section shopify-section--product-template is-product-main content">
4080<script 4081 type="application/json" 4082 data-section-type="product-template" 4083 data-section-id="template--25721425101179__main" 4084> 4085</script>
4085 4086 4087<div class="section"> <div class="container"> <section 4088 class=" 4089 product-container 4090 is-flex 4091 is-flex-wrap 4092 " 4093 > 4094 4095 4096 4097<style> 4098 h1.product_name, 4099 h2.product_name, 4100 h2.product_name a, 4101 body .product-main .product__details .product_name { 4102 font-weight: 500 !important; 4103 } 4104 .modal_price, 4105 .modal_price .money, 4106 .modal_price .current_price { 4107 font-weight: 500 !important; 4108 } 4109 4110 /* Reviews.io rating snippet â uniform brand orange */ 4111 .ruk_rating_snippet [class*="ruk-icon-percentage-star"] { 4112 color: #B86E36 !important; 4113 } 4114</style> 4115 4116 4117 4118 4119 4120 4121 4122
4123<script type="application/ld+json"> 4124 { 4125 "@context": "http://schema.org/", 4126 "@type": "Product", 4127 "name": "The Captainâs Roast - Espresso Blend", 4128 "image": "https:\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap_1024x1024.jpg?v=1680956690", 4129 4130 "description": "\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e", 4131 4132 4133 "brand": { 4134 "@type": "Thing", 4135 "name": "Altitude Coffee London" 4136 }, 4137 4138 4139 "sku": "CAPTAIN250-WB", 4140 4141 4142 "mpn": "5065010122000", 4143 4144 "offers": { 4145 "@type": "Offer", 4146 "priceCurrency": "GBP", 4147 "price": 11.5, 4148 "availability": "http://schema.org/InStock", 4149 "url": "https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend?variant=38309800706246", 4150 "seller": { 4151 "@type": "Organization", 4152 "name": "Altitude Coffee London" 4153 }, 4154 "priceValidUntil": "2027-10-09" 4155 } 4156 } 4157</script>
4157 4158 4159 4160 4161<div class="product-main product-6253847085254"> <div 4162 class=" 4163 product_section 4164 js-product-section 4165 js-product-section--product 4166 container 4167 is-flex 4168 is-flex-row 4169 4170 " 4171 4172 data-rv-handle="espresso-roast-coffee-blend" 4173 4174 > <div 4175 class=" 4176 product__images 4177 4178 three-fifths 4179 columns 4180 4181 medium-down--one-whole 4182 " 4183 > 4184 4185 4186 4187 4188 4189 4190 4191<style data-shopify> 4192.shopify-model-viewer-ui model-viewer { 4193 --progress-bar-height: 2px; 4194 --progress-bar-color: #13322b; 4195} 4196</style> 4197 4198<div class="gallery-wrap 4199 gallery-arrows--true 4200 product-height-set 4201 gallery-thumbnails--bottom"> <div class="product_gallery 4202 js-product-gallery product-6253847085254-gallery 4203 transparentBackground--false 4204 slideshow-transition--fade 4205 popup-enabled--false 4206 show-gallery-arrows--true 4207 multi-image " 4208 data-thumbnails-enabled="true" 4209 data-gallery-arrows-enabled="true" 4210 data-slideshow-speed="0" 4211 data-thumbnails-position="bottom" 4212 data-thumbnails-slider-enabled="true" 4213 data-zoom="false" 4214 data-video-loop="false" 4215 data-product-id="6253847085254" 4216 data-product-lightbox="false" 4217 data-media-count="3" 4218 data-product-gallery> <div class="gallery-cell" data-product-id="6253847085254" data-media-type="image" data-thumb="" data-title=""> <div class="image__container" style="max-width: 4016px"> <img data-zoom-src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_5000x.jpg?v=1680956690" 4219 alt="The Captain's Roast Espresso Blend. Specialty coffee blend" 4220 class=" 4221 product-gallery__image 4222 lazyload 4223 blur-up 4224 " 4225 data-image-id="33293037175102" 4226 data-index="0" 4227 data-sizes="auto" 4228 data-aspectratio="4016/4016" 4229 data-src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_1200x.jpg?v=1680956690" 4230 data-srcset=" //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_200x.jpg?v=1680956690 200w, 4231 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_400x.jpg?v=1680956690 400w, 4232 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_600x.jpg?v=1680956690 600w, 4233 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_800x.jpg?v=1680956690 800w, 4234 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_1200x.jpg?v=1680956690 1200w, 4235 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_2000x.jpg?v=1680956690 2000w" 4236 height="4016" 4237 width="4016" 4238 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='4016'%20height='4016'></svg>" 4239 /></div></div> <div class="gallery-cell" data-product-id="6253847085254" data-media-type="image" data-thumb="" data-title="The Captain&#39;s Roast Espresso Blend. Specialty coffee blend"> <div class="image__container" style="max-width: 2000px"> <img data-zoom-src="//altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_5000x.jpg?v=1688998076" 4240 alt="The Captain's Roast coffee blend taste notes" 4241 class=" 4242 product-gallery__image 4243 lazyload 4244 blur-up 4245 " 4246 data-image-id="34232458019134" 4247 data-index="1" 4248 data-sizes="auto" 4249 data-aspectratio="2000/2000" 4250 data-src="//altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_1200x.jpg?v=1688998076" 4251 data-srcset=" //altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_200x.jpg?v=1688998076 200w, 4252 //altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_400x.jpg?v=1688998076 400w, 4253 //altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_600x.jpg?v=1688998076 600w, 4254 //altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_800x.jpg?v=1688998076 800w, 4255 //altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_1200x.jpg?v=1688998076 1200w, 4256 //altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_2000x.jpg?v=1688998076 2000w" 4257 height="2000" 4258 width="2000" 4259 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='2000'%20height='2000'></svg>" 4260 /></div></div> <div class="gallery-cell" data-product-id="6253847085254" data-media-type="image" data-thumb="" data-title="The Captain&#39;s Roast coffee blend taste notes"> <div class="image__container" style="max-width: 4016px"> <img data-zoom-src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_5000x.jpg?v=1688998076" 4261 alt="The Captain's Roast espresso blend on white background" 4262 class=" 4263 product-gallery__image 4264 lazyload 4265 blur-up 4266 " 4267 data-image-id="33293037207870" 4268 data-index="2" 4269 data-sizes="auto" 4270 data-aspectratio="4016/4016" 4271 data-src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_1200x.jpg?v=1688998076" 4272 data-srcset=" //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_200x.jpg?v=1688998076 200w, 4273 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_400x.jpg?v=1688998076 400w, 4274 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_600x.jpg?v=1688998076 600w, 4275 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_800x.jpg?v=1688998076 800w, 4276 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_1200x.jpg?v=1688998076 1200w, 4277 //altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_2000x.jpg?v=1688998076 2000w" 4278 height="4016" 4279 width="4016" 4280 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='4016'%20height='4016'></svg>" 4281 /></div></div></div> <div class=" 4282 product_gallery_nav 4283 4284 product-gallery__thumbnails 4285 product_gallery_nav-- 4286 product-6253847085254-gallery-nav 4287 " 4288 > <div tabindex="0" class="gallery-cell product-gallery__thumbnail" data-title="The Captain's Roast Espresso Blend. Specialty coffee blend"> <img src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_300x.jpg?v=1680956690" alt="The Captain's Roast Espresso Blend. Specialty coffee blend"></div> <div tabindex="0" class="gallery-cell product-gallery__thumbnail" data-title="The Captain's Roast coffee blend taste notes"> <img src="//altitudecoffeelondon.com/cdn/shop/files/Altitude-end-frames-2023-Captains-Roast-1_300x.jpg?v=1688998076" alt="The Captain's Roast coffee blend taste notes"></div> <div tabindex="0" class="gallery-cell product-gallery__thumbnail" data-title="The Captain's Roast espresso blend on white background"> <img src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_300x.jpg?v=1688998076" alt="The Captain's Roast espresso blend on white background"></div></div> 4289 4290 4291</div></div> <div 4292 class=" 4293 4294 two-fifths 4295 columns 4296 4297 medium-down--one-whole 4298 product__details 4299 product__details--product-page 4300 " 4301 > <div class="price-ui-badges price-ui-badges--square"> 4302 4303<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 4304 .price-ui-badge--loading { 4305 display: block !important; 4306 opacity: 1 !important; 4307 }</style></noscript></div></div> 4308 4309 4310<div 4311 class=" 4312 product-block 4313 product-block--title 4314 4315 product-block--first 4316 4317 " 4318 4319 > <div style="position:relative;"> <h1 class="product_name">The Captainâs Roast - Espresso Blend</h1> <div name="secomapp-fg-image-6253847085254" style="display: none;"><img src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/icon-freegift.png?v=106158636409762445791791218265" alt="FG icon" class="sca-fg-img-collect" /></div></div> <div class="feature-divider"></div></div> 4320 4321<div 4322 class=" 4323 product-block 4324 product-block--@app 4325 4326 " 4327 4328 > <div id="shopify-block-ATjVBdU9kT0JhMVZ5Q__reviews_io_reviewsio_rating_output_C3y7rn-1" class="shopify-block shopify-app-block"><reviewsio-product-ratings data-id="ATjVBdU9kT0JhMVZ5Q__reviews_io_reviewsio_rating_output_C3y7rn-1"> 4329<div class="ruk_rating_snippet" data-sku="CAPTAIN250-WB;CAPTAIN250-E;CAPTAIN250-F;CAPTAIN250-P;CAPTAIN500-WB;CAPTAIN1K-WB;38309800706246;38309800804550;38309800837318;38309800870086;38309800739014;38309800771782;6253847085254;espresso-roast-coffee-blend"></div> 4330</reviewsio-product-ratings> 4331 4332 4333</div></div> 4334 4335<div 4336 class=" 4337 product-block 4338 product-block--price 4339 4340 " 4341 4342 > <div class="modal_price" data-display-savings="false"> <div class="price-ui price-ui--loading" data-price-ui> <noscript> <style> 4343 .price-ui--loading { 4344 display: block !important; 4345 opacity: 1 !important; 4346 }</style></noscript> 4347 4348 4349 4350 4351 4352<span class="price " data-price><span class="price-min" data-price-min><span class="money" data-price>£11.50</span></span> - <span class="price-max" data-price-max><span class="money" data-price>£42.00</span></span></span></div> <form class="payment-terms-container" data-payment-terms-target style="display: none;"></form></div></div> 4353 4354<div 4355 class=" 4356 product-block 4357 product-block--custom-liquid 4358 4359 " 4360 4361 > 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375<style> 4376 .altitude-spec-strip { 4377 position: relative !important; 4378 background: 4379 linear-gradient(135deg, 4380 rgba(212, 132, 74, 0) 0%, 4381 rgba(212, 132, 74, 0.06) 50%, 4382 rgba(212, 132, 74, 0.18) 100%) !important; 4383 color: #13322B !important; 4384 border: 1px solid rgba(19, 50, 43, 0.25) !important; 4385 border-radius: 0 !important; 4386 padding: 0 !important; 4387 margin: 18px 0 22px !important; 4388 display: grid !important; 4389 grid-template-columns: 1fr 1fr !important; 4390 gap: 0 !important; 4391 overflow: hidden !important; 4392 } 4393 4394 .altitude-spec-strip::before { 4395 content: "" !important; 4396 position: absolute !important; 4397 top: 0 !important; 4398 left: 0 !important; 4399 right: 0 !important; 4400 height: 2px !important; 4401 background: #D4844A !important; 4402 z-index: 2 !important; 4403 } 4404 4405 .altitude-spec-strip__item { 4406 padding: 16px 18px !important; 4407 display: flex !important; 4408 flex-direction: column !important; 4409 gap: 6px !important; 4410 background: transparent !important; 4411 border: 0 !important; 4412 position: relative !important; 4413 z-index: 1 !important; 4414 } 4415 4416 /* Hairline dividers */ 4417 .altitude-spec-strip__item:nth-child(odd) { 4418 border-right: 1px solid rgba(19, 50, 43, 0.15) !important; 4419 } 4420 .altitude-spec-strip__item:nth-child(-n+2) { 4421 border-bottom: 1px solid rgba(19, 50, 43, 0.15) !important; 4422 } 4423 4424 .altitude-spec-strip__label { 4425 font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace !important; 4426 font-size: 10px !important; 4427 font-weight: 500 !important; 4428 letter-spacing: 1.6px !important; 4429 text-transform: uppercase !important; 4430 color: #D4844A !important; 4431 line-height: 1 !important; 4432 margin: 0 !important; 4433 } 4434 4435 .altitude-spec-strip__value { 4436 font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif !important; 4437 font-size: 15px !important; 4438 font-weight: 600 !important; 4439 letter-spacing: 0 !important; 4440 color: #13322B !important; 4441 line-height: 1.3 !important; 4442 margin: 0 !important; 4443 } 4444 4445 @media (max-width: 480px) { 4446 .altitude-spec-strip__item { 4447 padding: 14px 14px !important; 4448 } 4449 .altitude-spec-strip__value { 4450 font-size: 14px !important; 4451 } 4452 } 4453</style> 4454 4455<div class="altitude-spec-strip"> <div class="altitude-spec-strip__item"> <span class="altitude-spec-strip__label">Varietal</span> <span class="altitude-spec-strip__value">Brazil/Colombia Blend</span></div> <div class="altitude-spec-strip__item"> <span class="altitude-spec-strip__label">Process</span> <span class="altitude-spec-strip__value">Natural/Washed</span></div> <div class="altitude-spec-strip__item"> <span class="altitude-spec-strip__label">Altitude</span> <span class="altitude-spec-strip__value"> 1500-2500m</span></div> <div class="altitude-spec-strip__item"> <span class="altitude-spec-strip__label">Roast</span> <span class="altitude-spec-strip__value">Medium/Dark</span></div> 4456</div> 4457
4458<script> 4459 document.addEventListener('DOMContentLoaded', function() { 4460 var specLabels = ['Varietal:', 'Processing:', 'Altitude:', 'Roast:']; 4461 var containers = document.querySelectorAll('.description .rte, .product-tabs__panel, .tab-content, [class*="tab"] .rte'); 4462 containers.forEach(function(container) { 4463 var paragraphs = container.querySelectorAll('p'); 4464 paragraphs.forEach(function(p) { 4465 var text = p.textContent || ''; 4466 specLabels.forEach(function(label) { 4467 if (text.indexOf(label) !== -1) { 4468 p.style.display = 'none'; 4469 } 4470 }); 4471 }); 4472 }); 4473 }); 4474</script>
4474</div> 4475 4476<div 4477 class=" 4478 product-block 4479 product-block--form 4480 4481 " 4482 4483 > 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497<div 4498 class=" 4499 product_form 4500 init 4501 smart-payment-button--false 4502 product_form_options 4503 " 4504 id="product-form-6253847085254" 4505 data-product-form 4506 data-money-format="£{{amount}}" 4507 data-shop-currency="GBP" 4508 data-options-size="2" 4509 data-select-id="product-select-6253847085254template--25721425101179__main" 4510 data-enable-state="true" 4511 data-product="{"id":6253847085254,"title":"The Captainâs Roast - Espresso Blend","handle":"espresso-roast-coffee-blend","description":"\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e","published_at":"2022-10-02T15:11:31+01:00","created_at":"2021-02-22T05:47:36+00:00","vendor":"Altitude Coffee London","type":"Coffee","tags":["coffee","coffee products"],"price":1150,"price_min":1150,"price_max":4200,"available":true,"price_varies":true,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":38309800706246,"title":"250g \/ Whole Bean","option1":"250g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN250-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Whole Bean","public_title":"250g \/ Whole Bean","options":["250g","Whole Bean"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122000","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800804550,"title":"250g \/ Espresso - Fine Ground","option1":"250g","option2":"Espresso - Fine Ground","option3":null,"sku":"CAPTAIN250-E","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Espresso - Fine Ground","public_title":"250g \/ Espresso - Fine Ground","options":["250g","Espresso - Fine Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800837318,"title":"250g \/ Filter - Medium Ground","option1":"250g","option2":"Filter - Medium Ground","option3":null,"sku":"CAPTAIN250-F","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Filter - Medium Ground","public_title":"250g \/ Filter - Medium Ground","options":["250g","Filter - Medium Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800870086,"title":"250g \/ Press - Coarse Ground","option1":"250g","option2":"Press - Coarse Ground","option3":null,"sku":"CAPTAIN250-P","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 250g \/ Press - Coarse Ground","public_title":"250g \/ Press - Coarse Ground","options":["250g","Press - Coarse Ground"],"price":1150,"weight":330,"compare_at_price":null,"inventory_management":null,"barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800739014,"title":"500g \/ Whole Bean","option1":"500g","option2":"Whole Bean","option3":null,"sku":"CAPTAIN500-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 500g \/ Whole Bean","public_title":"500g \/ Whole Bean","options":["500g","Whole Bean"],"price":2200,"weight":600,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122017","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":38309800771782,"title":"1kg \/ Whole Bean","option1":"1kg","option2":"Whole Bean","option3":null,"sku":"CAPTAIN1K-WB","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"The Captainâs Roast - Espresso Blend - 1kg \/ Whole Bean","public_title":"1kg \/ Whole Bean","options":["1kg","Whole Bean"],"price":4200,"weight":1190,"compare_at_price":null,"inventory_management":null,"barcode":"5065010122024","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076","\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076"],"featured_image":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","options":["Bag Size","Grind Type"],"media":[{"alt":"The Captain's Roast Espresso Blend. Specialty coffee blend","id":33293037175102,"position":1,"preview_image":{"aspect_ratio":1.0,"height":4016,"width":4016,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690"},"aspect_ratio":1.0,"height":4016,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690","width":4016},{"alt":"The Captain's Roast coffee blend taste notes","id":34232458019134,"position":2,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076","width":2000},{"alt":"The Captain's Roast espresso blend on white background","id":33293037207870,"position":3,"preview_image":{"aspect_ratio":1.0,"height":4016,"width":4016,"src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076"},"aspect_ratio":1.0,"height":4016,"media_type":"image","src":"\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076","width":4016}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eSome espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eWe build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.\u003c\/p\u003e\n\u003cp class=\"MsoNormal\" style=\"margin-bottom: 8.0pt;\"\u003eAwarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVarietal:\u003c\/strong\u003e\u003cspan\u003e Brazil\/Colombia Blend\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProcessing:\u003c\/strong\u003e\u003cspan\u003e Natural\/Washed\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAltitude:\u003c\/strong\u003e\u003cspan\u003e \u003c\/span\u003e1500-2500m\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRoast:\u003c\/strong\u003e\u003cspan\u003e Medium\/Dark\u003c\/span\u003e\u003c\/p\u003e"}" 4512 data-product-title="The Captainâs Roast - Espresso Blend" 4513
4514 data-variant-inventory='[ 4515 4516 4517 4518{"id":38309800706246,"inventory_quantity":-1490,"inventory_management":"","inventory_policy":"deny"} 4519 4520 4521 4522 4523 4524 4525,{"id":38309800804550,"inventory_quantity":-338,"inventory_management":"","inventory_policy":"deny"} 4526 4527 4528 4529 4530 4531 4532,{"id":38309800837318,"inventory_quantity":-185,"inventory_management":"","inventory_policy":"deny"} 4533 4534 4535 4536 4537 4538 4539,{"id":38309800870086,"inventory_quantity":-152,"inventory_management":"","inventory_policy":"deny"} 4540 4541 4542 4543 4544 4545 4546,{"id":38309800739014,"inventory_quantity":-1061,"inventory_management":"","inventory_policy":"deny"} 4547 4548 4549 4550 4551 4552 4553,{"id":38309800771782,"inventory_quantity":-1503,"inventory_management":"","inventory_policy":"deny"} 4554 4555 4556]' 4557 4558 data-product-id="6253847085254" 4559 style=" margin-bottom: 15px;" 4560> <form method="post" action="/cart/add" id="product_form_6253847085254" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" data-productid="6253847085254"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /> <div 4561 class=" 4562 select 4563 4564 " 4565 > <select 4566 id="product-select-6253847085254template--25721425101179__main" 4567 name="id" data-productid="6253847085254" 4568 class="multi_select" 4569 data-variants 4570 > <option selected="selected" value="38309800706246" data-featured-image="" data-image="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_600x.gif" data-sku="CAPTAIN250-WB">250g / Whole Bean</option> <option value="38309800804550" data-featured-image="" data-image="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_600x.gif" data-sku="CAPTAIN250-E">250g / Espresso - Fine Ground</option> <option value="38309800837318" data-featured-image="" data-image="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_600x.gif" data-sku="CAPTAIN250-F">250g / Filter - Medium Ground</option> <option value="38309800870086" data-featured-image="" data-image="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_600x.gif" data-sku="CAPTAIN250-P">250g / Press - Coarse Ground</option> <option value="38309800739014" data-featured-image="" data-image="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_600x.gif" data-sku="CAPTAIN500-WB">500g / Whole Bean</option> <option value="38309800771782" data-featured-image="" data-image="//altitudecoffeelondon.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12_600x.gif" data-sku="CAPTAIN1K-WB">1kg / Whole Bean</option></select></div> 4571 4572 4573<div class="swatch_options"> 4574 4575 4576 4577 4578<div class="swatch is-flex is-flex-wrap" data-option-index="0"> <div class="option_title">Bag Size</div> 4579 4580 4581 4582 4583<input id="swatch-0-250g-6253847085254-template--25721425101179__main" type="radio" name="option-0" aria-label="250g" tabindex="0" value="250g" checked /><div tabindex="0" value="250g" data-value="250g" data-id="38309800706246" class="swatch-element 250g-swatch available"> <label for="swatch-0-250g-6253847085254-template--25721425101179__main"> 4584 250g <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622<input id="swatch-0-500g-6253847085254-template--25721425101179__main" type="radio" name="option-0" aria-label="500g" tabindex="0" value="500g" /><div tabindex="0" value="500g" data-value="500g" data-id="38309800739014" class="swatch-element 500g-swatch available"> <label for="swatch-0-500g-6253847085254-template--25721425101179__main"> 4623 500g <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634<input id="swatch-0-1kg-6253847085254-template--25721425101179__main" type="radio" name="option-0" aria-label="1kg" tabindex="0" value="1kg" /><div tabindex="0" value="1kg" data-value="1kg" data-id="38309800771782" class="swatch-element 1kg-swatch available"> <label for="swatch-0-1kg-6253847085254-template--25721425101179__main"> 4635 1kg <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4636 4637 4638 4639 4640 4641 4642</div> 4643 4644 4645 4646 4647 4648<div class="swatch is-flex is-flex-wrap" data-option-index="1"> <div class="option_title">Grind Type</div> 4649 4650 4651 4652 4653<input id="swatch-1-Whole-Bean-6253847085254-template--25721425101179__main" type="radio" name="option-1" aria-label="Whole Bean" tabindex="0" value="Whole Bean" checked /><div tabindex="0" value="Whole Bean" data-value="Whole Bean" data-id="38309800706246" class="swatch-element whole-bean-swatch available"> <label for="swatch-1-Whole-Bean-6253847085254-template--25721425101179__main"> 4654 Whole Bean <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665<input id="swatch-1-Espresso---Fine-Ground-6253847085254-template--25721425101179__main" type="radio" name="option-1" aria-label="Espresso - Fine Ground" tabindex="0" value="Espresso - Fine Ground" /><div tabindex="0" value="Espresso - Fine Ground" data-value="Espresso - Fine Ground" data-id="38309800804550" class="swatch-element espresso-fine-ground-swatch available"> <label for="swatch-1-Espresso---Fine-Ground-6253847085254-template--25721425101179__main"> 4666 Espresso - Fine Ground <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677<input id="swatch-1-Filter---Medium-Ground-6253847085254-template--25721425101179__main" type="radio" name="option-1" aria-label="Filter - Medium Ground" tabindex="0" value="Filter - Medium Ground" /><div tabindex="0" value="Filter - Medium Ground" data-value="Filter - Medium Ground" data-id="38309800837318" class="swatch-element filter-medium-ground-swatch available"> <label for="swatch-1-Filter---Medium-Ground-6253847085254-template--25721425101179__main"> 4678 Filter - Medium Ground <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689<input id="swatch-1-Press---Coarse-Ground-6253847085254-template--25721425101179__main" type="radio" name="option-1" aria-label="Press - Coarse Ground" tabindex="0" value="Press - Coarse Ground" /><div tabindex="0" value="Press - Coarse Ground" data-value="Press - Coarse Ground" data-id="38309800870086" class="swatch-element press-coarse-ground-swatch available"> <label for="swatch-1-Press---Coarse-Ground-6253847085254-template--25721425101179__main"> 4690 Press - Coarse Ground <img class="crossed-out" src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/soldout.png?v=1691084988656754171791218265" aria-label="sold out" alt="sold out"/></label></div> 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715</div></div> <div class="items_left"></div> <div class="purchase-details"> <div class="purchase-details__quantity product-quantity-box"> <label for="quantity">Qty</label> <span class="ss-icon product-minus js-change-quantity" data-func="minus"><span class="icon-minus"></span></span> <input type="number" min="1" size="2" class="quantity" name="quantity" id="quantity" value="1" /> <span class="ss-icon product-plus js-change-quantity" data-func="plus"><span class="icon-plus"></span></span></div> <div class="purchase-details__buttons purchase-details__spb--false "> <button 4716 type="button" 4717 name="add" 4718 class=" 4719 add_to_cart 4720 global-button 4721 4722 global-button--primary 4723 4724 4725 ajax-submit 4726 4727 4728 " 4729 data-label="Add To Basket" 4730 > <span class="text"> 4731 Add To Basket</span> <svg x="0px" y="0px" width="32px" height="32px" viewBox="0 0 32 32" class="checkmark"> <path fill="none" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" d="M9,17l3.9,3.9c0.1,0.1,0.2,0.1,0.3,0L23,11"/></svg></button> <div data-payment-terms-reference style="display: none;"></div></div></div> 4732<input type="hidden" name="product-id" value="6253847085254" /><input type="hidden" name="section-id" value="template--25721425101179__main" /></form> 4733 4734<div class="sca-fg-cat-list" style="display:none;" name="secomapp-fg-data-6253847085254"></div> <div class="surface-pick-up surface-pick-up--loading" data-surface-pick-up></div> <div class="surface-pick-up__modal" data-surface-pick-up-modal></div> 4735</div></div> 4736 4737<div 4738 class=" 4739 product-block 4740 product-block--custom-liquid 4741 4742 " 4743 4744 > 4745 4746 4747<div class="altitude-trust-bar"> <div class="altitude-trust-bar__item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 18H3c-.6 0-1-.4-1-1V7c0-.6.4-1 1-1h10c.6 0 1 .4 1 1v11"/> <path d="M14 9h4l4 4v4c0 .6-.4 1-1 1h-2"/> <circle cx="7" cy="18" r="2"/> <circle cx="17" cy="18" r="2"/></svg> <span>Free tracked shipping over £30</span></div> 4748</div> 4749<style> 4750 .altitude-trust-bar { 4751 display: flex !important; 4752 justify-content: center !important; 4753 max-width: 400px !important; 4754 margin: 16px 0 8px 0 !important; 4755 background: transparent !important; 4756 border: 0 !important; 4757 } 4758 .altitude-trust-bar__item { 4759 display: inline-flex !important;
4760 align-items: center !important; 4761 gap: 9px !important; 4762 background: transparent !important; 4763 border: 1px solid rgba(19, 50, 43, 0.3) !important; 4764 border-radius: 0 !important; 4765 padding: 9px 14px !important; 4766 font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace !important; 4767 font-size: 10.5px !important; 4768 font-weight: 500 !important; 4769 letter-spacing: 1.2px !important; 4770 text-transform: uppercase !important; 4771 color: #13322B !important; 4772 line-height: 1.3 !important; 4773 transition: border-color 0.15s ease !important; 4774 } 4775 .altitude-trust-bar__item:hover { 4776 border-color: #D4844A !important; 4777 } 4778 .altitude-trust-bar__item svg { 4779 width: 16px !important; 4780 height: 16px !important; 4781 min-width: 16px !important; 4782 stroke: #D4844A !important; 4783 flex-shrink: 0 !important; 4784 } 4785 @media (max-width: 480px) { 4786 .altitude-trust-bar__item { 4787 padding: 8px 12px !important; 4788 font-size: 10px !important; 4789 letter-spacing: 1px !important; 4790 gap: 8px !important; 4791 } 4792 .altitude-trust-bar__item svg { 4793 width: 14px !important; 4794 height: 14px !important; 4795 min-width: 14px !important; 4796 } 4797 } 4798 4799 /* Reviews.io rating snippet â match brand orange */ 4800 .ruk_rating_snippet [class*="ruk-icon-percentage-star"] { 4801 color: #B86E36 !important; 4802 } 4803</style></div></div></div> 4804</div> <style data-shopify> 4805 .gallery-wrap model-viewer { 4806 min-height: 600px; 4807 } 4808 4809 .gallery-wrap .product_gallery img, 4810 .gallery-wrap .product_gallery .plyr--html5 video, 4811 .gallery-wrap .product_gallery .plyr--youtube { 4812 max-height: 600px; 4813 }</style>
4813<script> 4814 window.ShopifyXR=window.ShopifyXR||function(){(ShopifyXR.q=ShopifyXR.q||[]).push(arguments)} 4815 4816 ShopifyXR('addModels', []);</script>
4816
4816<script defer src="https://cdn.shopify.com/shopifycloud/shopify-xr-js/assets/v1.0/shopify-xr.en.js"></script>
4816
4816<script defer src="https://cdn.shopify.com/shopifycloud/model-viewer-ui/assets/v1.0/model-viewer-ui.en.js"></script>
4816</section></div> 4817</div> 4818 4819 4820</div><div id="shopify-section-template--25721425101179__divider_yrJMcp" class="shopify-section shopify-section--divider">
4820<script 4821 type="application/json" 4822 data-section-type="divider" 4823 data-section-id="template--25721425101179__divider_yrJMcp" 4824> 4825</script>
4825 4826 4827<style data-shopify> 4828 4829 4830 4831 #shopify-section-template--25721425101179__divider_yrJMcp { 4832 margin: 5px 0; 4833 } 4834</style> 4835 4836<section class="section "> <div class="container"> <div class="one-whole column"> <hr class="divider divider--false"></div></div> 4837</section> 4838 4839</div><div id="shopify-section-template--25721425101179__1653992034150124f4" class="shopify-section"><div class="product-app--container"> <div class="container"> <div class="one-whole column"> <div id="shopify-block-AYkVXQVNlNVNwWW00V__f0af3aca-f995-443d-8726-eb97085665df" class="shopify-block shopify-app-block station-tabs-product-block"><div id="station-tabs_AYkVXQVNlNVNwWW00V__f0af3aca-f995-443d-8726-eb97085665df" class="station-tabs" 4840 4841 data-pro-tabs="true" 4842 data-start-tab-element="h4" 4843 4844 data-default-tab="false" 4845 data-default-tab-title="Description" 4846 data-show-local-above="true" 4847 data-show-global-above="false" 4848 data-show-tabset="false" 4849 data-show-local-below="false" 4850 data-show-global-below="false" 4851 4852 data-stop-tabs-element="false" 4853 data-show-stop-element="true" 4854 data-layout="horizontal" 4855 4856 data-allow-multiple-open="false" 4857 data-open-first-tab="true" 4858 4859 data-deep-links="false" 4860 data-remove-empty-tabs="false" 4861 data-clean-content-level="basic_tags" 4862 data-lang="en" 4863 4864 > <div class="station-tabs-local-above" style="display: none"><p class="MsoNormal" style="margin-bottom: 8.0pt;">Some espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.</p> 4865<p class="MsoNormal" style="margin-bottom: 8.0pt;">We build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.</p> 4866<p class="MsoNormal" style="margin-bottom: 8.0pt;">Awarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.</p> 4867<p><strong>Varietal:</strong><span> Brazil/Colombia Blend</span></p> 4868<p><strong>Processing:</strong><span> Natural/Washed</span></p> 4869<p><strong>Altitude:</strong><span>Â </span>1500-2500m</p> 4870<p><strong>Roast:</strong><span> Medium/Dark</span></p></div> <div class="station-tabs-global-above"></div> <div class="station-tabs-tabset mod-indicators mod-indicators-chevrons mod-indicators-after 4871 4872"><!-- BEGIN app snippet: product_pro_tabs --><!-- END app snippet --></div> <div class="station-tabs-local-below"></div> <div class="station-tabs-global-below"></div></div>
4872<script> 4873 ;(function() { 4874 4875 4876 4877 var setCustomStyles = function() { 4878 var styles = document.getElementById('tabs-by-station-custom-styles') 4879 4880 if (!styles) { 4881 var s = document.createElement('style');s.innerText = ".station-tabs .station-tabs-link{margin:0px 14px 14px 0px !important;border-radius:5px !important;padding:8px 14px 8px 14px !important;font-weight:500 !important;color:#474747 !important;border-color:#474747 !important;border-style:solid !important;border-width:1px !important;}.station-tabs.mod-full-width .station-tabs-link, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-link{margin:0 0 14px !important;padding:12px 18px !important;}.station-tabs .station-tabs-tab{margin:0px 14px 14px 0px !important;border-radius:5px !important;padding:8px 14px 8px 14px !important;font-weight:500 !important;color:#474747 !important;border-color:#474747 !important;border-style:solid !important;border-width:1px !important;}.station-tabs.mod-full-width .station-tabs-tab, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-tab{margin:0 0 14px !important;padding:12px 18px !important;}.station-tabs .station-tabs-content-inner > :first-child{margin-top:0 !important;}.station-tabs .station-tabs-tabcontent > :first-child{margin-top:0 !important;}.station-tabs .station-tabs-content-inner > :last-child{margin-bottom:0 !important;}.station-tabs .station-tabs-tabcontent > :last-child{margin-bottom:0 !important;}.station-tabs .station-tabs-link:hover{color:#fff !important;background-color:#F6F6F6 !important;}.station-tabs .station-tabs-tab:hover{color:#fff !important;background-color:#F6F6F6 !important;}.station-tabs .station-tabs-link.is-active:hover{color:#fff !important;background-color:#F6F6F6 !important;}.station-tabs .station-tabs-tab.is-active:hover{color:#fff !important;background-color:#F6F6F6 !important;}[data-station-tabs-app] .station-tabs{justify-content:center !important;}.station-tabs .station-tabs-tabset{justify-content:center !important;}.station-tabs .station-tabs-link.is-active{color:#474747 !important;}.station-tabs .station-tabs-tab.is-active{color:#474747 !important;}.station-tabs .station-tabs-content-inner{margin:8px 0px 0px 0px !important;padding:0px 10px 0px 10px !important;}.station-tabs.mod-full-width .station-tabs-content-inner, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-content-inner{margin:0 !important;padding:12px 18px 36px 18px !important;}.station-tabs .station-tabs-tabcontent{margin:8px 0px 0px 0px !important;padding:0px 10px 0px 10px !important;}.station-tabs.mod-full-width .station-tabs-tabcontent, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-tabcontent{margin:0 !important;padding:12px 18px 36px 18px !important;}.station-tabs.mod-full-width .station-tabs-link:last-of-type, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-link:last-of-type{margin:0 !important;}.station-tabs.mod-full-width .station-tabs-tabtitle:last-of-type .station-tabs-tab, .station-tabs .station-tabs-tabset.mod-vertical .station-tabs-tabtitle:last-of-type .station-tabs-tab{margin:0 !important;}"; 4882 document.head.appendChild(s); 4883 } 4884 } 4885 4886 document.addEventListener('stationTabsAPIReady', function(e) { 4887 4888 if (e.detail.version) { 4889 var instance = document.getElementById('station-tabs_AYkVXQVNlNVNwWW00V__f0af3aca-f995-443d-8726-eb97085665df'); 4890 instance.innerHTML = ''; 4891 4892 return 4893 } 4894 4895 4896 4897 setCustomStyles(); 4898 4899 4900 var instance = e.detail.createInstance('#station-tabs_AYkVXQVNlNVNwWW00V__f0af3aca-f995-443d-8726-eb97085665df'); 4901 4902 4903 4904 }); 4905 4906 4907 4908 })();</script>
4908</div></div></div> 4909</div> 4910 4911 4912</div><div id="shopify-section-template--25721425101179__custom_liquid_nbAiJ9" class="shopify-section shopify-section--custom-liquid">
4912<script 4913 type="application/json" 4914 data-section-type="custom-liquid" 4915 data-section-id="template--25721425101179__custom_liquid_nbAiJ9" 4916> 4917</script>
4917 4918 4919 4920<style data-shopify> 4921 4922 4923</style> 4924 4925<section class="section "> <div class="container"> <div class="one-whole column"> 4926 4927 4928<div class="altitude-guarantee"> <div class="altitude-guarantee__rule"></div> <div class="altitude-guarantee__inner"> <svg class="altitude-guarantee__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/> <path d="M9 12l2 2 4-4"/></svg> <div class="altitude-guarantee__copy"> <div class="altitude-guarantee__eyebrow">Our Guarantee</div> <p class="altitude-guarantee__body"> 4929 It's our mission to deliver the finest coffee. If you're not happy, we'll send you a different coffee for free. <em>No questions asked.</em></p></div></div> 4930</div> 4931 4932<style> 4933 .altitude-guarantee { 4934 margin: 18px 0 12px 0 !important; 4935 padding: 0 !important; 4936 } 4937 4938 .altitude-guarantee__rule { 4939 width: 100% !important; 4940 height: 1px !important; 4941 background: rgba(19, 50, 43, 0.15) !important; 4942 margin-bottom: 18px !important; 4943 } 4944 4945 .altitude-guarantee__inner { 4946 display: flex !important; 4947 align-items: flex-start !important; 4948 gap: 14px !important; 4949 padding: 0 4px !important; 4950 } 4951 4952 .altitude-guarantee__icon { 4953 width: 28px !important; 4954 height: 28px !important; 4955 min-width: 28px !important; 4956 stroke: #D4844A !important; 4957 flex-shrink: 0 !important; 4958 margin-top: 2px !important; 4959 } 4960 4961 .altitude-guarantee__copy { 4962 flex: 1 !important; 4963 } 4964 4965 .altitude-guarantee__eyebrow { 4966 font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace !important; 4967 font-size: 10px !important; 4968 font-weight: 500 !important; 4969 letter-spacing: 2px !important; 4970 text-transform: uppercase !important; 4971 color: #D4844A !important; 4972 line-height: 1 !important; 4973 margin-bottom: 8px !important; 4974 } 4975 4976 .altitude-guarantee__body { 4977 font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif !important; 4978 font-size: 13px !important; 4979 font-weight: 400 !important; 4980 line-height: 1.55 !important; 4981 color: #13322B !important; 4982 margin: 0 !important; 4983 letter-spacing: 0 !important; 4984 } 4985 4986 .altitude-guarantee__body em { 4987 font-family: 'Bodoni Moda', Georgia, serif !important; 4988 font-style: italic !important; 4989 font-weight: 500 !important; 4990 color: #D4844A !important; 4991 } 4992 4993 @media (max-width: 480px) { 4994 .altitude-guarantee__inner { 4995 gap: 12px !important; 4996 } 4997 .altitude-guarantee__icon { 4998 width: 24px !important; 4999 height: 24px !important; 5000 min-width: 24px !important; 5001 } 5002 .altitude-guarantee__body { 5003 font-size: 12.5px !important; 5004 } 5005 } 5006</style></div></div> 5007</section> 5008 5009</div><div id="shopify-section-template--25721425101179__22e2fcca-22aa-43db-ac88-6b378443f567" class="shopify-section shopify-section--divider">
5009<script 5010 type="application/json" 5011 data-section-type="divider" 5012 data-section-id="template--25721425101179__22e2fcca-22aa-43db-ac88-6b378443f567" 5013> 5014</script>
5014 5015 5016<style data-shopify> 5017 5018 5019 5020 #shopify-section-template--25721425101179__22e2fcca-22aa-43db-ac88-6b378443f567 { 5021 margin: 10px 0; 5022 } 5023</style> 5024 5025<section class="section "> <div class="container"> <div class="one-whole column"> <hr class="divider divider--false"></div></div> 5026</section> 5027 5028</div><div id="shopify-section-template--25721425101179__altitude_why_choose_us_cbRH6F" class="shopify-section"> 5029 5030<section class="altitude-why-section"> <div class="altitude-why-inner"> <div class="altitude-why-header"> <div> <div class="altitude-why-eyebrow">Why Choose Altitude</div> <h2 class="altitude-why-heading">Coffee Roasted with <em>Purpose & Precision</em></h2></div> <p class="altitude-why-intro">We're a small team of obsessive roasters in London. Every decision â from sourcing to shipping â is guided by quality, fairness, and sustainability.</p></div> <div class="altitude-why-grid"> <div class="altitude-why-card"> <div class="altitude-why-card__icon altitude-why-card__icon--copper"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="8" r="6"/> <path d="M15.477 12.89 17 22l-5-3-5 3 1.523-9.11"/></svg></div> <h4>Award-Winning Quality</h4> <p>Great Taste Award winners 2021â2024. Multi-year recognition from the UK's premier food and drink competition.</p> <div class="altitude-why-card__accent"></div></div> <div class="altitude-why-card"> <div class="altitude-why-card__icon altitude-why-card__icon--green"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M7 20h10"/> <path d="M10 20c5.5-2.5.8-6.4 3-10"/> <path d="M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z"/> <path d="M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z"/></svg></div> <h4>Ethically Sourced</h4> <p>Sourced directly from farmers producing speciality-grade beans. Producers are paid over twice the Fair Trade rate.</p> <div class="altitude-why-card__accent"></div></div> <div class="altitude-why-card"> <div class="altitude-why-card__icon altitude-why-card__icon--green"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19.2 2.96a1 1 0 0 1 1.8.4c.06.84-.32 8.85-7 12.36"/> <path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"/></svg></div> <h4>Conscious Impact</h4> <p>Zero-plastic packaging made from plant starch. Production waste goes to a local organic farm for composting.</p> <div class="altitude-why-card__accent"></div></div> <div class="altitude-why-card"> <div class="altitude-why-card__icon altitude-why-card__icon--copper"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"/> <path d="M15 18H9"/> <path d="M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14"/> <circle cx="17" cy="18" r="2"/> <circle cx="7" cy="18" r="2"/></svg></div> <h4>Trusted Partner</h4> <p>Friendly, efficient service from a dedicated small team. Royal Mail 24 shipping. Satisfaction guaranteed or we replace your coffee.</p> <div class="altitude-why-card__accent"></div></div></div> <div class="altitude-stat-bar"> <div class="altitude-stat-item"> <div class="altitude-stat-num">1000<span class="accent">+</span></div> <div class="altitude-stat-label">Five-Star Reviews</div></div> <div class="altitude-stat-item"> <div class="altitude-stat-num">6<span class="accent">x</span></div> <div class="altitude-stat-label">Great Taste Award winners</div></div> <div class="altitude-stat-item"> <div class="altitude-stat-num">0<span class="accent">%</span></div> <div class="altitude-stat-label">Plastic in Packaging</div></div></div></div> 5031</section> 5032 5033<style> 5034 .altitude-why-section { 5035 background: #13322B; 5036 padding: 80px 0; 5037 position: relative; 5038 overflow: hidden; 5039 } 5040 .altitude-why-section::before { 5041 content: ''; 5042 position: absolute; 5043 inset: 0; 5044 background: 5045 radial-gradient(ellipse 50% 60% at 15% 30%, rgba(212, 132, 74, 0.08), transparent 60%), 5046 radial-gradient(ellipse 40% 50% at 85% 70%, rgba(248, 241, 218, 0.04), transparent 60%); 5047 pointer-events: none; 5048 } 5049 .altitude-why-inner { 5050 max-width: 1200px; 5051 margin: 0 auto; 5052 padding: 0 20px; 5053 position: relative; 5054 z-index: 2; 5055 } 5056 .altitude-why-header { 5057 display: grid; 5058 grid-template-columns: 1fr 1fr; 5059 gap: 40px; 5060 align-items: end; 5061 margin-bottom: 56px; 5062 } 5063 .altitude-why-eyebrow { 5064 font-family: 'DM Mono', ui-monospace, monospace; 5065 font-size: 11px; 5066 letter-spacing: 3px; 5067 text-transform: uppercase; 5068 font-weight: 600; 5069 color: #D4844A; 5070 margin-bottom: 14px; 5071 } 5072 .altitude-why-heading { 5073 font-family: 'Big Shoulders Stencil Display', Impact, sans-serif; 5074 font-size: clamp(2rem, 3.5vw, 2.8rem); 5075 font-weight: 700; 5076 color: #F8F1DA; 5077 line-height: 1.05; 5078 text-transform: uppercase; 5079 letter-spacing: 1px; 5080 margin: 0; 5081 padding: 0; 5082 } 5083 .altitude-why-heading em { 5084 font-family: 'Bodoni Moda', Georgia, serif; 5085 font-style: italic; 5086 text-transform: none; 5087 letter-spacing: 0; 5088 color: #D4844A; 5089 font-weight: 500; 5090 } 5091 .altitude-why-intro { 5092 font-family: 'DM Sans', system-ui, sans-serif; 5093 font-size: 0.95rem; 5094 line-height: 1.7; 5095 color: rgba(248, 241, 218, 0.55); 5096 max-width: 480px; 5097 margin-left: auto; 5098 } 5099 .altitude-why-grid { 5100 display: grid; 5101 grid-template-columns: repeat(4, 1fr); 5102 gap: 18px; 5103 } 5104 .altitude-why-card { 5105 background: rgba(248, 241, 218, 0.04); 5106 border: 1px solid rgba(248, 241, 218, 0.08); 5107 border-radius: 10px; 5108 padding: 32px 24px 28px; 5109 position: relative; 5110 overflow: hidden; 5111 transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease; 5112 } 5113 .altitude-why-card:hover { 5114 background: rgba(248, 241, 218, 0.07); 5115 border-color: rgba(248, 241, 218, 0.14); 5116 transform: translateY(-3px); 5117 } 5118 .altitude-why-card__icon { 5119 width: 44px; 5120 height: 44px; 5121 border-radius: 10px; 5122 display: flex; 5123 align-items: center; 5124 justify-content: center; 5125 margin-bottom: 18px; 5126 } 5127 .altitude-why-card__icon svg { 5128 width: 22px; 5129 height: 22px; 5130 color: #D4844A; 5131 } 5132 .altitude-why-card__icon--copper { 5133 background: rgba(212, 132, 74, 0.15); 5134 } 5135 .altitude-why-card__icon--green { 5136 background: rgba(212, 132, 74, 0.08); 5137 } 5138 .altitude-why-card h4 { 5139 font-family: 'DM Sans', system-ui, sans-serif; 5140 font-size: 1rem; 5141 font-weight: 600; 5142 color: #F8F1DA; 5143 margin-bottom: 8px; 5144 text-transform: none; 5145 letter-spacing: 0; 5146 padding: 0; 5147 line-height: 1.3; 5148 } 5149 .altitude-why-card p { 5150 font-family: 'DM Sans', system-ui, sans-serif; 5151 font-size: 0.84rem; 5152 line-height: 1.6; 5153 color: rgba(248, 241, 218, 0.55); 5154 margin: 0; 5155 } 5156 .altitude-why-card__accent { 5157 position: absolute; 5158 bottom: 0; 5159 left: 0; 5160 right: 0; 5161 height: 2px; 5162 background: #D4844A; 5163 opacity: 0; 5164 transition: opacity 0.3s; 5165 } 5166 .altitude-why-card:hover .altitude-why-card__accent { 5167 opacity: 1; 5168 } 5169 .altitude-stat-bar { 5170 display: grid; 5171 grid-template-columns: repeat(3, 1fr); 5172 gap: 1px; 5173 background: rgba(248, 241, 218, 0.08); 5174 border-radius: 10px; 5175 overflow: hidden; 5176 margin-top: 40px; 5177 } 5178 .altitude-stat-item { 5179 background: rgba(248, 241, 218, 0.03); 5180 padding: 24px 20px; 5181 text-align: center; 5182 transition: background 0.3s; 5183 } 5184 .altitude-stat-item:hover { 5185 background: rgba(248, 241, 218, 0.06); 5186 } 5187 .altitude-stat-num { 5188 font-family: 'Big Shoulders Stencil Display', Impact, sans-serif; 5189 font-size: 2rem; 5190 font-weight: 700; 5191 color: #F8F1DA; 5192 line-height: 1; 5193 margin-bottom: 6px; 5194 letter-spacing: 1px; 5195 } 5196 .altitude-stat-num .accent { 5197 color: #D4844A; 5198 } 5199 .altitude-stat-label { 5200 font-family: 'DM Mono', ui-monospace, monospace; 5201 font-size: 0.72rem; 5202 letter-spacing: 1.5px; 5203 text-transform: uppercase; 5204 color: rgba(248, 241, 218, 0.35); 5205 font-weight: 500; 5206 } 5207 5208 @media only screen and (max-width: 798px) { 5209 .altitude-why-header { 5210 grid-template-columns: 1fr; 5211 gap: 16px; 5212 } 5213 .altitude-why-intro { 5214 margin-left: 0; 5215 } 5216 .altitude-why-grid { 5217 grid-template-columns: repeat(2, 1fr); 5218 } 5219 .altitude-stat-bar { 5220 grid-template-columns: 1fr; 5221 } 5222 } 5223 @media only screen and (max-width: 480px) { 5224 .altitude-why-section { 5225 padding: 60px 0; 5226 } 5227 .altitude-why-grid { 5228 grid-template-columns: 1fr; 5229 } 5230 } 5231</style> 5232 5233 5234 5235</div><div id="shopify-section-template--25721425101179__f754a4cc-8cce-40ad-8a91-ef32b5b05b95" class="shopify-section shopify-section--divider">
5235<script 5236 type="application/json" 5237 data-section-type="divider" 5238 data-section-id="template--25721425101179__f754a4cc-8cce-40ad-8a91-ef32b5b05b95" 5239> 5240</script>
5240 5241 5242<style data-shopify> 5243 5244 5245 5246 #shopify-section-template--25721425101179__f754a4cc-8cce-40ad-8a91-ef32b5b05b95 { 5247 margin: 5px 0; 5248 } 5249</style> 5250 5251<section class="section "> <div class="container"> <div class="one-whole column"> <hr class="divider divider--false"></div></div> 5252</section> 5253 5254</div><div id="shopify-section-template--25721425101179__1663059905264f9a39" class="shopify-section shopify-section--featured-collection">
5254<script 5255 type="application/json" 5256 data-section-type="featured-collection" 5257 data-section-id="template--25721425101179__1663059905264f9a39" 5258> 5259</script>
5259 5260 5261 5262 5263 5264<style data-shopify> 5265 5266 5267</style> 5268 5269 5270 5271<div class=""> <section class="section"> <div class="container"> <div class="one-whole column center homepage_content"> <a href="/collections/coffee-bundles"> <h2 class="title">View Coffee Collections</h2></a> <div class="feature-divider"></div></div></div></section> <div class="js-product-slider homepage-product-slider full-width--true featured-collection__products"> 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281<div class="slider-gallery products-slider products-length-5 transparentBackground--false" 5282 data-products-per-slide="3" 5283 data-products-limit="9" 5284 data-products-available="5"> <div class="gallery-cell 5285 thumbnail 5286 visible-3 5287 quick-shop-style--inline 5288 product__details 5289 thumbnail-hover-enabled--false 5290 product-8227241853246"> <div class="product-wrap has-secondary-media-swap"> <div class="relative product_image"> <a href="/collections/coffee-bundles/products/award-winning-blends-collection"> <div class="image__container"> 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5305 5306 src="//altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_50x.jpg?v=1681398670" 5307 5308 data-src="//altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_1600x.jpg?v=1681398670" 5309 data-sizes="auto" 5310 data-aspectratio="1417/1417" 5311 data-srcset="//altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_5000x.jpg?v=1681398670 5000w, 5312 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_4500x.jpg?v=1681398670 4500w, 5313 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_4000x.jpg?v=1681398670 4000w, 5314 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_3500x.jpg?v=1681398670 3500w, 5315 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_3000x.jpg?v=1681398670 3000w, 5316 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_2500x.jpg?v=1681398670 2500w, 5317 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_2000x.jpg?v=1681398670 2000w, 5318 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_1800x.jpg?v=1681398670 1800w, 5319 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_1600x.jpg?v=1681398670 1600w, 5320 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_1400x.jpg?v=1681398670 1400w, 5321 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_1200x.jpg?v=1681398670 1200w, 5322 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_1000x.jpg?v=1681398670 1000w, 5323 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_800x.jpg?v=1681398670 800w, 5324 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_600x.jpg?v=1681398670 600w, 5325 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_400x.jpg?v=1681398670 400w, 5326 //altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_200x.jpg?v=1681398670 200w" 5327 height="1417" 5328 width="1417" 5329 style=";" 5330 class="lazyload transition--blur-up " 5331 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5332 /> 5333</div> 5334 5335 5336 5337<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/products/Blend4PackShotMap_2000x.jpg?v=1681398670" alt="" class=" noscript"> 5338</noscript> 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355<div class="image-element__wrap" style=" max-width: 2000px;"> <img alt="" 5356 5357 src="//altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_50x.jpg?v=1694764191" 5358 5359 data-src="//altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_1600x.jpg?v=1694764191" 5360 data-sizes="auto" 5361 data-aspectratio="2000/2000" 5362 data-srcset="//altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_5000x.jpg?v=1694764191 5000w, 5363 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_4500x.jpg?v=1694764191 4500w, 5364 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_4000x.jpg?v=1694764191 4000w, 5365 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_3500x.jpg?v=1694764191 3500w, 5366 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_3000x.jpg?v=1694764191 3000w, 5367 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_2500x.jpg?v=1694764191 2500w, 5368 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_2000x.jpg?v=1694764191 2000w, 5369 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_1800x.jpg?v=1694764191 1800w, 5370 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_1600x.jpg?v=1694764191 1600w, 5371 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_1400x.jpg?v=1694764191 1400w, 5372 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_1200x.jpg?v=1694764191 1200w, 5373 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_1000x.jpg?v=1694764191 1000w, 5374 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_800x.jpg?v=1694764191 800w, 5375 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_600x.jpg?v=1694764191 600w, 5376 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_400x.jpg?v=1694764191 400w, 5377 //altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_200x.jpg?v=1694764191 200w" 5378 height="2000" 5379 width="2000" 5380 style=";" 5381 class="lazyload transition--blur-up secondary lazypreload secondary-media-hidden" 5382 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='2000'%20height='2000'></svg>" 5383 /> 5384</div> 5385 5386 5387 5388<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/files/BlendsCollectionAmazon_2000x.jpg?v=1694764191" alt="" class="secondary lazypreload secondary-media-hidden noscript"> 5389</noscript></div></a> <div class="price-ui-badges price-ui-badges--square"> 5390 5391<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 5392 .price-ui-badge--loading { 5393 display: block !important; 5394 opacity: 1 !important; 5395 }</style></noscript></div></div></div> <a class="product-info__caption " href="/collections/coffee-bundles/products/award-winning-blends-collection"> 5396 5397 5398 5399 5400 5401 5402<div class="product-details"> <span class="title" itemprop="name">Award Winning Blends Collection</span> 5403 5404<div class="ruk_rating_snippet" data-sku="award-winning-blends-collection;4BLEND-WB;4BLEND-E;4BLEND-F;4BLEND-P;44930187395390;44930187428158;44930187460926;44930187493694"></div> <span class="price "> <span class="current_price"> <span class="money"> 5405 5406 5407 £44.00 5408</span></span> <span class="was_price"></span> <div class="sold_out"></div></span> 5409 5410 5411 5412</div></a></div></div> <div class="gallery-cell 5413 thumbnail 5414 visible-3 5415 quick-shop-style--inline 5416 product__details 5417 thumbnail-hover-enabled--false 5418 product-6604448301254"> <div class="product-wrap has-secondary-media-swap"> <div class="relative product_image"> <a href="/collections/coffee-bundles/products/altitude-coffee-london-selection-box"> <div class="image__container"> 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5433 5434 src="//altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_50x.jpg?v=1681399025" 5435 5436 data-src="//altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_1600x.jpg?v=1681399025" 5437 data-sizes="auto" 5438 data-aspectratio="1417/1417" 5439 data-srcset="//altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_5000x.jpg?v=1681399025 5000w, 5440 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_4500x.jpg?v=1681399025 4500w, 5441 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_4000x.jpg?v=1681399025 4000w, 5442 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_3500x.jpg?v=1681399025 3500w, 5443 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_3000x.jpg?v=1681399025 3000w, 5444 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_2500x.jpg?v=1681399025 2500w, 5445 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_2000x.jpg?v=1681399025 2000w, 5446 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_1800x.jpg?v=1681399025 1800w, 5447 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_1600x.jpg?v=1681399025 1600w, 5448 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_1400x.jpg?v=1681399025 1400w, 5449 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_1200x.jpg?v=1681399025 1200w, 5450 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_1000x.jpg?v=1681399025 1000w, 5451 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_800x.jpg?v=1681399025 800w, 5452 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_600x.jpg?v=1681399025 600w, 5453 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_400x.jpg?v=1681399025 400w, 5454 //altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_200x.jpg?v=1681399025 200w" 5455 height="1417" 5456 width="1417" 5457 style=";" 5458 class="lazyload transition--blur-up " 5459 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5460 /> 5461</div> 5462 5463 5464 5465<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/products/SpecialtyCollectionMap_2000x.jpg?v=1681399025" alt="" class=" noscript"> 5466</noscript> 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5484 5485 src="//altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_50x.jpg?v=1694766002" 5486 5487 data-src="//altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_1600x.jpg?v=1694766002" 5488 data-sizes="auto" 5489 data-aspectratio="1417/1417" 5490 data-srcset="//altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_5000x.jpg?v=1694766002 5000w, 5491 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_4500x.jpg?v=1694766002 4500w, 5492 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_4000x.jpg?v=1694766002 4000w, 5493 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_3500x.jpg?v=1694766002 3500w, 5494 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_3000x.jpg?v=1694766002 3000w, 5495 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_2500x.jpg?v=1694766002 2500w, 5496 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_2000x.jpg?v=1694766002 2000w, 5497 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_1800x.jpg?v=1694766002 1800w, 5498 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_1600x.jpg?v=1694766002 1600w, 5499 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_1400x.jpg?v=1694766002 1400w, 5500 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_1200x.jpg?v=1694766002 1200w, 5501 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_1000x.jpg?v=1694766002 1000w, 5502 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_8
550200x.jpg?v=1694766002 800w, 5503 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_600x.jpg?v=1694766002 600w, 5504 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_400x.jpg?v=1694766002 400w, 5505 //altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_200x.jpg?v=1694766002 200w" 5506 height="1417" 5507 width="1417" 5508 style=";" 5509 class="lazyload transition--blur-up secondary lazypreload secondary-media-hidden" 5510 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5511 /> 5512</div> 5513 5514 5515 5516<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/files/specialtycoffeecollectionamazon_2000x.jpg?v=1694766002" alt="" class="secondary lazypreload secondary-media-hidden noscript"> 5517</noscript></div></a> <div class="price-ui-badges price-ui-badges--square"> 5518 5519<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 5520 .price-ui-badge--loading { 5521 display: block !important; 5522 opacity: 1 !important; 5523 }</style></noscript></div></div></div> <a class="product-info__caption " href="/collections/coffee-bundles/products/altitude-coffee-london-selection-box"> 5524 5525 5526 5527 5528 5529 5530<div class="product-details"> <span class="title" itemprop="name">Specialty Coffee Premium Collection</span> 5531 5532<div class="ruk_rating_snippet" data-sku="altitude-coffee-london-selection-box;SELECTION4-WB;SELECTION4-E;SELECTION4-F;SELECTION4-P;39531106959558;39531106992326;39531107025094;39531107057862"></div> <span class="price "> <span class="current_price"> <span class="money"> 5533 5534 5535 £44.00 5536</span></span> <span class="was_price"></span> <div class="sold_out"></div></span> 5537 5538 5539 5540</div></a></div></div> <div class="gallery-cell 5541 thumbnail 5542 visible-3 5543 quick-shop-style--inline 5544 product__details 5545 thumbnail-hover-enabled--false 5546 product-6660207050950"> <div class="product-wrap has-secondary-media-swap"> <div class="relative product_image"> <a href="/collections/coffee-bundles/products/blends-triple-pack"> <div class="image__container"> 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5561 5562 src="//altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_50x.jpg?v=1681399776" 5563 5564 data-src="//altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_1600x.jpg?v=1681399776" 5565 data-sizes="auto" 5566 data-aspectratio="1417/1417" 5567 data-srcset="//altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_5000x.jpg?v=1681399776 5000w, 5568 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_4500x.jpg?v=1681399776 4500w, 5569 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_4000x.jpg?v=1681399776 4000w, 5570 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_3500x.jpg?v=1681399776 3500w, 5571 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_3000x.jpg?v=1681399776 3000w, 5572 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_2500x.jpg?v=1681399776 2500w, 5573 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_2000x.jpg?v=1681399776 2000w, 5574 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_1800x.jpg?v=1681399776 1800w, 5575 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_1600x.jpg?v=1681399776 1600w, 5576 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_1400x.jpg?v=1681399776 1400w, 5577 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_1200x.jpg?v=1681399776 1200w, 5578 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_1000x.jpg?v=1681399776 1000w, 5579 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_800x.jpg?v=1681399776 800w, 5580 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_600x.jpg?v=1681399776 600w, 5581 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_400x.jpg?v=1681399776 400w, 5582 //altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_200x.jpg?v=1681399776 200w" 5583 height="1417" 5584 width="1417" 5585 style=";" 5586 class="lazyload transition--blur-up " 5587 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5588 /> 5589</div> 5590 5591 5592 5593<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/products/BlendsTripleMap_2000x.jpg?v=1681399776" alt="" class=" noscript"> 5594</noscript> 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611<div class="image-element__wrap" style=" max-width: 2000px;"> <img alt="" 5612 5613 src="//altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_50x.jpg?v=1694764212" 5614 5615 data-src="//altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_1600x.jpg?v=1694764212" 5616 data-sizes="auto" 5617 data-aspectratio="2000/2000" 5618 data-srcset="//altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_5000x.jpg?v=1694764212 5000w, 5619 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_4500x.jpg?v=1694764212 4500w, 5620 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_4000x.jpg?v=1694764212 4000w, 5621 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_3500x.jpg?v=1694764212 3500w, 5622 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_3000x.jpg?v=1694764212 3000w, 5623 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_2500x.jpg?v=1694764212 2500w, 5624 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_2000x.jpg?v=1694764212 2000w, 5625 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_1800x.jpg?v=1694764212 1800w, 5626 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_1600x.jpg?v=1694764212 1600w, 5627 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_1400x.jpg?v=1694764212 1400w, 5628 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_1200x.jpg?v=1694764212 1200w, 5629 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_1000x.jpg?v=1694764212 1000w, 5630 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_800x.jpg?v=1694764212 800w, 5631 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_600x.jpg?v=1694764212 600w, 5632 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_400x.jpg?v=1694764212 400w, 5633 //altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_200x.jpg?v=1694764212 200w" 5634 height="2000" 5635 width="2000" 5636 style=";" 5637 class="lazyload transition--blur-up secondary lazypreload secondary-media-hidden" 5638 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='2000'%20height='2000'></svg>" 5639 /> 5640</div> 5641 5642 5643 5644<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/files/BlendsTriplePackAmazon_2000x.jpg?v=1694764212" alt="" class="secondary lazypreload secondary-media-hidden noscript"> 5645</noscript></div></a> <div class="price-ui-badges price-ui-badges--square"> 5646 5647<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 5648 .price-ui-badge--loading { 5649 display: block !important; 5650 opacity: 1 !important; 5651 }</style></noscript></div></div></div> <a class="product-info__caption " href="/collections/coffee-bundles/products/blends-triple-pack"> 5652 5653 5654 5655 5656 5657 5658<div class="product-details"> <span class="title" itemprop="name">Award Winning Blends Triple Pack</span> 5659 5660<div class="ruk_rating_snippet" data-sku="blends-triple-pack;3BLEND250-WB;3BLEND250-E;3BLEND250-F;3BLEND250-P;39749244256454;39749244289222;39749244321990;39749244354758"></div> <span class="price "> <span class="current_price"> <span class="money"> 5661 5662 5663 £29.95 5664</span></span> <span class="was_price"></span> <div class="sold_out"></div></span> 5665 5666 5667 5668</div></a></div></div> <div class="gallery-cell 5669 thumbnail 5670 visible-3 5671 quick-shop-style--inline 5672 product__details 5673 thumbnail-hover-enabled--false 5674 product-6691463069894"> <div class="product-wrap has-secondary-media-swap"> <div class="relative product_image"> <a href="/collections/coffee-bundles/products/single-origins-triple-pack"> <div class="image__container"> 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5689 5690 src="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_50x.jpg?v=1681399289" 5691 5692 data-src="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_1600x.jpg?v=1681399289" 5693 data-sizes="auto" 5694 data-aspectratio="1417/1417" 5695 data-srcset="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_5000x.jpg?v=1681399289 5000w, 5696 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_4500x.jpg?v=1681399289 4500w, 5697 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_4000x.jpg?v=1681399289 4000w, 5698 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_3500x.jpg?v=1681399289 3500w, 5699 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_3000x.jpg?v=1681399289 3000w, 5700 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_2500x.jpg?v=1681399289 2500w, 5701 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_2000x.jpg?v=1681399289 2000w, 5702 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_1800x.jpg?v=1681399289 1800w, 5703 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_1600x.jpg?v=1681399289 1600w, 5704 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_1400x.jpg?v=1681399289 1400w, 5705 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_1200x.jpg?v=1681399289 1200w, 5706 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_1000x.jpg?v=1681399289 1000w, 5707 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_800x.jpg?v=1681399289 800w, 5708 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_600x.jpg?v=1681399289 600w, 5709 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_400x.jpg?v=1681399289 400w, 5710 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_200x.jpg?v=1681399289 200w" 5711 height="1417" 5712 width="1417" 5713 style=";" 5714 class="lazyload transition--blur-up " 5715 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5716 /> 5717</div> 5718 5719 5720 5721<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTripleMap_2000x.jpg?v=1681399289" alt="" class=" noscript"> 5722</noscript> 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739<div class="image-element__wrap" style=" max-width: 2000px;"> <img alt="" 5740 5741 src="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_50x.jpg?v=1694764267" 5742 5743 data-src="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_1600x.jpg?v=1694764267" 5744 data-sizes="auto" 5745 data-aspectratio="2000/2000" 5746 data-srcset="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_5000x.jpg?v=1694764267 5000w, 5747 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_4500x.jpg?v=1694764267 4500w, 5748 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_4000x.jpg?v=1694764267 4000w, 5749 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_3500x.jpg?v=1694764267 3500w, 5750 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_3000x.jpg?v=1694764267 3000w, 5751 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_2500x.jpg?v=1694764267 2500w, 5752 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_2000x.jpg?v=1694764267 2000w, 5753 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_1800x.jpg?v=1694764267 1800w, 5754 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_1600x.jpg?v=1694764267 1600w, 5755 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_1400x.jpg?v=1694764267 1400w, 5756 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_1200x.jpg?v=1694764267 1200w, 5757 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_1000x.jpg?v=1694764267 1000w, 5758 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_800x.jpg?v=1694764267 800w, 5759 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_600x.jpg?v=1694764267 600w, 5760 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_400x.jpg?v=1694764267 400w, 5761 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_200x.jpg?v=1694764267 200w" 5762 height="2000" 5763 width="2000" 5764 style=";" 5765 class="lazyload transition--blur-up secondary lazypreload secondary-media-hidden" 5766 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='2000'%20height='2000'></svg>" 5767 /> 5768</div> 5769 5770 5771 5772<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTripleAmazon_2000x.jpg?v=1694764267" alt="" class="secondary lazypreload secondary-media-hidden noscript"> 5773</noscript></div></a> <div class="price-ui-badges price-ui-badges--square"> 5774 5775<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 5776 .price-ui-badge--loading { 5777 display: block !important; 5778 opacity: 1 !important; 5779 }</style></noscript></div></div></div> <a class="product-info__caption " href="/collections/coffee-bundles/products/single-origins-triple-pack"> 5780 5781 5782 5783 5784 5785 5786<div class="product-details"> <span class="title" itemprop="name">Single Origins Triple Pack</span> 5787 5788<div class="ruk_rating_snippet" data-sku="single-origins-triple-pack;SINGLE3-WB;SINGLE3-E;SINGLE3-F;SINGLE3-P;39866565951686;39866565984454;39866566017222;39866566082758"></div> <span class="price "> <span class="current_price"> <span class="money"> 5789 5790 5791 £39.00 5792</span></span> <span class="was_price"></span> <div class="sold_out"></div></span> 5793 5794 5795 5796</div></a></div></div> <div class="gallery-cell 5797 thumbnail 5798 visible-3 5799 quick-shop-style--inline 5800 product__details 5801 thumbnail-hover-enabled--false 5802 product-6602322772166"> <div class="product-wrap has-secondary-media-swap"> <div class="relative product_image"> <a href="/collections/coffee-bundles/products/blends-discovery-pack"> <div class="image__container"> 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5817 5818 src="//altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_50x.jpg?v=1681399610" 5819 5820 data-src="//altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_1600x.jpg?v=1681399610" 5821 data-sizes="auto" 5822 data-aspectratio="1417/1417" 5823 data-srcset="//altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_5000x.jpg?v=1681399610 5000w, 5824 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_4500x.jpg?v=1681399610 4500w, 5825 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_4000x.jpg?v=1681399610 4000w, 5826 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_3500x.jpg?v=1681399610 3500w, 5827 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_3000x.jpg?v=1681399610 3000w, 5828 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_2500x.jpg?v=1681399610 2500w, 5829 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_2000x.jpg?v=1681399610 2000w, 5830 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_1800x.jpg?v=1681399610 1800w, 5831 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_1600x.jpg?v=1681399610 1600w, 5832 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_1400x.jpg?v=1681399610 1400w, 5833 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_1200x.jpg?v=1681399610 1200w, 5834 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_1000x.jpg?v=1681399610 1000w, 5835 //altitudeco
5835ffeelondon.com/cdn/shop/products/BlendsTwinMap_800x.jpg?v=1681399610 800w, 5836 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_600x.jpg?v=1681399610 600w, 5837 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_400x.jpg?v=1681399610 400w, 5838 //altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_200x.jpg?v=1681399610 200w" 5839 height="1417" 5840 width="1417" 5841 style=";" 5842 class="lazyload transition--blur-up " 5843 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5844 /> 5845</div> 5846 5847 5848 5849<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/products/BlendsTwinMap_2000x.jpg?v=1681399610" alt="" class=" noscript"> 5850</noscript> 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867<div class="image-element__wrap" style=" max-width: 2000px;"> <img alt="" 5868 5869 src="//altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_50x.jpg?v=1694764226" 5870 5871 data-src="//altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_1600x.jpg?v=1694764226" 5872 data-sizes="auto" 5873 data-aspectratio="2000/2000" 5874 data-srcset="//altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_5000x.jpg?v=1694764226 5000w, 5875 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_4500x.jpg?v=1694764226 4500w, 5876 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_4000x.jpg?v=1694764226 4000w, 5877 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_3500x.jpg?v=1694764226 3500w, 5878 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_3000x.jpg?v=1694764226 3000w, 5879 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_2500x.jpg?v=1694764226 2500w, 5880 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_2000x.jpg?v=1694764226 2000w, 5881 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_1800x.jpg?v=1694764226 1800w, 5882 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_1600x.jpg?v=1694764226 1600w, 5883 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_1400x.jpg?v=1694764226 1400w, 5884 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_1200x.jpg?v=1694764226 1200w, 5885 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_1000x.jpg?v=1694764226 1000w, 5886 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_800x.jpg?v=1694764226 800w, 5887 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_600x.jpg?v=1694764226 600w, 5888 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_400x.jpg?v=1694764226 400w, 5889 //altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_200x.jpg?v=1694764226 200w" 5890 height="2000" 5891 width="2000" 5892 style=";" 5893 class="lazyload transition--blur-up secondary lazypreload secondary-media-hidden" 5894 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='2000'%20height='2000'></svg>" 5895 /> 5896</div> 5897 5898 5899 5900<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/files/BlendTwinPackAmazon_2000x.jpg?v=1694764226" alt="" class="secondary lazypreload secondary-media-hidden noscript"> 5901</noscript></div></a> <div class="price-ui-badges price-ui-badges--square"> 5902 5903<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 5904 .price-ui-badge--loading { 5905 display: block !important; 5906 opacity: 1 !important; 5907 }</style></noscript></div></div></div> <a class="product-info__caption " href="/collections/coffee-bundles/products/blends-discovery-pack"> 5908 5909 5910 5911 5912 5913 5914<div class="product-details"> <span class="title" itemprop="name">Blends Discovery Twin Pack</span> 5915 5916<div class="ruk_rating_snippet" data-sku="blends-discovery-pack;BLENDPACK250-WB;BLENDPACK250-E;BLENDPACK250-F;BLENDPACK250-P;39523510190278;39523510223046;39523510255814;39523510288582"></div> <span class="price "> <span class="current_price"> <span class="money"> 5917 5918 5919 £19.95 5920</span></span> <span class="was_price"></span> <div class="sold_out"></div></span> 5921 5922 5923 5924</div></a></div></div> <div class="gallery-cell 5925 thumbnail 5926 visible-3 5927 quick-shop-style--inline 5928 product__details 5929 thumbnail-hover-enabled--false 5930 product-6602351444166"> <div class="product-wrap has-secondary-media-swap"> <div class="relative product_image"> <a href="/collections/coffee-bundles/products/single-origins-discovery-twin-pack"> <div class="image__container"> 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944<div class="image-element__wrap" style=" max-width: 1417px;"> <img alt="" 5945 5946 src="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_50x.jpg?v=1681399209" 5947 5948 data-src="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_1600x.jpg?v=1681399209" 5949 data-sizes="auto" 5950 data-aspectratio="1417/1417" 5951 data-srcset="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_5000x.jpg?v=1681399209 5000w, 5952 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_4500x.jpg?v=1681399209 4500w, 5953 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_4000x.jpg?v=1681399209 4000w, 5954 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_3500x.jpg?v=1681399209 3500w, 5955 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_3000x.jpg?v=1681399209 3000w, 5956 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_2500x.jpg?v=1681399209 2500w, 5957 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_2000x.jpg?v=1681399209 2000w, 5958 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_1800x.jpg?v=1681399209 1800w, 5959 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_1600x.jpg?v=1681399209 1600w, 5960 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_1400x.jpg?v=1681399209 1400w, 5961 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_1200x.jpg?v=1681399209 1200w, 5962 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_1000x.jpg?v=1681399209 1000w, 5963 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_800x.jpg?v=1681399209 800w, 5964 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_600x.jpg?v=1681399209 600w, 5965 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_400x.jpg?v=1681399209 400w, 5966 //altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_200x.jpg?v=1681399209 200w" 5967 height="1417" 5968 width="1417" 5969 style=";" 5970 class="lazyload transition--blur-up " 5971 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='1417'%20height='1417'></svg>" 5972 /> 5973</div> 5974 5975 5976 5977<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/products/SingleOriginTwinMap_2000x.jpg?v=1681399209" alt="" class=" noscript"> 5978</noscript> 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995<div class="image-element__wrap" style=" max-width: 2000px;"> <img alt="" 5996 5997 src="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_50x.jpg?v=1694764246" 5998 5999 data-src="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_1600x.jpg?v=1694764246" 6000 data-sizes="auto" 6001 data-aspectratio="2000/2000" 6002 data-srcset="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_5000x.jpg?v=1694764246 5000w, 6003 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_4500x.jpg?v=1694764246 4500w, 6004 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_4000x.jpg?v=1694764246 4000w, 6005 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_3500x.jpg?v=1694764246 3500w, 6006 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_3000x.jpg?v=1694764246 3000w, 6007 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_2500x.jpg?v=1694764246 2500w, 6008 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_2000x.jpg?v=1694764246 2000w, 6009 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_1800x.jpg?v=1694764246 1800w, 6010 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_1600x.jpg?v=1694764246 1600w, 6011 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_1400x.jpg?v=1694764246 1400w, 6012 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_1200x.jpg?v=1694764246 1200w, 6013 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_1000x.jpg?v=1694764246 1000w, 6014 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_800x.jpg?v=1694764246 800w, 6015 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_600x.jpg?v=1694764246 600w, 6016 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_400x.jpg?v=1694764246 400w, 6017 //altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_200x.jpg?v=1694764246 200w" 6018 height="2000" 6019 width="2000" 6020 style=";" 6021 class="lazyload transition--blur-up secondary lazypreload secondary-media-hidden" 6022 srcset="data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'%20width='2000'%20height='2000'></svg>" 6023 /> 6024</div> 6025 6026 6027 6028<noscript> <img src="//altitudecoffeelondon.com/cdn/shop/files/SingleOriginsTwinAmazon_2000x.jpg?v=1694764246" alt="" class="secondary lazypreload secondary-media-hidden noscript"> 6029</noscript></div></a> <div class="price-ui-badges price-ui-badges--square"> 6030 6031<div class="price-ui-badge price-ui-badge--loading" data-price-ui-badge> <noscript> <style> 6032 .price-ui-badge--loading { 6033 display: block !important; 6034 opacity: 1 !important; 6035 }</style></noscript></div></div></div> <a class="product-info__caption " href="/collections/coffee-bundles/products/single-origins-discovery-twin-pack"> 6036 6037 6038 6039 6040 6041 6042<div class="product-details"> <span class="title" itemprop="name">Single Origins Discovery Twin Pack</span> 6043 6044<div class="ruk_rating_snippet" data-sku="single-origins-discovery-twin-pack;SINGLETWIN250-WB;SINGLETWIN250-E;SINGLETWIN250-F;SINGLETWIN250-P;39523652960454;39523652993222;39523653025990;39523653058758"></div> <span class="price "> <span class="current_price"> <span class="money"> 6045 6046 6047 £22.00 6048</span></span> <span class="was_price"></span> <div class="sold_out"></div></span> 6049 6050 6051 6052</div></a></div></div> 6053 6054 6055</div></div> 6056 6057</div> 6058 6059</div><div id="shopify-section-template--25721425101179__subscription_banner_KMiBdD" class="shopify-section"> 6060 6061<section class="altitude-subscription-banner"> <div class="altitude-subscription-banner__media"><img 6062 src="//altitudecoffeelondon.com/cdn/shop/files/iStock-638817830_1.jpg?v=1683802257&width=1600" 6063 srcset="//altitudecoffeelondon.com/cdn/shop/files/iStock-638817830_1.jpg?v=1683802257&width=600 600w, 6064 //altitudecoffeelondon.com/cdn/shop/files/iStock-638817830_1.jpg?v=1683802257&width=1000 1000w, 6065 //altitudecoffeelondon.com/cdn/shop/files/iStock-638817830_1.jpg?v=1683802257&width=1600 1600w, 6066 //altitudecoffeelondon.com/cdn/shop/files/iStock-638817830_1.jpg?v=1683802257&width=2400 2400w" 6067 sizes="100vw" 6068 alt="Ethiopian coffee farmer picking coffee cherries" 6069 loading="lazy" 6070 width="2000" 6071 height="1333"><div class="altitude-subscription-banner__scrim"></div></div> <div class="altitude-subscription-banner__inner"> <div class="altitude-subscription-banner__content"><span class="altitude-subscription-banner__eyebrow">Coffee Subscriptions</span><h2 class="altitude-subscription-banner__headline">Subscriber price. Free delivery.</h2><p class="altitude-subscription-banner__subtitle">Plans from £19.95 per 500g. Pause, skip or cancel any time.</p><a 6072 href="/collections/subscriptions" 6073 class="altitude-subscription-banner__cta"> 6074 Find Your Subscription</a><ul class="altitude-subscription-banner__trust"><li>No contract</li><li>Free UK delivery</li><li>Weekly to monthly</li></ul></div></div> 6075 6076</section> 6077 6078<style> 6079 .altitude-subscription-banner { 6080 position: relative; 6081 overflow: hidden; 6082 min-height: 480px; 6083 background: var(--alt-green, #13322B); 6084 } 6085 6086 .altitude-subscription-banner__media { 6087 position: absolute; 6088 inset: 0; 6089 z-index: 1; 6090 } 6091 .altitude-subscription-banner__media img, 6092 .altitude-subscription-banner__placeholder { 6093 width: 100%; 6094 height: 100%; 6095 object-fit: cover; 6096 object-position: center; 6097 display: block; 6098 } 6099 6100 .altitude-subscription-banner__scrim { 6101 position: absolute; 6102 inset: 0; 6103 background: 6104 linear-gradient( 6105 to right, 6106 rgba(19, 50, 43, 0.92) 0%, 6107 rgba(19, 50, 43, 0.6) 40%, 6108 rgba(19, 50, 43, 0.15) 75%, 6109 rgba(19, 50, 43, 0) 100% 6110 ); 6111 } 6112 6113 .altitude-subscription-banner__inner { 6114 position: relative; 6115 z-index: 2; 6116 max-width: 1200px; 6117 margin: 0 auto; 6118 padding: 80px 40px; 6119 min-height: 480px; 6120 display: flex; 6121 align-items: center; 6122 } 6123 6124 .altitude-subscription-banner__content { 6125 max-width: 480px; 6126 } 6127 6128 .altitude-subscription-banner__eyebrow { 6129 font-family: var(--alt-font-mono, 'DM Mono', monospace); 6130 font-size: 11px; 6131 letter-spacing: 3px; 6132 text-transform: uppercase; 6133 font-weight: 600; 6134 color: var(--alt-orange, #D4844A); 6135 display: block; 6136 margin-bottom: 18px; 6137 } 6138 6139 .altitude-subscription-banner__headline { 6140 font-family: var(--alt-font-stencil, 'Big Shoulders Stencil Display', Impact, sans-serif); 6141 font-size: clamp(2.4rem, 4.5vw, 3.6rem); 6142 font-weight: 700; 6143 color: var(--alt-cream, #F8F1DA); 6144 line-height: 1; 6145 text-transform: uppercase; 6146 letter-spacing: 1px; 6147 margin: 0 0 20px 0; 6148 padding: 0; 6149 text-wrap: balance; 6150 } 6151 6152 .altitude-subscription-banner__subtitle { 6153 font-family: var(--alt-font-body, 'DM Sans', system-ui, sans-serif); 6154 font-size: 1rem; 6155 line-height: 1.6; 6156 color: rgba(248, 241, 218, 0.85); 6157 margin: 0 0 32px 0; 6158 max-width: 380px; 6159 text-wrap: balance; 6160 } 6161 6162 .altitude-subscription-banner__cta { 6163 display: inline-flex; 6164 align-items: center; 6165 justify-content: center; 6166 background: var(--alt-orange, #D4844A); 6167 color: #FFFFFF; 6168 border: 1px solid var(--alt-orange, #D4844A); 6169 border-radius: 0; 6170 font-family: var(--alt-font-stencil, 'Big Shoulders Stencil Display', Impact, sans-serif); 6171 font-size: 17px; 6172 font-weight: 700; 6173 letter-spacing: 2px; 6174 text-transform: uppercase; 6175 padding: 16px 36px; 6176 text-decoration: none; 6177 transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease; 6178 } 6179 .altitude-subscription-banner__cta:hover, 6180 .altitude-subscription-banner__cta:focus { 6181 background: var(--alt-orange-dark, #B86E36); 6182 border-color: var(--alt-orange-dark, #B86E36); 6183 color: #FFFFFF; 6184 transform: translateY(-1px); 6185 } 6186 6187 .altitude-subscription-banner__trust { 6188 list-style: none; 6189 margin: 28px 0 0 0; 6190 padding: 0; 6191 font-family: var(--alt-font-mono, 'DM Mono', monospace); 6192 font-size: 11px; 6193 letter-spacing: 2px; 6194 text-transform: uppercase; 6195 color: rgba(248, 241, 218, 0.65); 6196 text-wrap: balance; 6197 } 6198 .altitude-subscription-banner__trust li { 6199 display: inline; 6200 margin: 0; 6201 } 6202 .altitude-subscription-banner__trust li:not(:last-child)::after { 6203 content: " · "; 6204 margin: 0 6px; 6205 color: var(--alt-orange, #D4844A); 6206 } 6207 6208 /* Tablet */ 6209 @media (max-width: 1024px) { 6210 .altitude-subscription-banner, 6211 .altitude-subscription-banner__inner { 6212 min-height: 440px; 6213 } 6214 .altitude-subscription-banner__inner { 6215 padding: 60px 32px; 6216 } 6217 } 6218 6219 /* Mobile */ 6220 @media (max-width: 798px) { 6221 .altitude-subscription-banner, 6222 .altitude-subscription-banner__inner { 6223 min-height: 540px; 6224 } 6225 .altitude-subscription-banner__scrim { 6226 background: 6227 linear-gradient( 6228 to bottom, 6229 rgba(19, 50, 43, 0.35) 0%, 6230 rgba(19, 50, 43, 0.7) 45%, 6231 rgba(19, 50, 43, 0.92) 100% 6232 ); 6233 } 6234 .altitude-subscription-banner__inner { 6235 padding: 40px 24px; 6236 align-items: flex-end; 6237 } 6238 .altitude-subscription-banner__content { 6239 max-width: 100%; 6240 } 6241 .altitude-su
6241bscription-banner__cta { 6242 display: flex; 6243 width: 100%; 6244 padding: 16px 24px; 6245 } 6246 } 6247 6248 /* Small mobile â stack trust items */ 6249 @media (max-width: 480px) { 6250 .altitude-subscription-banner__trust li { 6251 display: block; 6252 margin-bottom: 6px; 6253 } 6254 .altitude-subscription-banner__trust li:not(:last-child)::after { 6255 content: none; 6256 } 6257 } 6258</style> 6259 6260 6261</div><div id="shopify-section-template--25721425101179__165355002265b9cf27" class="shopify-section shopify-section--divider">
6261<script 6262 type="application/json" 6263 data-section-type="divider" 6264 data-section-id="template--25721425101179__165355002265b9cf27" 6265> 6266</script>
6266 6267 6268<style data-shopify> 6269 6270 6271 6272 #shopify-section-template--25721425101179__165355002265b9cf27 { 6273 margin: 10px 0; 6274 } 6275</style> 6276 6277<section class="section "> <div class="container"> <div class="one-whole column"> <hr class="divider divider--false"></div></div> 6278</section> 6279 6280</div><div id="shopify-section-template--25721425101179__1653548234ba27b994" class="shopify-section"><div class="product-app--container"> <div class="container"> <div class="one-whole column"> <div id="shopify-block-ASFdwME9hY09kYlZXT__4d248987-001b-41be-a689-7c98b0966743" class="shopify-block shopify-app-block"><reviewsio-product-reviews-widget data-id="ASFdwME9hY09kYlZXT__4d248987-001b-41be-a689-7c98b0966743"> <div data-reviewsio-widget="polaris" id="ReviewsWidget-ASFdwME9hY09kYlZXT__4d248987-001b-41be-a689-7c98b0966743" class='rio-withoutBranding reviews-io-polaris-widget'></div>
6280<script defer src="https://widget.reviews.io/polaris/build.js"></script>
6280 6281 6282<style> 6283 @font-face { 6284 font-family: "DM Sans"; 6285 font-weight: 400; 6286 font-style: normal; 6287 src: url("//altitudecoffeelondon.com/cdn/fonts/dm_sans/dmsans_n4.ec80bd4dd7e1a334c969c265873491ae56018d72.woff2") format("woff2"), 6288 url("//altitudecoffeelondon.com/cdn/fonts/dm_sans/dmsans_n4.87bdd914d8a61247b911147ae68e754d695c58a6.woff") format("woff"); 6289} 6290 6291 6292 #ReviewsWidget-ASFdwME9hY09kYlZXT__4d248987-001b-41be-a689-7c98b0966743 { 6293 margin: 15px; 6294 } 6295</style>
6295<script> 6296 (function () { 6297 function ensureScriptOnce(src, id) { 6298 if (id && document.getElementById(id)) return; 6299 if (id) { 6300 var existing = document.querySelector('script[src="' + src + '"]'); 6301 if (existing) return; 6302 } 6303 var script = document.createElement('script'); 6304 if (id) script.id = id; 6305 script.setAttribute('src', src); 6306 document.body.appendChild(script); 6307 } 6308 6309 var __reviewsioPolarisInitAttempts = 0; 6310 6311 function init() { 6312 if (typeof reviewsIoStore === 'undefined') return; 6313 if (typeof window.ReviewsWidget !== 'function') return; 6314 6315 var root = document.querySelector('#ReviewsWidget-ASFdwME9hY09kYlZXT__4d248987-001b-41be-a689-7c98b0966743'); 6316 if (!root) return; 6317 if (root.getAttribute('data-reviewsio-initialized') === 'true') return; 6318 6319 // In Theme Editor, wait until the product preview config is computed so we don't 6320 // initialize with merchant store/SKUs and get stuck showing an empty state. 6321 var MAX_PREVIEW_CONFIG_WAIT_ATTEMPTS = 20; 6322 var PREVIEW_CONFIG_POLL_INTERVAL_MS = 200; 6323 6324 if (window.__REVIEWS_EDITOR__ && !window.__REVIEWSIO_PRODUCT_PREVIEW_CONFIG__) { 6325 __reviewsioPolarisInitAttempts += 1; 6326 if (__reviewsioPolarisInitAttempts <MAX_PREVIEW_CONFIG_WAIT_ATTEMPTS) { 6327 window.setTimeout(init, PREVIEW_CONFIG_POLL_INTERVAL_MS); 6328 return; 6329 } 6330 // Max attempts reached - use demo config as fallback 6331 var demoConfig = window.__REVIEWS_DEMO_CONFIG__ || { 6332 store: 'ecommerce-demo-store', 6333 sku: 'bunch_of_flowers_sku;blue_flowers_sku;white_flowers_sku;pastel_flowers_sku;summer_selection_sku' 6334 }; 6335 window.__REVIEWSIO_PRODUCT_PREVIEW_CONFIG__ = { 6336 store: demoConfig.store, 6337 sku: demoConfig.sku, 6338 isSample: true 6339 }; 6340 } 6341 6342 var baseSku = "CAPTAIN250-WB;CAPTAIN250-E;CAPTAIN250-F;CAPTAIN250-P;CAPTAIN500-WB;CAPTAIN1K-WB;38309800706246;38309800804550;38309800837318;38309800870086;38309800739014;38309800771782;6253847085254;espresso-roast-coffee-blend"; 6343 var storeForWidget = reviewsIoStore; 6344 var skuForWidget = baseSku; 6345 var isSample = false; 6346 6347 if (window.__REVIEWS_EDITOR__ && window.__REVIEWSIO_PRODUCT_PREVIEW_CONFIG__) { 6348 storeForWidget = window.__REVIEWSIO_PRODUCT_PREVIEW_CONFIG__.store || storeForWidget; 6349 skuForWidget = window.__REVIEWSIO_PRODUCT_PREVIEW_CONFIG__.sku || skuForWidget; 6350 isSample = Boolean(window.__REVIEWSIO_PRODUCT_PREVIEW_CONFIG__.isSample); 6351 } 6352 6353 var groupingForWidget = skuForWidget; 6354 if (isSample) { 6355 try { 6356 groupingForWidget = String(skuForWidget).split(';')[0] || skuForWidget; 6357 } catch (_) { 6358 groupingForWidget = skuForWidget; 6359 } 6360 } 6361 6362 var typesForWidget = "product_review"; 6363 // Sample preview should render representative content, even if the demo store 6364 // lacks product-level reviews for the demo SKU. 6365 if (isSample) { 6366 typesForWidget = 'product_review,store_review,questions'; 6367 } 6368 6369 root.setAttribute('data-reviewsio-initialized', 'true'); 6370 6371 new ReviewsWidget('#ReviewsWidget-ASFdwME9hY09kYlZXT__4d248987-001b-41be-a689-7c98b0966743', { 6372 store: storeForWidget, 6373 widget: "polaris", 6374 options: { 6375 enable_syndication: reviewsIoEnableSyndication, 6376 enable_sentiment_analysis: false, 6377 types: typesForWidget, 6378 lang: reviewsIoLang, 6379 per_page: 2, 6380 store_review: {}, 6381 product_review: { 6382 sku: skuForWidget, 6383 enable_rich_snippets: true, 6384 6385 /* Your custom Structured Data */ 6386 structured_data: { 6387 name: "The Captainâs Roast - Espresso Blend", 6388 category: "Coffee", 6389 6390 6391 6392 gtin13:"5065010122000", 6393 6394 6395 url: "https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend",image: "https://altitude-coffee-london.myshopify.com/cdn/shop/products/CaptainsRoastMap.jpg", 6396 6397 description: "Some espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.We build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.Awarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.Varietal: Brazil/Colombia BlendProcessing: Natural/WashedAltitude:Â 1500-2500mRoast: Medium/Dark", 6398 6399 6400 6401 6402 6403 offers: [{ 6404 type: "Offer", 6405 priceCurrency: "GBP", 6406 price: "11.50", 6407 itemCondition: "http://schema.org/NewCondition", 6408 availability: "http://schema.org/InStock", 6409 url: "https://altitudecoffeelondon.com/products/espresso-roast-coffee-blend?variant=38309800706246", 6410 6411 6412 6413 6414 6415 image: "https://altitude-coffee-london.myshopify.com/cdn/shop/products/CaptainsRoastMap.jpg", 6416 6417 6418 6419 6420 name: "The Captainâs Roast - Espresso Blend - 250g / Whole Bean", 6421 6422 6423 6424 6425 6426 gtin13: "5065010122000", 6427 6428 6429 6430 6431 6432 sku: "CAPTAIN250-WB", 6433 6434 6435 6436 description: "Some espresso blends play it safe. The Captain's Roast doesn't. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it's the sort of coffee that makes the rest of the morning feel straightforward. Low in acidity, full in body, and exceptionally well-behaved with milk â a flat white brewed on this blend is a proper treat.We build it from two seasonal single origins: a naturally processed Brazilian Catuai for depth and sweetness, and a washed Colombian for clean structure. The crop changes with the harvest; the character doesn't.Awarded two stars at the Great Taste Awards. If you're looking for a reliable, beautifully made everyday espresso, the search ends here.Varietal: Brazil/Colombia BlendProcessing: Natural/WashedAltitude:Â 1500-2500mRoast: Medium/Dark", 6437 6438 6439 priceValidUntil: "2027-10-09" 6440 }], 6441 6442 6443 brand: { 6444 type: 'Brand', 6445 name: 'Altitude Coffee London', 6446 }, 6447 6448 }, 6449 }, 6450 6451 6452 /* Toggle Options */ 6453 questions:{ 6454 hide_if_no_results:false, 6455 enable_ask_question:true, 6456 show_dates:true, 6457 grouping: groupingForWidget 6458 }, 6459 6460 //Header settings: 6461 header:{ 6462 enable_summary:true, //Show overall rating & review count 6463 enable_ratings:true, 6464 always_show:true, 6465 enable_attributes:true, 6466 enable_image_gallery:true, //Show photo & video gallery 6467 enable_percent_recommended:false, //Show what percentage of reviewers recommend it 6468 enable_write_review:true, //Show "Write Review" button 6469 enable_ask_question:true, //Show "Ask Question" button 6470 enable_sub_header:true, //Show subheader 6471 show_rating_threshold_percent:0, 6472 }, 6473 6474 //Filtering settings: 6475 filtering:{ 6476 enable:true, //Show filtering options
6477 enable_text_search:true, //Show search field 6478 enable_sorting:true, //Show sorting options (most recent, most popular) 6479 enable_overall_rating_filter:true, //Show overall rating breakdown filter 6480 enable_ratings_filters:true, //Show product attributes filter 6481 enable_attributes_filters:true, //Show author attributes filter 6482 }, 6483 6484 //Review settings: 6485 reviews:{ 6486 enable_review_title:true, 6487 default_sort:'date_desc', //Default sort 6488 enable_avatar:false, //Show author avatar 6489 enable_replies:true, //Show replies 6490 enable_reviewer_name:true, //Show author name 6491 enable_reviewer_address:true, //Show author location 6492 reviewer_address_format:'city, country', //Author location display format 6493 enable_verified_badge:true, //Show "Verified Customer" badge 6494 enable_reviewer_recommends:true, //Show "I recommend it" badge 6495 enable_attributes:true, //Show author attributes 6496 enable_product_name:true, //Show display product name 6497 enable_images:true, //Show display review photos 6498 enable_ratings:true, //Show product attributes (additional ratings) 6499 enable_share:true, //Show share buttons 6500 enable_helpful_vote:true, //Show "was this helpful?" section 6501 enable_helpful_display:true, //Show how many times times review upvoted 6502 enable_report:true, //Show report button 6503 enable_date:true, //Show when review was published 6504 }, 6505 }, 6506 6507 /* Customise Colours & Fonts */ 6508 styles: { 6509 //Base font size is a reference size for all text elements. When base value gets changed, all TextHeading and TexBody elements get proportionally adjusted. 6510 '--base-font-size':'16px', 6511 6512 //Button styles (shared between buttons): 6513 '--common-button-font-family': 'inherit', 6514 '--common-button-font-size':'16px', 6515 '--common-button-font-weight':'500', 6516 '--common-button-letter-spacing':'0', 6517 '--common-button-text-transform':'none', 6518 '--common-button-vertical-padding':'10px', 6519 '--common-button-horizontal-padding':'20px', 6520 '--common-button-border-width':'2px', 6521 '--common-button-border-radius':'0px', 6522 6523 //Primary button styles: 6524 '--primary-button-bg-color': '#13322b', 6525 '--primary-button-border-color': '#13322b', 6526 '--primary-button-text-color': '#ffffff', 6527 6528 //Secondary button styles: 6529 '--secondary-button-bg-color':'', 6530 '--secondary-button-border-color':'#13322b', 6531 '--secondary-button-text-color':'#13322b', 6532 6533 //Star styles: 6534 '--common-star-color': '#b86e36', 6535 '--common-star-disabled-color': 'rgba(0,0,0,0.25)', 6536 '--medium-star-size':'22px', 6537 '--small-star-size':'19px', 6538 6539 //Heading styles: 6540 '--heading-text-color':`#13322b`, 6541 '--heading-text-font-weight':'600', 6542 '--heading-text-font-family': `"DM Sans", sans-serif`, 6543 '--heading-text-line-height': '1.4', 6544 '--heading-text-letter-spacing':'0', 6545 '--heading-text-transform':'none', 6546 6547 //Body text styles: 6548 '--body-text-color':`#13322b`, 6549 '--body-text-font-weight':'400', 6550 '--body-text-font-family':'inherit', 6551 '--body-text-line-height': '1.4', 6552 '--body-text-letter-spacing':'0', 6553 '--body-text-transform':'none', 6554 6555 //Input field styles: 6556 '--inputfield-text-font-family':'inherit', 6557 '--input-text-font-size':'14px', 6558 '--inputfield-text-font-weight':'400', 6559 '--inputfield-text-color':'#0E1311', 6560 '--inputfield-border-color':'rgba(0,0,0,0.2)', 6561 '--inputfield-background-color':'transparent',
6562 '--inputfield-border-width':'1px', 6563 '--inputfield-border-radius':'0px', 6564 6565 '--common-border-color':'#13322b', 6566 '--common-border-width':'1px', 6567 '--common-sidebar-width':'190px', 6568 6569 //Slider indicator (for attributes) styles: 6570 '--slider-indicator-bg-color':'rgba(0,0,0,0.1)', 6571 '--slider-indicator-button-color':'#0E1311', 6572 '--slider-indicator-width':'190px', 6573 6574 //Badge styles: 6575 '--badge-icon-color':`#31bb31`, 6576 '--badge-icon-font-size':'inherit', 6577 '--badge-text-color':`#13322b`, 6578 '--badge-text-font-size':'inherit', 6579 '--badge-text-letter-spacing':'inherit', 6580 '--badge-text-transform':'inherit', 6581 6582 //Author styles: 6583 '--author-font-size':'inherit', 6584 '--author-text-transform':'none', 6585 6586 //Author avatar styles: 6587 '--avatar-thumbnail-size':'60px', 6588 '--avatar-thumbnail-border-radius':'100px', 6589 '--avatar-thumbnail-text-color':'#0E1311', 6590 '--avatar-thumbnail-bg-color':'rgba(0,0,0,0.1)', 6591 6592 //Product photo or review photo styles: 6593 '--photo-video-thumbnail-size':'80px', 6594 '--photo-video-thumbnail-border-radius':'0px', 6595 6596 //Media (photo & video) slider styles: 6597 '--mediaslider-scroll-button-icon-color':'#0E1311', 6598 '--mediaslider-scroll-button-bg-color':'rgba(255, 255, 255, 0.85)', 6599 '--mediaslider-overlay-text-color':'#ffffff', 6600 '--mediaslider-overlay-bg-color':'rgba(0, 0, 0, 0.8)', 6601 '--mediaslider-item-size':'110px', 6602 6603 //Pagination & tabs styles (normal): 6604 '--pagination-tab-text-color':'#0E1311', 6605 '--pagination-tab-text-transform':'none', 6606 '--pagination-tab-text-letter-spacing':'0', 6607 '--pagination-tab-text-font-size':'16px', 6608 '--pagination-tab-text-font-weight':'600', 6609 6610 //Pagination & tabs styles (active): 6611 '--pagination-tab-active-text-color':'#0E1311', 6612 '--pagination-tab-active-text-font-weight':'600', 6613 '--pagination-tab-active-border-color':'#0E1311', 6614 '--pagination-tab-border-width':'3px', 6615 6616 //AI summary styles 6617 '--sentiment-base-font-size': '15px', 6618 '--sentiment-panel-bg-color': 'transparent', 6619 '--sentiment-panel-border-size': '1px', 6620 '--sentiment-panel-border-color': 'rgba(0, 0, 0, 0.1)', 6621 '--sentiment-panel-border-radius': '0px', 6622 '--sentiment-panel-shadow-size': '0px', 6623 '--sentiment-panel-shadow-color': 'rgba(0, 0, 0, 0.1)', 6624 '--sentiment-heading-text-color': '#0E1311', 6625 '--sentiment-heading-text-font-weight': '600', 6626 '--sentiment-heading-text-font-family': 'inherit', 6627 '--sentiment-heading-text-line-height': '1.4', 6628 '--sentiment-heading-text-letter-spacing': '0', 6629 '--sentiment-heading-text-transform': 'none', 6630 '--sentiment-body-text-color': '#0E1311', 6631 '--sentiment-body-text-font-weight': '400', 6632 '--sentiment-body-text-font-family': 'inherit', 6633 '--sentiment-body-text-line-height': '1.4', 6634 '--sentiment-body-text-letter-spacing': '0', 6635 '--sentiment-body-text-transform': 'none', 6636 '--sentiment-panel-vertical-padding': '25px', 6637 '--sentiment-panel-horizontal-padding': '20px', 6638 '--sentiment-header-text-color': 'inherit', 6639 '--sentiment-header-text-font-size': '12px', 6640 '--sentiment-header-text-font-weight': 'inherit', 6641 '--sentiment-header-bg-color': 'rgba(0, 0, 0, 0.04)', 6642 '--sentiment-header-border-radius': '50px', 6643 '--sentiment-header-shadow-size': '0px', 6644 '--sentiment-header-shadow-color': 'rgba(0, 0, 0, 0.1)', 6645 '--sentiment-header-vertical-padding': '7px', 6646 '--sentiment-header-horizontal-padding': '10px', 6647 '--sentiment-pagination-tab-text-font-size': '13px',
6648 '--sentiment-pagination-tab-text-font-weight': '600', 6649 '--sentiment-pagination-tab-text-color': '#0E1311', 6650 '--sentiment-pagination-tab-text-transform': 'none', 6651 '--sentiment-pagination-tab-text-letter-spacing': '0', 6652 '--sentiment-pagination-tab-active-text-color': '#0E1311', 6653 '--sentiment-pagination-tab-active-text-font-weight': '600', 6654 '--sentiment-pagination-tab-active-border-color': '#0E1311', 6655 '--sentiment-pagination-tab-border-width': '3px', 6656 }, 6657 6658 }); 6659 } 6660 6661 // Ensure the Polaris script exists even when block is injected after load. 6662 ensureScriptOnce('https://widget.reviews.io/polaris/build.js', 'reviewsio-polaris-js'); 6663 6664 window.__reviewsioInitPolarisWidgets = window.__reviewsioInitPolarisWidgets || init; 6665 6666 if (document.readyState === 'loading') { 6667 window.addEventListener('DOMContentLoaded', init); 6668 } else { 6669 init(); 6670 } 6671 6672 document.addEventListener('shopify:section:load', init); 6673 document.addEventListener('shopify:block:select', init); 6674 // If preview config arrives later, this will be called from reviewsio-preview.js. 6675 })();</script>
6675 6676 6677</reviewsio-product-reviews-widget> 6678 6679 6680</div></div></div> 6681</div> 6682 6683 6684</div> 6685 </wlm> 6686 <div id="wlmpnf" style="display:none;"> 6687 <div class="page-width"> 6688 <div class="grid"> <div class="grid__item medium-up--five-sixths medium-up--push-one-twelfth"> 6689 <div class="section-header text-center"> <h1><span class="wlm-title-pnf"></span></h1> 6690 </div> 6691 6692 <div class="rte"> <div class="wlm-message-pnf"></div> 6693 </div></div> 6694 </div></div></div> <div id="wlm-pwd-form" style="display: none;"> <div id="wlm-wrapper"> <div class="wlm-form-holder"> <input type="password" placeholder="Enter passcode" id="wlm-pwd" 6695 onkeypress='if( event.keyCode == 13 && typeof wlm == "object" && typeof wlm.unlockByAuth == "function" ) { event.preventDefault(); wlm.unlockByAuth(this); }' /> <a href="javascript:void(0);" id="wlm-pwd-form-button" 6696 onclick='if( typeof wlm == "object" && typeof wlm.unlockByAuth == "function" ) wlm.unlockByAuth(this);'> 6697 Enter</a></div> <div id="wlm-pwd-error">Invalid Password</div></div></div>
6697<script type="text/javascript" id="wlm-helper"> 6698 if( typeof wlm == "object" ) wlm.toggleContent(true);</script>
6698</div> <div id="shopify-section-footer" class="shopify-section shopify-section--footer">
6698<script 6699 type="application/json" 6700 data-section-type="footer" 6701 data-section-id="footer" 6702></script>
6702<footer class="footer"> <section class="section"> <div class="container footer-menu-wrap"> <div 6703 class="one-fifth column medium-down--one-whole" 6704 6705 > <div class="text-align--left"> <img 6706 alt="Altitude Coffee London White Logo" 6707 class="footer-logo lazyload blur-up" 6708 data-sizes="25vw" 6709 style="max-width:1452px" 6710 data-src="//altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_2048x.png?v=1616621864" 6711 data-srcset=" 6712 //altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_200x.png?v=1616621864 200w, 6713 //altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_300x.png?v=1616621864 300w, 6714 //altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_400x.png?v=1616621864 400w, 6715 //altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_500x.png?v=1616621864 500w, 6716 //altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_600x.png?v=1616621864 600w, 6717 //altitudecoffeelondon.com/cdn/shop/files/altitude-coffee-adjusted-2-white_1000x.png?v=1616621864 1000w 6718 " 6719 ></div> 6720 6721 6722 6723<div class="footer-social-icons text-align--left"> <ul class="social_icons"> <li><a href="mailto:[email protected]" title="Email Altitude Coffee London" class="icon-email"></a></li> <li><a href="https://facebook.com/altcoffeeldn" title="Altitude Coffee London on Facebook" rel="me" target="_blank" class="icon-facebook"></a></li> <li><a href="https://instagram.com/altcoffeeldn" title="Altitude Coffee London on Instagram" rel="me" target="_blank" class="icon-instagram"></a></li> <li><a href="https://twitter.com/altcoffeeldn" title="Altitude Coffee London on Twitter" rel="me" target="_blank" class="icon-twitter"></a></li> 6724 6725 6726 6727 6728 6729 6730 6731</ul></div></div> <div 6732 class="one-fifth column medium-down--one-whole" 6733 6734 > <div class="footer_menu"> <h6> 6735 SHOP<span class="right icon-down-arrow"></span></h6> <div class="toggle_content"> <ul> <li> <p> <a href="/collections">SHOP ALL</a></p></li> <li> <p> <a href="/collections/coffee">COFFEE</a></p></li> <li> <p> <a href="/collections/coffee-brewing-equipment">BREW GEAR</a></p></li> <li> <p> <a href="/collections/espresso-machines">ESPRESSO MACHINES</a></p></li> <li> <p> <a href="/collections/coffee-grinders">GRINDERS</a></p></li></ul></div></div></div> <div 6736 class="one-fifth column medium-down--one-whole" 6737 6738 > <div class="footer_menu"> <h6> 6739 USEFUL LINKS<span class="right icon-down-arrow"></span></h6> <div class="toggle_content"> <ul> <li> <p> <a href="/pages/about-us">ABOUT US</a></p></li> <li> <p> <a href="/pages/faqs">FAQs</a></p></li> <li> <p> <a href="/pages/contact-us">CONTACT US</a></p></li> <li> <p> <a href="/pages/wholesale-coffee">WHOLESALE</a></p></li> <li> <p> <a href="/blogs/altitude-coffee-blog">BLOGS</a></p></li></ul></div></div></div> <div 6740 class="one-fifth column medium-down--one-whole" 6741 6742 > <div class="footer_menu"> <h6> 6743 POLICIES<span class="right icon-down-arrow"></span></h6> <div class="toggle_content"> <ul> <li> <p> <a href="/policies/terms-of-service">TERMS OF SERVICE</a></p></li> <li> <p> <a href="/policies/refund-policy">REFUND POLICY</a></p></li> <li> <p> <a href="/policies/shipping-policy">SHIPPING POLICY</a></p></li> <li> <p> <a href="/policies/privacy-policy">PRIVACY POLICY</a></p></li></ul></div></div></div> <div 6744 class="one-fifth column medium-down--one-whole" 6745 6746 > <div class="footer_content footer-text "> <h6> 6747 COMPANY DETAILS<span class="right icon-down-arrow"></span></h6> <div class="toggle_content"> <p>ALTITUDE COFFEE LTD</p><p>UNIT 2, 190 HORNCHURCH ROAD</p><p>HORNCHURCH</p><p>RM11 1QL</p><p>020 8614 0708</p></div></div></div> <div class="footer-social-icons--mobile sixteen columns"> <ul class="social_icons"> <li>
6747<a href="mailto:[email protected]" title="Email Altitude Coffee London" class="icon-email"></a></li> <li><a href="https://facebook.com/altcoffeeldn" title="Altitude Coffee London on Facebook" rel="me" target="_blank" class="icon-facebook"></a></li> <li><a href="https://instagram.com/altcoffeeldn" title="Altitude Coffee London on Instagram" rel="me" target="_blank" class="icon-instagram"></a></li> <li><a href="https://twitter.com/altcoffeeldn" title="Altitude Coffee London on Twitter" rel="me" target="_blank" class="icon-twitter"></a></li> 6748 6749 6750 6751 6752 6753 6754 6755</ul></div> <div class="one-whole column footer_credits"> <p class="credits"> 6756 © 2026 <a href="/" title="">Altitude Coffee London</a>. <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&utm_medium=shopify&utm_source=onlinestore">Registered Company 12563446. VAT No 348013320.</a></p> <div class="payment_methods"> <svg class="payment-icon" 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> <svg class="payment-icon" 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
67560 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" /><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> <svg class="payment-icon" 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.
675606zM23.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> <svg class="payment-icon" 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> <svg class="payment-icon" 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
67560-.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> <svg class="payment-icon" 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-.114c-.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> <svg class="payment-icon" 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
675616.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></div></div></div></section>
6756<script src="https://widget.reviews.co.uk/rating-snippet/dist.js"></script>
6756 <link rel="stylesheet" href="https://widget.reviews.co.uk/rating-snippet/dist.css">
6756<script> 6757 ratingSnippet("ruk_rating_snippet", { 6758 store: "https-altitudecoffeelondon.com-", 6759 mode: "default", 6760 color: "#B86E36", 6761 linebreak: false, 6762 text: "Reviews", 6763 singularText: "Review", 6764 lang: "en", 6765 usePolaris: true, 6766 showEmptyStars: true, 6767 });</script>
6767 6768</footer> 6769 6770 6771</div> <div class="mobile-search is-hidden-large" data-autocomplete-true> <form class="search-form search-popup__form" action="/search"> <div class="search__fields"> <input type="hidden" name="type" value="product" /> <label for="q" class="visually-hidden">Search</label> <input class="input" id="q" type="text" name="q" placeholder="Search" value="" x-webkit-speech autocapitalize="off" autocomplete="off" autocorrect="off" /> <span class="icon-search submit-search"></span> <span class="icon-cross close-search"></span> <input type="submit" name="search" class="visually-hidden" value="" /></div></form> 6772</div>
6772<script async data-src="https://eu-library.klarnaservices.com/lib.js" data-client-id="9d29e55f-432f-5805-9098-80a284526ae6"></script>
6772
6772<script type="text/javascript" defer> 6773 var createImg=document.createElement("img");createImg.src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI5OTk5OXB4IiBoZWlnaHQ9Ijk5OTk5cHgiIHZpZXdCb3g9IjAgMCA5OTk5OSA5OTk5OSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48ZyBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIGZpbGwtb3BhY2l0eT0iMCI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijk5OTk5IiBoZWlnaHQ9Ijk5OTk5Ij48L3JlY3Q+IDwvZz4gPC9zdmc+",createImg.setAttribute("style","pointer-events: none; position: absolute; top: 0; left: 0; width: 96vw; height: 96vh; max-width: 99vw; max-height: 99vh;"),document.body.insertBefore(createImg,document.body.firstChild);var script_loaded=!1;function loadJSscripts(){script_loaded||(void 0!==uLTS&&uLTS.disconnect(),void 0!==window.yett&&window.yett.unblock(),script_loaded=!0,document.querySelectorAll("iframe[data-src], script[data-src]").forEach(t=>{datasrc=t.dataset.src,null!=datasrc&&(t.src=datasrc)}),document.querySelectorAll("link[data-href]").forEach(t=>{datahref=t.dataset.href,null!=datahref&&(t.href=datahref)}),document.querySelectorAll("script[type='text/lazyload']").forEach(t=>{var e=document.createElement("script");for(a=0;a<t.attributes.length;a++){var r=t.attributes[a];e.setAttribute(r.name,r.value)}e.type="text/javascript",e.innerHTML=t.innerHTML,t.parentNode.insertBefore(e,t),t.parentNode.removeChild(t)}),document.dispatchEvent(new CustomEvent("asyncLazyLoad")),setTimeout(function(){document.dispatchEvent(new CustomEvent("loadBarInjector"))},3e3))}var activityEvents=["mousedown","mousemove","keydown","scroll","touchstart","click","keypress","touchmove"];activityEvents.forEach(function(t){window.addEventListener(t,loadJSscripts,!1)}); 6774 6775</script>
6775 <!-- Stamped - Begin Script-->
6775<script>function myInit(){ StampedFn.init({ apiKey: 'pubkey-hW6mjMim5F5e57CR6Dk1BLxOudV9Pi', storeUrl: '256790' }); }</script>
vendor: 1 bytes, line 6775
6775
6776<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
6776 <style> #stamped-main-widget .stamped-filters-wrapper { display: none; }</style> <!-- Stamped - End Script --><br>
6776<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
6776 <!-- "snippets/th-bundle-product.liquid" was not rendered, the associated app was uninstalled -->
6776<script defer src="//altitudecoffeelondon.com/cdn/shop/t/80/assets/footer.js?v=123552427948642468151791218265" type="text/javascript"></script>
6776 <!-- WPD Start --> <!-- WPD End --> 6777 6778 6779<style> 6780 .wlm-content { 6781 max-width: 100%; 6782 width: 100%; 6783 } 6784 #wpdSubmitButton { 6785 background-color: #12332f; 6786 } 6787</style><div id="shopify-block-AQm9TRHFSWXVWZkxWc__15316669992541710076" class="shopify-block shopify-app-block">
6787<script defer src="https://widget.reviews.io/rating-snippet/dist.js"></script>
6787 6788<link rel="stylesheet" href="https://widget.reviews.io/rating-snippet/dist.css" />
6789<script> 6790 (function () { 6791 function initRatingSnippet() { 6792 var hasStore = typeof reviewsIoStore !== 'undefined' && !!reviewsIoStore; 6793 if (!hasStore) return; 6794 6795 if (typeof ratingSnippet !== 'function') return; 6796 6797 // Ensure the target element exists (rating-output block may render after this app embed). 6798 if (!document.querySelector('.ruk_rating_snippet')) return; 6799 6800 var storeOverride = window.__REVIEWSIO_RATING_SNIPPET_STORE_OVERRIDE__; 6801 var storeForSnippet = storeOverride || reviewsIoStore; 6802 6803 ratingSnippet("ruk_rating_snippet",{ 6804 store: storeForSnippet, 6805 color: '#b86e36', 6806 6807 textClr: '#333333', 6808 6809 linebreak: false, 6810 6811 usePolaris: true, 6812 6813 6814 listenForChanges: true, 6815 6816 6817 6818 6819 text: 'Reviews', 6820 6821 lang: (typeof reviewsIoLang !== 'undefined' && reviewsIoLang) ? reviewsIoLang : 'en', 6822 mode: 'default', 6823 showEmptyStars: true, 6824 6825 anchorToReviewsWidget: true, 6826 6827 enableSyndication: (typeof reviewsIoEnableSyndication !== 'undefined') ? reviewsIoEnableSyndication : false 6828 }); 6829 6830 const reviewsIoModal = document.getElementById('reviews_fade'); 6831 if (reviewsIoModal) { 6832 reviewsIoModal.classList.add('rio-withoutBranding'); 6833 } 6834 } 6835 6836 // Retry to survive slow network/script timing. 6837 var attempts = 0; 6838 var MAX_RATING_SNIPPET_INIT_ATTEMPTS = 20; 6839 var MAX_TIMEOUT_RETRY = 200; 6840 6841 function tick() { 6842 attempts += 1; 6843 initRatingSnippet(); 6844 if (attempts < MAX_RATING_SNIPPET_INIT_ATTEMPTS && (typeof ratingSnippet !== 'function' || !document.querySelector('.ruk_rating_snippet'))) { 6845 window.setTimeout(tick, MAX_TIMEOUT_RETRY); 6846 } 6847 } 6848 6849 // Use window load to maximize chance that the external script executed. 6850 window.addEventListener('load', tick); 6851 })(); 6852</script>
6852 6853 6854 6855</div><div id="shopify-block-AbmZNMkJoZTRRcUIvb__10830403595879607806" class="shopify-block shopify-app-block"><style> 6856 .rio-withoutBranding .FloatingWidget .R-Logo, 6857 .rio-withoutBranding .CarouselWidget .R-ReviewsioLogo, 6858 .rio-withoutBranding .ElementsWidget .footer__reviewsLogo-container, 6859 .rio-withoutBranding .QnaWidget .footer__reviewsLogo-container, 6860 .rio-withoutBranding .MediaGalleryWidget-prefix .R-ReviewsioLogo, 6861 .rio-withoutBranding .RatingBarWidget .R-PlatformIcon { 6862 display: none !important; 6863 } 6864</style>
6865<script> 6866 window.__REVIEWS_EDITOR__ = false; 6867 window.__REVIEWS_DEMO_CONFIG__ = { 6868 store: 'ecommerce-demo-store', 6869 sku: 'bunch_of_flowers_sku;blue_flowers_sku;white_flowers_sku;pastel_flowers_sku;summer_selection_sku', 6870 widgetIds: { 6871 nuggets: 'W10cpKyjl72VtHv6', 6872 ugc: '7sG9C5qNeKpvhykZ', 6873 floating: 'GBvqmKV1Zy9H4Mpd', 6874 ratingBar: 'pxNMXi7FTlODgr8Q', 6875 survey: 'uLJcD7bFpGMf1Z0C' 6876 }, 6877 surveyCampaignId: '392' 6878 }; 6879 6880 6881 var reviewsIoStore = 'https-altitudecoffeelondon.com-'; 6882 6883 6884 var reviewsIoEnableSyndication = false; 6885 6886 6887 6888 6889 var reviewsIoLang = 'en'; 6890 6891 6892</script>
6892 6893
6894<script defer src="https://cdn.shopify.com/extensions/01a0f781-40b0-734a-a579-a6ab0f7a7741/reviews-co-uk-product-and-merchant-review-collection-60/assets/reviewsio-preview.js"></script>
6894 6895 6896 6897 6898</div>
6898<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
6898 6899</body> 6900</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.