PageSourceSearch

https://altitudecoffeelondon.com/collections/coffee/products/espresso-roast-coffee-blend

html altitudecoffeelondon.com collected 2026-10-09 21:47:26 UTC 458,699 bytes, 6,900 lines download raw bytes

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&#39;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&amp;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&#39;s Roast doesn&#39;t. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it&#39;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&#39;t.
382Awarded two stars at the Great Taste Awards. If you&#39;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&#39;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>&nbsp;<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":"&#10005;","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&region_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&#39;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&amp;#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&#39;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&amp;#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&#39;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&#39;s Roast Espresso Blend. Specialty coffee blend"> <img src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastMap_300x.jpg?v=1680956690" alt="The Captain&#39;s Roast Espresso Blend. Specialty coffee blend"></div> <div tabindex="0" class="gallery-cell product-gallery__thumbnail" data-title="The Captain&#39;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&#39;s Roast coffee blend taste notes"></div> <div tabindex="0" class="gallery-cell product-gallery__thumbnail" data-title="The Captain&#39;s Roast espresso blend on white background"> <img src="//altitudecoffeelondon.com/cdn/shop/products/CaptainsRoastFlatLay_300x.jpg?v=1688998076" alt="The Captain&#39;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="{&quot;id&quot;:6253847085254,&quot;title&quot;:&quot;The Captain’s Roast - Espresso Blend&quot;,&quot;handle&quot;:&quot;espresso-roast-coffee-blend&quot;,&quot;description&quot;:&quot;\u003cp class=\&quot;MsoNormal\&quot; style=\&quot;margin-bottom: 8.0pt;\&quot;\u003eSome espresso blends play it safe. The Captain&#39;s Roast doesn&#39;t. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it&#39;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=\&quot;MsoNormal\&quot; style=\&quot;margin-bottom: 8.0pt;\&quot;\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&#39;t.\u003c\/p\u003e\n\u003cp class=\&quot;MsoNormal\&quot; style=\&quot;margin-bottom: 8.0pt;\&quot;\u003eAwarded two stars at the Great Taste Awards. If you&#39;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&quot;,&quot;published_at&quot;:&quot;2022-10-02T15:11:31+01:00&quot;,&quot;created_at&quot;:&quot;2021-02-22T05:47:36+00:00&quot;,&quot;vendor&quot;:&quot;Altitude Coffee London&quot;,&quot;type&quot;:&quot;Coffee&quot;,&quot;tags&quot;:[&quot;coffee&quot;,&quot;coffee products&quot;],&quot;price&quot;:1150,&quot;price_min&quot;:1150,&quot;price_max&quot;:4200,&quot;available&quot;:true,&quot;price_varies&quot;:true,&quot;compare_at_price&quot;:null,&quot;compare_at_price_min&quot;:0,&quot;compare_at_price_max&quot;:0,&quot;compare_at_price_varies&quot;:false,&quot;variants&quot;:[{&quot;id&quot;:38309800706246,&quot;title&quot;:&quot;250g \/ Whole Bean&quot;,&quot;option1&quot;:&quot;250g&quot;,&quot;option2&quot;:&quot;Whole Bean&quot;,&quot;option3&quot;:null,&quot;sku&quot;:&quot;CAPTAIN250-WB&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;The Captain’s Roast - Espresso Blend - 250g \/ Whole Bean&quot;,&quot;public_title&quot;:&quot;250g \/ Whole Bean&quot;,&quot;options&quot;:[&quot;250g&quot;,&quot;Whole Bean&quot;],&quot;price&quot;:1150,&quot;weight&quot;:330,&quot;compare_at_price&quot;:null,&quot;inventory_management&quot;:null,&quot;barcode&quot;:&quot;5065010122000&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:38309800804550,&quot;title&quot;:&quot;250g \/ Espresso - Fine Ground&quot;,&quot;option1&quot;:&quot;250g&quot;,&quot;option2&quot;:&quot;Espresso - Fine Ground&quot;,&quot;option3&quot;:null,&quot;sku&quot;:&quot;CAPTAIN250-E&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;The Captain’s Roast - Espresso Blend - 250g \/ Espresso - Fine Ground&quot;,&quot;public_title&quot;:&quot;250g \/ Espresso - Fine Ground&quot;,&quot;options&quot;:[&quot;250g&quot;,&quot;Espresso - Fine Ground&quot;],&quot;price&quot;:1150,&quot;weight&quot;:330,&quot;compare_at_price&quot;:null,&quot;inventory_management&quot;:null,&quot;barcode&quot;:null,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:38309800837318,&quot;title&quot;:&quot;250g \/ Filter - Medium Ground&quot;,&quot;option1&quot;:&quot;250g&quot;,&quot;option2&quot;:&quot;Filter - Medium Ground&quot;,&quot;option3&quot;:null,&quot;sku&quot;:&quot;CAPTAIN250-F&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;The Captain’s Roast - Espresso Blend - 250g \/ Filter - Medium Ground&quot;,&quot;public_title&quot;:&quot;250g \/ Filter - Medium Ground&quot;,&quot;options&quot;:[&quot;250g&quot;,&quot;Filter - Medium Ground&quot;],&quot;price&quot;:1150,&quot;weight&quot;:330,&quot;compare_at_price&quot;:null,&quot;inventory_management&quot;:null,&quot;barcode&quot;:null,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:38309800870086,&quot;title&quot;:&quot;250g \/ Press - Coarse Ground&quot;,&quot;option1&quot;:&quot;250g&quot;,&quot;option2&quot;:&quot;Press - Coarse Ground&quot;,&quot;option3&quot;:null,&quot;sku&quot;:&quot;CAPTAIN250-P&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;The Captain’s Roast - Espresso Blend - 250g \/ Press - Coarse Ground&quot;,&quot;public_title&quot;:&quot;250g \/ Press - Coarse Ground&quot;,&quot;options&quot;:[&quot;250g&quot;,&quot;Press - Coarse Ground&quot;],&quot;price&quot;:1150,&quot;weight&quot;:330,&quot;compare_at_price&quot;:null,&quot;inventory_management&quot;:null,&quot;barcode&quot;:null,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:38309800739014,&quot;title&quot;:&quot;500g \/ Whole Bean&quot;,&quot;option1&quot;:&quot;500g&quot;,&quot;option2&quot;:&quot;Whole Bean&quot;,&quot;option3&quot;:null,&quot;sku&quot;:&quot;CAPTAIN500-WB&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;The Captain’s Roast - Espresso Blend - 500g \/ Whole Bean&quot;,&quot;public_title&quot;:&quot;500g \/ Whole Bean&quot;,&quot;options&quot;:[&quot;500g&quot;,&quot;Whole Bean&quot;],&quot;price&quot;:2200,&quot;weight&quot;:600,&quot;compare_at_price&quot;:null,&quot;inventory_management&quot;:null,&quot;barcode&quot;:&quot;5065010122017&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}},{&quot;id&quot;:38309800771782,&quot;title&quot;:&quot;1kg \/ Whole Bean&quot;,&quot;option1&quot;:&quot;1kg&quot;,&quot;option2&quot;:&quot;Whole Bean&quot;,&quot;option3&quot;:null,&quot;sku&quot;:&quot;CAPTAIN1K-WB&quot;,&quot;requires_shipping&quot;:true,&quot;taxable&quot;:true,&quot;featured_image&quot;:null,&quot;available&quot;:true,&quot;name&quot;:&quot;The Captain’s Roast - Espresso Blend - 1kg \/ Whole Bean&quot;,&quot;public_title&quot;:&quot;1kg \/ Whole Bean&quot;,&quot;options&quot;:[&quot;1kg&quot;,&quot;Whole Bean&quot;],&quot;price&quot;:4200,&quot;weight&quot;:1190,&quot;compare_at_price&quot;:null,&quot;inventory_management&quot;:null,&quot;barcode&quot;:&quot;5065010122024&quot;,&quot;requires_selling_plan&quot;:false,&quot;selling_plan_allocations&quot;:[],&quot;quantity_rule&quot;:{&quot;min&quot;:1,&quot;max&quot;:null,&quot;increment&quot;:1}}],&quot;images&quot;:[&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690&quot;,&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076&quot;,&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076&quot;],&quot;featured_image&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690&quot;,&quot;options&quot;:[&quot;Bag Size&quot;,&quot;Grind Type&quot;],&quot;media&quot;:[{&quot;alt&quot;:&quot;The Captain&#39;s Roast Espresso Blend. Specialty coffee blend&quot;,&quot;id&quot;:33293037175102,&quot;position&quot;:1,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:1.0,&quot;height&quot;:4016,&quot;width&quot;:4016,&quot;src&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690&quot;},&quot;aspect_ratio&quot;:1.0,&quot;height&quot;:4016,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastMap.jpg?v=1680956690&quot;,&quot;width&quot;:4016},{&quot;alt&quot;:&quot;The Captain&#39;s Roast coffee blend taste notes&quot;,&quot;id&quot;:34232458019134,&quot;position&quot;:2,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:1.0,&quot;height&quot;:2000,&quot;width&quot;:2000,&quot;src&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076&quot;},&quot;aspect_ratio&quot;:1.0,&quot;height&quot;:2000,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/files\/Altitude-end-frames-2023-Captains-Roast-1.jpg?v=1688998076&quot;,&quot;width&quot;:2000},{&quot;alt&quot;:&quot;The Captain&#39;s Roast espresso blend on white background&quot;,&quot;id&quot;:33293037207870,&quot;position&quot;:3,&quot;preview_image&quot;:{&quot;aspect_ratio&quot;:1.0,&quot;height&quot;:4016,&quot;width&quot;:4016,&quot;src&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076&quot;},&quot;aspect_ratio&quot;:1.0,&quot;height&quot;:4016,&quot;media_type&quot;:&quot;image&quot;,&quot;src&quot;:&quot;\/\/altitudecoffeelondon.com\/cdn\/shop\/products\/CaptainsRoastFlatLay.jpg?v=1688998076&quot;,&quot;width&quot;:4016}],&quot;requires_selling_plan&quot;:false,&quot;selling_plan_groups&quot;:[],&quot;content&quot;:&quot;\u003cp class=\&quot;MsoNormal\&quot; style=\&quot;margin-bottom: 8.0pt;\&quot;\u003eSome espresso blends play it safe. The Captain&#39;s Roast doesn&#39;t. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it&#39;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=\&quot;MsoNormal\&quot; style=\&quot;margin-bottom: 8.0pt;\&quot;\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&#39;t.\u003c\/p\u003e\n\u003cp class=\&quot;MsoNormal\&quot; style=\&quot;margin-bottom: 8.0pt;\&quot;\u003eAwarded two stars at the Great Taste Awards. If you&#39;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&quot;}"
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 &amp; 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&#39;s Roast doesn&#39;t. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it&#39;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&#39;t.Awarded two stars at the Great Taste Awards. If you&#39;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&#39;s Roast doesn&#39;t. Roasted deeper to draw out rich, velvety chocolate and a lingering walnut finish, it&#39;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&#39;t.Awarded two stars at the Great Taste Awards. If you&#39;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          &copy; 2026 <a href="/" title="">Altitude Coffee London</a>. <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;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.