1<!doctype html> 2<html class="no-js" lang="en"> 3 <head> 4<!-- Start of Shoplift scripts --> 5<!-- 2026-05-08T05:32:08.8649767Z --> 6<style>.shoplift-hide { opacity: 0 !important; }</style> 7<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
8<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-10-08T05:30:03.0125700Z */(function(){"use strict";var se=document.createElement("style");se.textContent=`#shoplift-preview-control{position:fixed;max-width:332px;height:56px;background-color:#141414;z-index:9999;bottom:20px;display:flex;border-radius:8px;box-shadow:13px 22px 7px #0000,9px 14px 7px #00000003,5px 8px 6px #0000000d,2px 4px 4px #00000017,1px 1px 2px #0000001a,0 0 #0000001a;align-items:center;margin:0 auto;left:16px;right:16px;opacity:0;transform:translateY(20px);visibility:hidden;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s .4s}#shoplift-preview-control.visible{opacity:1;transform:translateY(0);visibility:visible;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s 0s}#shoplift-preview-control *{font-family:Inter,sans-serif;color:#fff;box-sizing:border-box;font-size:16px}#shoplift-preview-variant-title{font-weight:400;line-height:140%;font-size:16px;text-align:start;letter-spacing:-.16px;flex-grow:1;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}#shoplift-preview-variant-selector{position:relative;display:block;padding:6px 0;height:100%;min-width:0;flex:1 1 auto}#shoplift-preview-variant-menu-trigger{border:none;cursor:pointer;width:100%;background-color:transparent;padding:0 16px;border-left:1px solid #333;border-right:1px solid #333;height:100%;display:flex;align-items:center;justify-content:start;gap:8px}#shoplift-preview-variant-selector .menu-variant-label{width:24px;height:24px;border-radius:50%;padding:6px;display:flex;justify-content:center;align-items:center;font-size:12px;font-style:normal;font-weight:600;line-height:100%;letter-spacing:-.12px;flex-shrink:0}#shoplift-preview-variant-selector .preview-variant-menu{position:absolute;bottom:110%;transform:translate3d(0,20px,0);visibility:hidden;pointer-events:none;opacity:0;cursor:pointer;background-color:#141414;border:1px solid #141414;border-radius:6px;width:100%;max-height:156px;overflow-y:auto;box-shadow:0 8px 16px #0003;z-index:1;transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s .3s}#shoplift-preview-variant-selector .preview-variant-menu.preview-variant-menu__visible{visibility:visible;pointer-events:auto;opacity:100;transform:translateZ(0);transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s 0s}@media screen and (max-width:400px){#shoplift-preview-variant-selector .preview-variant-menu{position:fixed;left:0;right:0;width:auto;bottom:110%}}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item{padding:12px 16px;display:flex;overflow:hidden}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item .menu-variant-label{margin-right:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item span{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap;white-space:nowrap;color:#f6f6f6;font-size:14px;font-style:normal;font-weight:500}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:hover{background-color:#545454}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#shoplift-preview-control div:has(#shoplift-exit-preview-button){padding:0 16px}#shoplift-exit-preview-button{padding:6px 8px;font-weight:500;line-height:75%;border-radius:4px;background-color:transparent;border:none;text-decoration:none}#shoplift-exit-preview-button:hover{cursor:pointer;background-color:#333}#shoplift-preview-subscription-warning{position:relative;display:flex;align-items:center;gap:6px;padding:6px 10px;margin:0 4px;border-left:1px solid #333;cursor:help;outline:none}#shoplift-preview-subscription-warning__icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background-color:#f59e0b;color:#141414!important;font-weight:700;font-size:12px!important;line-height:1;flex-shrink:0}#shoplift-preview-subscription-warning__label{font-size:13px!important;font-weight:500;color:#fbbf24!important;text-wrap:nowrap;white-space:nowrap}#shoplift-preview-subscription-warning__tooltip{position:absolute;bottom:calc(100% + 8px);right:0;max-width:320px;width:max-content;padding:10px 12px;border-radius:6px;background-color:#1f1f1f;color:#fff!important;font-size:12px!important;line-height:1.4!important;box-shadow:0 8px 16px #0000004d;z-index:10000;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s .2s;pointer-events:none}#shoplift-preview-subscription-warning__tooltip.shoplift-preview-subscription-warning__tooltip--visible{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s 0s}#shoplift-preview-subscription-warning:focus-visible{box-shadow:inset 0 0 0 2px #f59e0b;border-radius:4px}#shoplift-preview-control:has(#shoplift-preview-subscription-warning){max-width:480px}/*$vite$:1*/`,document.head.appendChild(se);var ge=" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! channel/|google/)google(?!(?:wv|app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!cam)scan|(?<!lib)http|24x
87|;\\s\\w+;$|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+/1\\.0;|\\bbw/|\\bdlc\\b|\\bort/|\\bperl\\b|\\btime/|\\||^[<\\(;]|^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^blackbox exporter|^bot|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^exodusmovement|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\((?:compatible;)?(?:\\s?[\\w\\d-.]+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^ps_daily/|^python|^rank|^read|^reed|^remove\\.bg/|^rest|^rss|^snapchat|^sora |^space bison|^stape/|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|abuse|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|attracta|audit|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|collapsify\\b|convertify|cookiehubverify/|crawl|cursor/|cypress/|dareboost|datanyze|dejaclick|detect|discovery|dmbrowser|download|exaleadcloudview|feed|firephp|foregenix|functionize|grab|hardenize\\b|headless|hotjar|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|linktiger|mail\\.ru/|manager|manus-user/|marketgoo/|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|openvas|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|playwright|powermarks|preview|productfinder|prospectingstudio|proxy|ptst[ /]\\d|radar|readable/|retriever|rexx;|rigor|rss\\b|scrape|securityheaders|selenium|server|silktide|sindup/|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|testlocally|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|watchtowr|webglance|webkit2png|whatcms/|xtate/",me=/bot|crawl|http|lighthouse|scan|search|spider/i,z;function ye(){if(z instanceof RegExp)return z;try{z=new RegExp(ge,"i")}catch{z=me}return z}var ve=a=>typeof a=="string"&&a!=="";function we(a){return ve(a)&&ye().test(a)}var be=we;class ee{timestamp;constructor(){this.timestamp=new Date}}class Se extends ee{type;testId;hypothesisId;constructor(e,t,i){super(),this.type=3,this.testId=e,this.hypothesisId=t,this.timestamp=i}}class Ce extends ee{type;path;constructor(e){super(),this.type=4,this.path=e}}class Te extends ee{type;cart;constructor(e){super(),this.type=5,this.cart=e}}class G extends Error{isBot;constructor(){super(),this.isBot=!0}}function Ie(a,e,t){for(const i of e.selectors){const s=a.querySelectorAll(i.cssSelector);for(let r=0;r<s.length;r++)t(e.testId,e.hypothesisId)}ne(a,e,(i,s,r,n,o)=>o(s,r),t)}function U(a,e,t){for(const i of e.selectors)oe(a,e.testId,e.hypothesisId,i,t??(()=>{}));ne(a,e,oe,t??(()=>{}))}function re(a){return a.urlPatterns.reduce((e,t)=>{switch(t.operator){case"contains":return e+`.*${t}.*`;case"endsWith":return e+`.*${t}`;case"startsWith":return e+`${t}.*`}},"")}function ne(a,e,t,i){new MutationObserver(()=>{for(const r of e.selectors)t(a,e.testId,e.hypothesisId,r,i)}).observe(a.documentElement,{childList:!0,subtree:!0})}function oe(a,e,t,i,s){const r=a.querySelectorAll(i.cssSelector);for(let n=0;n<r.length;n++){let o=r.item(n);if(o instanceof HTMLElement&&o.dataset.shoplift!==""){o.dataset.shoplift="";for(const l of i.actions.sort(De))o=Pe(a,i.cssSelector,o,l)}}return r.length>0&&s?(s(e,t),!0):!1}function Pe(a,e,t,i){switch(i.type){case"innerHtml":t.innerHTML=i.value;break;case"attribute":Ae(t,i.scope,i.value);break;case"css":ke(a,e,i.value);break;case"js":Ee(a,t,i);break;case"copy":return xe(t);case"remove":_e(t);break;case"move":Re(t,parseInt(i.value));break}return t}function Ae(a,e,t){a.setAttribute(e,t)}function ke(a,e,t){const i=a.createElement("style");i.innerHTML=`${e} { ${t} }`,a.getElementsByTagName("head")[0]?.appendChild(i)}function Ee(a,e,t){Function("document","element",`"use strict"; ${t.value}`)(a,e)}function xe(a){const e=a.cloneNode(!0);if(!a.parentNode)throw"Can't copy node outside of DOM";return a.parentNode.insertBefore(e,a.nextSibling),e}function _e(a){a.remove()}function Re(a,e){if(e===0)return;const t=Array.prototype.slice.call(a.parentElement.children).indexOf(a),i=Math.min(Math.max(t+e,0),a.parentElement.children.length-1);a.parentElement.children.item(i).insertAdjacentElement(e>0?"afterend":"beforebegin",a)}function De(a,e){return ae(a)-ae(e)}function ae(a){return a.type==="copy"||a.type==="remove"?0:1}
8const M={Template:0,UrlRedirect:2,Script:3,Price:5},Oe="data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.96001%207.90004C9.86501%207.90004%209.77001%207.86504%209.69501%207.79004L6.43501%204.53004C6.19501%204.29004%205.80501%204.29004%205.56501%204.53004L2.30501%207.79004C2.16001%207.93504%201.92001%207.93504%201.77501%207.79004C1.63001%207.64504%201.63001%207.40504%201.77501%207.26004L5.03501%204.00004C5.56501%203.47004%206.43001%203.47004%206.96501%204.00004L10.225%207.26004C10.37%207.40504%2010.37%207.64504%2010.225%207.79004C10.15%207.86004%2010.055%207.90004%209.96001%207.90004Z'%20fill='white'/%3e%3c/svg%3e",Ve="data:image/svg+xml,%3csvg%20width='14'%20height='24'%20viewBox='0%200%2014%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.3976%2014.5255C12.2833%2013.8788%2012.0498%2013.3024%2011.6952%2012.7961C11.3416%2012.2898%2010.9209%2011.8353%2010.4353%2011.4317C9.94868%2011.0291%209.43546%2010.6488%208.89565%2010.292C8.48487%2010.049%208.09577%209.78565%207.72637%209.50402C7.35697%209.2224%207.08016%208.89503%206.89694%208.51987C6.71273%208.14471%206.67826%207.69533%206.79055%207.1697C6.86345%206.83216%206.97476%206.54647%207.12351%206.31162C7.27324%206.07778%207.47124%205.89986%207.7175%205.77684C7.96377%205.65483%208.21989%205.59383%208.48389%205.59383C8.88087%205.59383%209.17639%205.7016%209.3734%205.91714C9.56943%206.13268%209.68271%206.42345%209.71424%206.78946C9.74576%207.15547%209.72015%207.55401%209.63839%207.98509C9.55663%208.41617%209.43645%208.84724%209.27687%209.27934L13.5127%208.80149C13.9638%207.52656%2014.1017%206.42447%2013.9264%205.49725C13.751%204.56901%2013.2664%203.85122%2012.4724%203.34491C12.239%203.19648%2011.9779%203.07041%2011.6893%202.96569L12.0026%201.50979L9.86397%200L7.3875%201.50979L7.11169%202.78878C6.65166%202.8874%206.21724%203.01957%205.8114%203.19038C4.85292%203.594%204.06684%204.15115%203.45117%204.86385C2.83452%205.57655%202.42571%206.40108%202.22378%207.33847C2.06616%208.06947%202.04942%208.70796%202.17551%209.25087C2.30061%209.7948%202.52028%2010.2828%202.8355%2010.7139C3.14974%2011.145%203.51816%2011.5344%203.93977%2011.881C4.36039%2012.2288%204.782%2012.5521%205.20164%2012.851C5.68334%2013.1702%206.13844%2013.5169%206.56497%2013.8921C6.99052%2014.2672%207.31954%2014.7125%207.55004%2015.228C7.78055%2015.7445%207.81502%2016.3769%207.65347%2017.1262C7.56482%2017.5389%207.43676%2017.8765%207.27028%2018.1388C7.10381%2018.4011%206.89596%2018.5983%206.64772%2018.7295C6.3985%2018.8606%206.12071%2018.9267%205.8114%2018.9267C5.21641%2018.9267%204.79776%2018.6034%204.62833%2018.1632C4.4589%2017.7229%204.47367%2017.2583%204.60075%2016.5639C4.72782%2015.8705%205.05092%2015.1395%205.37107%2014.3699H1.17665C1.17665%2014.3699%200.207341%2016.1115%200.0310135%2017.6762C-0.0655232%2018.5302%200.0635208%2019.2653%200.41519%2019.8844C0.76686%2020.5036%201.33032%2020.9814%202.10655%2021.319C2.39222%2021.443%202.7104%2021.5447%203.05813%2021.623L2.54589%2024H7.17473L7.7047%2021.5386C8.08493%2021.442%208.43857%2021.3231%208.76562%2021.1787C9.73985%2020.7476%2010.52%2020.1427%2011.1071%2019.3649C11.6932%2018.5871%2012.0873%2017.7291%2012.2892%2016.7917C12.4744%2015.9295%2012.5099%2015.1741%2012.3966%2014.5275L12.3976%2014.5255Z'%20fill='white'/%3e%3c/svg%3e";async function Le(a){let e=a.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4;)e+="=";const t=atob(e),i=Uint8Array.from(t,n=>n.charCodeAt(0)),s=new Blob([i]).stream().pipeThrough(new DecompressionStream("gzip")),r=await new Response(s).text();return JSON.parse(r)}function F(a,e){return typeof e=="string"&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+(?:Z|[+-]\d+)/.test(e)?new Date(e):e}function te(a,e){return e}function q(a,e=!1,t=!1,i=","){const s=a/100;if(t){const n=Math.round(s).toLocaleString("en-US");return i!==","?n.replace(/,/g,i):n}else{const r=e?",":".",n=s.toFixed(2).split("."),o=parseInt(n[0],10),l=n[1]??"00",c=o.toLocaleString("en-US");return i!==","?`${c.replace(/,/g,i)}${r}${l}`:e?`${c.replace(/,/g,".")}${r}${l}`:`${c}${r}${l}`}}function H(a,e,t,i){const s=e.replace("{{amount}}",q(a,!1,!1)).replace("{{amount_no_decimals}}",q(a,!1,!0)).replace("{{amount_with_comma_separator}}",q(a,!0,!1)).replace("{{amount_no_decimals_with_comma_separator}}",q(a,!0,!0)).replace("{{amount_with_space_separator}}",q(a,!1,!1," ")).replace("{{amount_no_decimals_with_space_separator}}",q(a,!1,!0," ")).replace("{{amount_with_apostrophe_separator}}",q(a,!1,!1,"'")).replace("{{amount_no_decimals_with_apostrophe_separator}}",q(a,!1,!0,"'")).replace("{{amount_with_period_and_space_separator}}",q(a,!1,!1,". ")).replace("{{amount_no_decimals_with_period_and_space_separator}}",q(a,!1,!0,". "));return i?`${s} ${t}`:s}function le(a){return a.replace(/[^\d.,\s-]/g,"").trim()}function j(a){const e=new Map;for(const[t,i,s]of a.variants)e.set(t,{priceInCents:i,compareAtPriceInCents:s});return e}function $e(a,e,t,i){const{priceInCents:s,compareAtPriceInCents:r}=t,{moneyFormat:n,currency:o,currencyCodeEnabled:l}=i;if(a.getAttribute("data-sl-attribute-p")===e)a.innerHTML=H(s,n,o,l);else if(a.getAttribute("data-sl-attribute-cap")===e)r<=0||r<=s?a.remove():a.innerHTML=H(r,n,o,l);else if(a.getAttribute("data-sl-attribute-discount")===e&&!(r<=0||r<=s)){const d=Math.round((r-s)/r*100),p=le(H(r-s,n,o,!1)),h=a.getAttribute("data-sl-format")||"percent";h==="percent"?a.textContent=`-${d}%`:h==="amount"?a.textContent=`-${p}`:h==="both"&&(a.textContent=`-${d}% (-${p})`)}}function Me(a){const e=[],t={id:"url-pattern",operator:"contains",value:"/"};for(const[i,s,r]of a.variants){e.push({id:`p-${i}`,cssSelector:`[data-sl-attribute-p="${i}"]`,urlPatterns:[t],actions:[{id:`p-action-${i}`,type:"innerHtml",scope:"price",value:H(s,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]});const n=r<=0||r<=s;
8if(e.push({id:`cap-${i}`,cssSelector:`[data-sl-attribute-cap="${i}"]`,urlPatterns:[t],actions:[{id:`cap-action-${i}`,type:n?"remove":"innerHtml",scope:"compare-at-price",value:n?"":H(r,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]}),!n&&r>s){const o=Math.round((r-s)/r*100),l=le(H(r-s,a.moneyFormat,a.currency,!1));e.push({id:`d-${i}`,cssSelector:`[data-sl-attribute-discount="${i}"]`,urlPatterns:[t],actions:[{id:`d-action-${i}`,type:"js",scope:null,value:`var format = element.getAttribute('data-sl-format') || 'percent'; if (format === 'percent') { element.textContent = '-${o}%'; } else if (format === 'amount') { element.textContent = '-${l}'; } else if (format === 'both') { element.textContent = '-${o}% (-${l})'; }`}]})}}return e}const qe=a=>{let e=5381;for(let t=0;t<a.length;t++)e=(e*33^a.charCodeAt(t))>>>0;return e.toString(36)},He=()=>Math.random().toString(36).slice(2,10)+Date.now().toString(36).slice(-4),Ne=a=>btoa(JSON.stringify(a)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),J=a=>a.replace(/#slr-[a-z0-9]+$/,""),Ue=/^[A-Za-z0-9._=~+/-]{1,256}$/,ie=a=>typeof a=="string"&&Ue.test(a)?a:null,Fe=a=>{if(!a)return null;try{const t=JSON.parse(atob(decodeURIComponent(a)))?.$exchange_id;return typeof t=="string"&&t.length>0?t:null}catch{return null}},rt="modulepreload",nt=function(a){return"/"+a},ot={},Be=function(e,t,i){let s=Promise.resolve();function r(n){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=n,window.dispatchEvent(o),!o.defaultPrevented)throw n}return s.then(n=>{for(const o of n||[])o.status==="rejected"&&r(o.reason);return e().catch(r)})};function ce(a,e,t){const i=t?a.plans.filter(c=>!c.variantId||c.variantId===t):a.plans,s=[],r=[];for(const c of i)c.direction==="decrease"?(s.push(c.existingShopifyPlanId),r.push(c.createdShopifyPlanId)):(s.push(c.createdShopifyPlanId),r.push(c.existingShopifyPlanId));const n=e?s:r,o=e?r:s;if(t)for(const c of a.plans)for(const d of[c.existingShopifyPlanId,c.createdShopifyPlanId])d&&!n.includes(d)&&!o.includes(d)&&o.push(d);const l={};for(let c=0;c<o.length;c++){const d=o[c],p=n[c];d&&p&&(l[d]=p)}return{showPlanIds:n,hidePlanIds:o,swapMap:l}}function de(a,e,t){const i=e?a.plans.find(r=>r.variantId===e):void 0;if(i)return i.direction;if(t){const r=a.plans.find(n=>n.productId===t);if(r)return r.direction}return a.plans.find(r=>!r.variantId)?.direction??null}function Y(a,e){const t=e?a.plans.filter(r=>!r.productId||r.productId===e):a.plans,i={};for(const r of t)i[r.existingShopifyPlanId]=r.existingDiscountAmount,i[r.createdShopifyPlanId]=r.existingDiscountAmount;const s=Math.max(...Object.values(i),0);return{discountMap:i,maxDiscount:s}}function W(a){const e=document.querySelector('form[action*="/cart/add"] input[name="product-id"]')?.value;if(e)return e;if(a){for(const r of Array.from(document.querySelectorAll("[data-sl-attribute-p]"))){const n=r.getAttribute("data-sl-attribute-p");if(!n)continue;const o=a.variants.find(l=>l[0]===n);if(o?.[3])return o[3]}const s=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(s){const r=a.variants.find(n=>n[0]===s);if(r?.[3])return r[3]}}const t=window,i=t.ShopifyAnalytics?.meta?.product?.id??t.meta?.product?.id;return i!=null?String(i):null}function D(a,e){return a.widget.selectors[e]??[]}function N(a,e){return a.replace(/[\d.]+%/,`${e}%`)}function $(a,e){const t=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);let i=t.nextNode();for(;i;){if(i.nodeValue!==null){const s=e(i.nodeValue);if(s!==i.nodeValue){i.nodeValue=s;return}}i=t.nextNode()}}function pe(a,e){return a===null?!1:a==="decrease"?!e:e}async function ze(a){if(a.subscriptionSwapDone)return;const e=a.getActiveAssignment();if(!e)return;const t=a.getHypothesis(e.hypothesisId);if(!t?.subscriptionData)return;a.subscriptionSwapDone=!0;const i=t.subscriptionData,s=t.isControl,r=[...new Set(i.plans.map(d=>d.direction))].join(",");a.log(`[SUB-SWAP] ${s?"A":"B"} side, directions=${r}`);const n=i.plans.some(d=>d.variantId);let o=!1,l=!1;function c(){if(!l){l=!0;try{const d=n?document.querySelector("select[name='id'], input[name='id']")?.value:void 0,{showPlanIds:p,hidePlanIds:h,swapMap:u}=ce(i,s,d);a.swapMap=u;const b=D(i,"widgetParent"),E=D(i,"subscriptionPlans"),S=D(i,"subscriptionInput");if(!b.length||!E.length||!S.length)return;const C=document.querySelector(b[0].selector);if(!C?.shadowRoot)return;const _=C.shadowRoot.querySelector(E[0].selector);if(!_?.shadowRoot)return;const T=S[0].selector;let m=null;if(i.widget.widgetType==="buttons"||i.widget.widgetType==="radio"){const y=Array.from(_.shadowRoot.querySelectorAll(T));if(!y.length)return;for(const v of y){const g=v.closest("label");g&&(p.includes(v.value)?g.style.display="":h.includes(v.value)&&(g.style.display="none"))}const w=y.some(v=>p.includes(v.value)&&v.checked),I=y.some(v=>h.includes(v.value)&&v.checked);if((w||I)&&(o=!1),!w&&!o){o=!0;for(const v of y)if(p.includes(v.value)){v.closest("label")?.click(),v.dispatchEvent(new Event("change",{bubbles:!0}));break}}const f=y.find(v=>v.checked);m=f&&p.includes(f.value)?f.value:p[0]??null}else if(i.widget.widgetType==="dropdown"){const y=_.shadowRoot.querySelector("select");if(!y)return;for(const w of Array.from(y.options))h.includes(w.value)&&(w.style.display="none",w.disabled=!0);if(h.includes(y.value)){const w=Array.from(y.options).find(I=>p.includes(I.value));w&&(y.value=w.value,y.dispatchEvent(new Event("change",{bubbles:!0})))}m=p.includes(y.value)?y.value:p[0]??null}if(m){const y=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const w of y)w.value!==m&&(w.value=m)}}finally{l=!1}}}
8if(a.subscriptionHideWrongPlans=c,a.swapMap=ce(i,s).swapMap,c(),n){const d=document.querySelector("select[name='id'], input[name='id']");d&&d.addEventListener("change",c)}}function B(a){const e=D(a,"widgetParent");return e.length?document.querySelector(e[0].selector)?.shadowRoot??null:null}function Z(a,e){const t=D(a,"subscriptionPlans");return t.length?e.querySelector(t[0].selector)?.shadowRoot??null:null}function X(a,e){const t=new URLSearchParams(window.location.search).get("variant");if(t)return t;{const i=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(i)return i}return a.size>0?[...a.keys()][0]:void 0}function K(a,e){return H(a,e.moneyFormat,e.currency,e.currencyCodeEnabled)}function We({originalFetch:a,swapMap:e,slptValue:t,getSelectedPlanId:i,log:s}){if(window.fetch.__shoplift_intercepted)return s("[SUB-INTERCEPT] already installed â skipping"),()=>{};function r(o){if(i){const l=i();if(l)return e[l]??l}return e[o]??o}const n=function(o,l){if((typeof o=="string"?o:o instanceof URL?o.href:o.url).includes("/cart/add")&&l?.body)try{if(l.body instanceof FormData){const d=l.body.get("selling_plan");d?l.body.set("selling_plan",r(String(d))):(!d||d==="")&&t&&l.body.set("properties[_slpt]",t)}else if(typeof l.body=="string"){const d=JSON.parse(l.body);if(d.items)for(const p of d.items){const h=String(p.selling_plan??"");h?p.selling_plan=r(h):!p.selling_plan&&t&&(p.properties||(p.properties={}),p.properties._slpt=t)}else if(d.id){const p=String(d.selling_plan??"");p?d.selling_plan=r(p):!d.selling_plan&&t&&(d.properties||(d.properties={}),d.properties._slpt=t)}l.body=JSON.stringify(d)}}catch(d){s("[SUB-INTERCEPT] body parse failed; cart-add proceeds with un-swapped plan",d)}return a.call(window,o,l)};return n.__shoplift_intercepted=!0,window.fetch=n,function(){window.fetch===n&&(window.fetch=a)}}function Ke({log:a}){if(window.fetch.__shoplift_intercepted)return a("[SUB-PREVIEW-BLOCK] already installed â skipping"),()=>{};const e=window.fetch,t=function(i,s){const r=typeof i=="string"?i:i instanceof URL?i.href:i.url;return r.includes("/cart/add")?(a("[SUB-PREVIEW-BLOCK] cart-add blocked in preview mode",{url:r}),Promise.resolve(new Response(JSON.stringify({id:0,properties:{},quantity:0,variant_id:0,key:"preview",title:"Preview â cart-add blocked",price:0,original_price:0,line_price:0,original_line_price:0,total_discount:0,discounts:[],preview:!0}),{status:200,headers:{"Content-Type":"application/json"}}))):e.call(window,i,s)};return t.__shoplift_intercepted=!0,window.fetch=t,function(){window.fetch===t&&(window.fetch=e)}}function ue({data:a,runUpdates:e,debounceMs:t=150}){let i=null;function s(){i&&clearTimeout(i),e(),i=setTimeout(e,t)}let r=null;const n=[],o={childList:!0,subtree:!0,characterData:!0,attributes:!0};function l(h){for(const u of n)u.disconnect();n.length=0;for(const u of Array.from(h.querySelectorAll("*")))if(u.shadowRoot){const b=new MutationObserver(s);b.observe(u.shadowRoot,o),n.push(b)}}function c(){const h=B(a);return h?(r&&r.disconnect(),l(h),r=new MutationObserver(u=>{u.some(b=>b.type==="childList"&&b.addedNodes.length>0)&&l(h),s()}),r.observe(h,o),!0):!1}const d=document.body||document.documentElement,p=new MutationObserver(()=>{c()&&s()});return p.observe(d,{childList:!0,subtree:!0}),c()&&s(),e(),function(){i&&(clearTimeout(i),i=null),p.disconnect(),r&&(r.disconnect(),r=null);for(const u of n)u.disconnect();n.length=0}}async function Ge(a){if(a.subscriptionPriceDone)return;const e=a.getActiveAssignment(),t=e?a.getHypothesis(e.hypothesisId):void 0,i=t?.subscriptionData?null:a.findActiveSubscriptionTestControl(),s=t?.subscriptionData?t:i?.hypothesis;if(!s?.subscriptionData)return;const r=t?.subscriptionData?e.testId:i.testId;a.subscriptionPriceDone=!0;const n=s.subscriptionData,o=s.isControl,l=s.priceData,c=n.widget.widgetType;let d=W(l),p=Y(n,d),h=p.discountMap,u=p.maxDiscount;function b(){const g=W(l);g!==d&&(d=g,p=Y(n,d),h=p.discountMap,u=p.maxDiscount,a.log(`[SUB-PRICE] scope refreshed side=${o?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${u}`))}a.log(`[SUB-PRICE] side=${o?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${u}
8`),a.updatePriceTestHiddenInputs(r,o?"control":"variant",!1);function E(){if(!l)return null;const g=j(l),P=X(g),A=de(n,P,d);if(!pe(A,o))return null;const k=P?g.get(P):void 0;return k?{formattedVariantPrice:K(k.priceInCents,l),formattedDiscounted:K(k.priceInCents*(1-u/100),l)}:null}We({originalFetch:a.fetch,swapMap:a.swapMap??{},slptValue:a.slptValue??void 0,log:a.log,getSelectedPlanId:()=>{const g=B(n);if(!g)return null;const P=Z(n,g);if(!P)return null;const A=D(n,"subscriptionInput"),k=A.length?A[0].selector:'input[name="rc_plan"]';return P.querySelector(`${k}:checked`)?.value??null}});function S(g){const P=D(n,"subscriptionDiscount");for(const A of P)if(A.selector.includes("badge")||A.selector.includes("__badge")){const k=g.querySelector(A.selector);k?.textContent&&!k.textContent.includes(`${u}%`)&&$(k,x=>N(x,u))}}function C(g){const P=E();if(!P)return;const A=D(n,"subscriptionCompareAt");for(const k of A){const x=g.querySelector(k.selector)||g.querySelector(`[part~="${k.selector}"]`);x?.textContent&&!x.textContent.includes(P.formattedVariantPrice)&&$(x,R=>/\d/.test(R)?P.formattedVariantPrice:R)}}function _(g,P){const A=D(n,"subscriptionCompareAt"),k=P===0?"none":"";for(const x of A){const R=g.querySelector(x.selector)||g.querySelector(`[part~="${x.selector}"]`);R&&(k==="none"?R.style.display!=="none"&&(R.style.display="none"):R.style.display==="none"&&(R.style.display=""))}}function T(g){const P=D(n,"subscriptionInput"),A=P.length?P[0].selector:'input[name="rc_plan"]',k=D(n,"subscriptionPlanDiscount"),x=k.length?k[0].selector:".rc-plans-button__discount";for(const R of Array.from(g.querySelectorAll("label"))){const V=R.querySelector(A),O=R.querySelector(x);if(V&&O){const L=h[V.value];if(L!==void 0){if(L===0)O.style.display!=="none"&&(O.style.display="none");else if(O.style.display==="none"&&(O.style.display=""),O.textContent){const Q=O.textContent.match(/[\d.]+%/)?.[0];Q&&Q!==`${L}%`&&$(O,st=>N(st,L))}}}}}function m(g){const P=g.querySelector("select");if(P)for(const A of Array.from(P.options)){const k=h[A.value];if(k!==void 0&&A.textContent){const x=A.textContent.match(/[\d.]+%/)?.[0];x&&x!==`${k}%`&&(A.textContent=N(A.textContent,k))}}}function y(g,P){const k=D(n,"subscriptionDiscount").filter(x=>x.selector.includes("benefit")||x.selector==="rc-benefits");for(const x of k){const R=g.querySelector(x.selector);if(R?.shadowRoot){for(const V of Array.from(R.shadowRoot.querySelectorAll("li")))if(V.textContent?.includes("Save")){const O=V;if(P===0)O.style.display!=="none"&&(O.style.display="none");else{O.style.display==="none"&&(O.style.display="");const L=V.textContent.match(/[\d.]+%/)?.[0];L&&L!==`${P}%`&&$(V,Q=>N(Q,P))}}}}}let w=!1;function I(){if(!w){w=!0;try{if(b(),d!==null&&Object.keys(h).length===0)return;const g=B(n);if(!g)return;S(g),l&&C(g);const P=Z(n,g);let A=u;if(P){const k=D(n,"subscriptionInput"),x=k.length?k[0].selector:'input[name="rc_plan"]',R=P.querySelector(`${x}:checked`);if(R){const V=h[R.value];V!==void 0&&(A=V)}c==="buttons"||c==="radio"?T(P):m(P)}_(g,A),y(g,A)}finally{w=!1}}}function f(){const g=E();if(!g)return;const P=B(n);if(!P)return;const A=D(n,"onetimeToggle"),k=A.length?A[0].selector:'input[value="onetime"]';if(!P.querySelector(k)?.checked)return;const R=D(n,"subscriptionPrice");for(const V of R){const O=P.querySelector(V.selector)||P.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(g.formattedDiscounted)&&$(O,L=>/\d/.test(L)?g.formattedDiscounted:L)}}function v(){a.subscriptionHideWrongPlans&&a.subscriptionHideWrongPlans(),I(),a.subscriptionUpdateOneTime&&a.subscriptionUpdateOneTime(),f()}ue({data:n,runUpdates:v})}async function je(a){if(a.subscriptionOneTimeDone)return;const e=a.getActiveAssignment(),t=e?a.getHypothesis(e.hypothesisId):void 0,i=!!(t?.subscriptionData&&t.priceData),s=i?null:a.findActiveSubscriptionTestControl(),r=i?t:s?.hypothesis;if(!r?.subscriptionData||!r.priceData)return;const n=i?e.testId:s.testId;a.subscriptionOneTimeDone=!0;const o=r.subscriptionData,l=r.priceData,c=j(l),d=r.isControl,p=d?"control":"variant";a.slptValue=`${n}:${p}
8:f`,a.updatePriceTestHiddenInputs(n,p,!1);function h(){const u=B(o);if(!u)return;const b=X(c);if(!b)return;const E=W(l),S=de(o,b,E);if(!pe(S,d))return;const C=c.get(b);if(!C)return;const _=H(C.priceInCents,l.moneyFormat,l.currency,l.currencyCodeEnabled),T=D(o,"onetimePrice");if(!T.length)return;const m=D(o,"onetimeContainer"),y=m.length?m[0].selector:'[part~="rc-purchase-option__onetime"]',I=u.querySelector(y)??u;for(const f of T){let v=null;try{v=I.querySelector(f.selector)}catch{v=null}v??=I.querySelector(`[part~="${f.selector}"]`),v&&v.textContent&&!v.textContent.includes(_)&&$(v,g=>/\d/.test(g)?_:g)}}a.subscriptionUpdateOneTime=h,h()}async function Je(a,e){const{subscriptionPreviewRender:t}=await Be(async()=>{const{subscriptionPreviewRender:i}=await Promise.resolve().then(()=>it);return{subscriptionPreviewRender:i}},void 0);return t(a.subscriptionData,a.priceData,a.isControl,e)}function Ye(a,e){const t=a.widget.selectors.widgetParent??[],i=a.widget.selectors.subscriptionPlans??[],s=a.widget.selectors.subscriptionInput??[];if(!t.length||!i.length||!s.length){e("[SUB-GLOBAL-HIDE] Missing required selectors â skipping");return}const r=t[0].selector,n=i[0].selector,o=s[0].selector;let l=!1,c=null,d=!1;function p(){if(!d){d=!0;try{h()}finally{d=!1}}}function h(){const C=document.querySelector(r);if(!C?.shadowRoot)return;const _=C.shadowRoot.querySelector(n);if(!_?.shadowRoot)return;_.shadowRoot!==c&&(c=_.shadowRoot,l=!1);let T=0;if(a.widget.widgetType==="buttons"||a.widget.widgetType==="radio"){const m=Array.from(_.shadowRoot.querySelectorAll(o));for(const f of m)if(a.planIds.includes(f.value)){f.disabled||(f.disabled=!0);const v=f.closest("label");v&&v.style.display!=="none"&&(v.style.display="none",T++)}const y=m.filter(f=>!a.planIds.includes(f.value));if(!y.some(f=>f.checked)&&!l&&y.length>0){l=!0;const f=y[0];f.closest("label")?.click(),f.dispatchEvent(new Event("change",{bubbles:!0})),e(`[SUB-GLOBAL-HIDE] Preselected first visible plan input=${f.value}`)}const I=y.find(f=>f.checked)??y[0];if(I){const f=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const v of f)v.value!==I.value&&(v.value=I.value,e(`[SUB-GLOBAL-HIDE] Mirrored plan id ${I.value} to form selling_plan input`))}}else if(a.widget.widgetType==="dropdown"){const m=_.shadowRoot.querySelector("select");if(!m)return;for(const I of Array.from(m.options))a.planIds.includes(I.value)&&(I.style.display!=="none"&&(I.style.display="none"),I.disabled||(I.disabled=!0),T++);const y=Array.from(m.options).filter(I=>!a.planIds.includes(I.value)),w=y.some(I=>I.value===m.value);y.length>0&&!w&&!l&&(l=!0,m.value=y[0].value,m.dispatchEvent(new Event("change",{bubbles:!0})),e(`[SUB-GLOBAL-HIDE] Preselected first visible option=${y[0].value}`))}T>0&&e(`[SUB-GLOBAL-HIDE] Hidden ${T} B-side plan buttons`)}const u={childList:!0,subtree:!0,characterData:!0};let b=null;function E(C){b?.disconnect(),b=new MutationObserver(()=>p()),b.observe(C,u)}function S(){const C=document.querySelector(r);if(!C?.shadowRoot)return!1;p(),new MutationObserver(()=>{p();const m=C.shadowRoot.querySelector(n);m?.shadowRoot&&E(m.shadowRoot)}).observe(C.shadowRoot,u);const T=C.shadowRoot.querySelector(n);return T?.shadowRoot&&E(T.shadowRoot),!0}if(!S()){e("[SUB-GLOBAL-HIDE] Widget not in DOM yet â waiting via MutationObserver");const C=new MutationObserver(()=>{S()&&C.disconnect()});C.observe(document.body??document.documentElement,{childList:!0,subtree:!0})}}const he="Limited preview",Ze="Add-to-cart and checkout prices won't reflect this test until it launches â test selling plans are not created in your subscription app until after a test is launched.",Xe=5e3;function Qe(){const a=document.createElement("div");a.id="shoplift-preview-subscription-warning";const e=document.createElement("span");e.id="shoplift-preview-subscription-warning__icon",e.setAttribute("aria-hidden","true"),e.textContent="!";const t=document.createElement("span");t.id="shoplift-preview-subscription-warning__label",t.textContent=he;const i=document.createElement("div");i.id="shoplift-preview-subscription-warning__tooltip",i.setAttribute("role","tooltip"),i.textContent=Ze,a.appendChild(e),a.appendChild(t),a.appendChild(i),a.setAttribute("tabindex","0"),a.setAttribute("aria-describedby",i.id),a.setAttribute("aria-label",he);let s=null;function r(){s!==null&&(clearTimeout(s),s=null)}function n(){i.classList.add("shoplift-preview-subscription-warning__tooltip--visible")}function o(){i.classList.remove("shoplift-preview-subscription-warning__tooltip--visible")}function l(){n(),r(),s=setTimeout(()=>{o(),s=null},Xe)}function c(){r(),n()}function d(){s===null&&o()}a.addEventListener("mouseenter",c),a.addEventListener("mouseleave",d),a.addEventListener("focus",c),a.addEventListener("blur",d);function p(u){try{const b=u.target;if(!(b instanceof Element))return;(b.closest('form[action*="/cart/add"] button[type="submit"], form[action*="/cart/add"] input[type="submit"]')!==null||b.closest('[name="add"], button[name="add"], [data-add-to-cart], button[data-add-to-cart]')!==null)&&l()}catch{}}
8document.addEventListener("click",p,!0);function h(){r(),document.removeEventListener("click",p,!0),a.removeEventListener("mouseenter",c),a.removeEventListener("mouseleave",d),a.removeEventListener("focus",c),a.removeEventListener("blur",d),a.remove()}return{root:a,tooltip:i,cleanup:h}}let fe=!1;class et{DATA_SL_ATTRIBUTE_P="data-sl-attribute-p";DATA_SL_TEST_ID="data-sl-test-id";VIEWPORT_TRACK_THRESHOLD=.5;temporarySessionKey="Shoplift_Session";essentialSessionKey="Shoplift_Essential";analyticsSessionKey="Shoplift_Analytics";priceSelectorsSessionKey="Shoplift_PriceSelectors_v2";shop;host;eventHost;disableReferrerOverride;legacySessionKey;cssHideClass;testConfigs;inactiveTestConfigs;hiddenSubscriptionPlans;testsFilteredByAudience;sendPageView;shopliftDebug;gaConfig;telemetryEnabled;getCountryTimeout;klaviyoGateTimeout=1e3;geoViaShopify;resolvedRegion=null;klaviyoMembership=null;state;subscriptionPreviewWarningCleanup=null;shopifyAnalyticsId;cookie=document.cookie;isSyncing=!1;isSyncingGA=!1;fetch;localStorageSet;localStorageGet;sessionStorageSet=window.sessionStorage.setItem.bind(window.sessionStorage);sessionStorageGet=window.sessionStorage.getItem.bind(window.sessionStorage);urlParams=new URLSearchParams(window.location.search);device;logHistory;activeViewportObservers=new Map;clientIdRetryCount=0;constructor(e,t,i,s,r,n,o,l,c,d,p,h,u,b=!1){this.shop=e,this.host=t,this.eventHost=i,this.disableReferrerOverride=l,this.logHistory=[],this.legacySessionKey=`SHOPLIFT_SESSION_${this.shop}`,this.cssHideClass=s?"shoplift-hide":"",this.testConfigs=p.map(S=>({...S,startAt:new Date(S.startAt),statusHistory:S.statusHistory.map(C=>({...C,createdAt:new Date(C.createdAt)}))})),this.inactiveTestConfigs=h,this.hiddenSubscriptionPlans=u,this.sendPageView=!!r,this.shopliftDebug=n===!0,this.telemetryEnabled=c===!0,this.geoViaShopify=b===!0,this.gaConfig=o!=={"sendEvents":false,"mode":"gtag"}?o:{sendEvents:!1},this.fetch=window.fetch.bind(window),this.localStorageSet=window.localStorage.setItem.bind(window.localStorage),this.localStorageGet=window.localStorage.getItem.bind(window.localStorage);const E=this.getDeviceType();this.device=E!=="tablet"?E:"mobile",this.state=this.loadState(),this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.testsFilteredByAudience=p.filter(S=>
8S.status=="active"),this.getCountryTimeout=d===1000?1e3:d,window.__slReadCookie=S=>{const C=this.getCookie(S);if(C===null)return null;try{return decodeURIComponent(C)}catch{return C}},this.log("State Loaded",JSON.stringify(this.state))}deriveCategoryFromExistingTests(){if(!this.state.temporary.testCategory&&this.state.essential.visitorTests.length>0){const e=this.state.essential.visitorTests.some(t=>{if(!t.hypothesisId)return!1;const i=this.getHypothesis(t.hypothesisId);return i&&["theme","basicScript","price"].includes(i.type)});this.state.temporary.testCategory=e?"global":"conditional",this.persistTemporaryState(),this.log("Derived test category from existing visitorTests: %s",this.state.temporary.testCategory)}}async init(){try{if(this.log("Shoplift script initializing"),window.Shopify&&window.Shopify.designMode){this.log("Skipping script for design mode");return}if(window.location.href.includes("slScreenshot=true")){this.log("Skipping script for screenshot");return}if(window.location.hostname.endsWith(".edgemesh.com")){this.log("Skipping script for preview");return}if(window.location.href.includes("isShopliftMerchant")){const n=this.urlParams.get("isShopliftMerchant")==="true";this.log("Setting merchant session to %s",n),this.state.temporary.isMerchant=n,this.persistTemporaryState()}if(this.state.temporary.isMerchant){this.log("Setting up preview for merchant"),typeof window.shoplift!="object"&&this.setShopliftStub(),this.state.temporary.previewConfig||this.hidePage(),await this.initPreview(),document.querySelector("#sl-preview-bar-hide")?.remove();return}if(this.state.temporary.previewConfig=void 0,be(navigator.userAgent))return;const e=Date.now(),t=!this.state.temporary.lastSeen||e-this.state.temporary.lastSeen>1800*1e3;(!this.state.temporary.entryPage||t)&&(this.state.temporary.entryPage=J(window.location.href)),this.state.temporary.lastSeen=e,this.persistTemporaryState(),window.__slEntryPage=this.state.temporary.entryPage??"";const i=this.state.essential.visitorTests.filter(n=>n.hypothesisId&&+n.createdAt>Date.now()-6e4);if(i.length===0)this.sendDiagnosticTelemetry("page-landed",null);else for(const n of i)this.sendDiagnosticTelemetry("page-landed",n.testId,{hypothesisId:n.hypothesisId,isControl:n.assignedTo==="control",testType:n.testType??"unknown"});if(navigator.userAgent.includes("Chrome/118")){this.log("Random: %o",[Math.random(),Math.random(),Math.random()]);const n=await this.makeRequest({url:`${this.eventHost}/api/v0/events/ip`,method:"get"}).then(o=>o?.json());this.log(`IP: ${n}`),this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify(this.debugState(),te)}).catch()}if(this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.monitorConsentChange(),this.checkForThemePreview())return;if(!this.disableReferrerOverride&&this.state.temporary.originalReferrer!=null){this.log(`Overriding referrer from '${document.referrer}' to '${this.state.temporary.originalReferrer}'`);const n=this.state.temporary.originalReferrer;delete this.state.temporary.originalReferrer,this.persistTemporaryState(),Object.defineProperty(document,"referrer",{get:()=>n,enumerable:!0,configurable:!0})}if(this.needsKlaviyo(this.testConfigs,this.state.essential.visitorTests,this.state.analytics.visitor??this.buildBaseVisitor())&&this.ensureKlaviyoMembership(),await this.refreshVisitor(this.shopifyAnalyticsId),await this.handleVisitorTest()){this.log("Redirecting for visitor test");return}this.setShoplift(),this.showPage(),this.ensureCartAttributesForExistingPriceTests(!1);const r=this.state.essential.visitorTests.some(n=>(n.hypothesisId?this.getHypothesis(n.hypothesisId):void 0)?.subscriptionData!=null)||Object.values(this.state.temporary.testReservations??{}).some(n=>this.getHypothesis(n.hypothesisId)?.subscriptionData!=null);this.hiddenSubscriptionPlans&&!r&&(this.log(`[SUB-GLOBAL] Visitor not in subscription test â hiding ${this.hiddenSubscriptionPlans.planIds.length} B-side plans`),Ye(this.hiddenSubscriptionPlans,n=>this.log(n))),await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange(),await this.finalize(),console.log("SHOPLIFT SCRIPT INITIALIZED!")}catch(e){if(e instanceof G)return;throw e}finally{typeof window.shoplift!="object"&&this.setShopliftStub()}}getVariantColor(e){switch(e){case"a":return{text:"#141414",bg:"#E2E2E2"};case"b":return{text:"rgba(255, 255, 255, 1)",bg:"rgba(37, 99, 235, 1)"}}}getDefaultVariantTitle(e){return e.title?e.title:e.type==="price"?e.isControl?"Original prices":"Variant prices":e.isControl?"Original":"Untitled variant "+e.label.toUpperCase()}
8async initPreview(){const e=this.urlParams.get("previewConfig");if(e){this.state.temporary.previewConfig=void 0,this.log("Setting up the preview"),this.log("Found preview config, writing to temporary state");const t=await Le(e);if(this.state.temporary.previewConfig=t,this.state.temporary.previewConfig.testTypeCategory===M.Price){this.hidePage(!0);const s=this.state.temporary.previewConfig;let r=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/${s.isDraft||!1}`;s.shopifyProductId&&(r+=`?productId=${s.shopifyProductId}`);const n=await this.makeJsonRequest({method:"get",url:r}).catch(o=>(this.log("Error getting domSelectors",o),null));if(s.variants.forEach(o=>o.domSelectors=n[o.id]?.domSelectors),s.isDraft){const o=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/subscription-preview`,l=await this.makeJsonRequest({method:"get",url:o}).catch(c=>(this.log("No subscription preview data for draft (test may not have a subscription widget)",c),null));l?.subscriptionData&&s.variants.forEach(c=>{c.subscriptionData=l.subscriptionData,c.priceData=l.priceData})}}this.persistTemporaryState();const i=new URL(window.location.toString());i.searchParams.delete("previewConfig"),this.queueRedirect(i)}else if(this.state.temporary.previewConfig){this.showPage();const t=this.state.temporary.previewConfig;if(t.testTypeCategory===M.Template&&this.handleTemplatePreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.UrlRedirect&&this.handleUrlPreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.Script&&this.handleScriptPreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.Price){const i=await this.handlePricePreview(t);t.isDraft?await this.handleSubscriptionPricePreview(t):await this.handleSubscriptionLivePreview(t),i&&this.initPreviewControls(t)}}}initPreviewControls(e){document.addEventListener("DOMContentLoaded",()=>{const t=e.variants.find(b=>b.id===e.currentVariant),i=t?.label||"a",s=e.variants,r=document.createElement("div");r.id="shoplift-preview-control";const n=document.createElement("div"),o=document.createElement("img");o.src=Ve,o.height=24,o.width=14,n.style.padding="0 16px",n.style.lineHeight="100%",n.appendChild(o),r.appendChild(n);const l=document.createElement("div");l.id="shoplift-preview-variant-selector";const c=document.createElement("button");c.id="shoplift-preview-variant-menu-trigger";const d=document.createElement("div");d.className="menu-variant-label",d.style.backgroundColor=this.getVariantColor(i).bg,d.style.color=this.getVariantColor(i).text,d.innerText=i.toUpperCase(),c.appendChild(d);const p=document.createElement("span");if(p.id="shoplift-preview-variant-title",p.innerText=t?this.getDefaultVariantTitle(t):"Untitled variant "+i.toUpperCase(),c.appendChild(p),s.length>1){const b=document.createElement("img");b.src=Oe,b.width=12,b.height=12,b.style.height="12px",b.style.width="12px",c.appendChild(b);const E=document.createElement("div");E.className="preview-variant-menu";for(const S of e.variants.filter(C=>C.id!==e.currentVariant)){const C=document.createElement("div");C.className="preview-variant-menu--item";const _=document.createElement("div");_.className="menu-variant-label",_.style.backgroundColor=this.getVariantColor(S.label).bg,_.style.color=this.getVariantColor(S.label).text,_.style.flexShrink="0",_.innerText=S.label.toUpperCase(),C.appendChild(_);const T=document.createElement("span");T.innerText=this.getDefaultVariantTitle(S),C.appendChild(T),C.addEventListener("click",()=>{this.pickVariant(S.id)}),E.appendChild(C)}l.appendChild(E),c.addEventListener("click",()=>{E.className!=="preview-variant-menu preview-variant-menu__visible"?E.classList.add("preview-variant-menu__visible"):E.classList.remove("preview-variant-menu__visible")}),document.addEventListener("click",S=>{S.target instanceof Element&&!c.contains(S.target)&&E.className==="preview-variant-menu preview-variant-menu__visible"&&E.classList.remove("preview-variant-menu__visible")})}else c.style.pointerEvents="none",d.style.margin="0";if(l.appendChild(c),r.appendChild(l),e.hasSubscription){this.subscriptionPreviewWarningCleanup?.();const b=Qe();r.appendChild(b.root),this.subscriptionPreviewWarningCleanup=b.cleanup}const h=document.createElement("div"),u=document.createElement("button");u.id="shoplift-exit-preview-button",u.innerText="Exit",h.appendChild(u),u.addEventListener("click",()=>{this.exitPreview()}),r.appendChild(h),document.body.appendChild(r),requestAnimationFrame(()=>{r.classList.add("visible")})}),this.ensureCartAttributesForExistingPriceTests(!0)}pickVariant(e){if(this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig,i=new URL(window.location.toString());if(t.testTypeCategory===M.UrlRedirect){const s=t.variants.find(r=>r.id===t.currentVariant)?.redirectUrl;if(i.pathname===s){const r=t.variants.find(n=>n.id===e)?.redirectUrl;r&&(i.pathname=r)}}if(t.testTypeCategory===M.Template){const s=t.variants.find(r=>r.id===t.currentVariant)?.pathName;if(s&&i.pathname===s){const r=t.variants.find(n=>n.id===e)?.pathName;r&&r!==s&&(i.pathname=r)}}t.currentVariant=e,this.persistTemporaryState(),this.queueRedirect(i)}}exitPreview(){const e=new URL(window.location.toString());if(this.state.temporary.previewConfig?.testTypeCategory===M.Template&&e.searchParams.delete("view"),this.state.temporary.previewConfig?.testTypeCategory===M.Script&&e.searchParams.delete("slVariant"),this.state.temporary.previewConfig?.testTypeCategory===M.UrlRedirect){const i=this.state.temporary.previewConfig.variants.filter(r=>!r.isControl&&r.redirectUrl!==null).map(r=>r.redirectUrl),s=this.state.temporary.previewConfig.variants.find(r=>r.label==="a")?.redirectUrl;i.includes(e.pathname)&&s&&(e.pathname=s)}this.state.temporary.isMerchant=!1,e.searchParams.delete("isShopliftMerchant"),this.state.temporary.previewConfig=void 0,this.persistTemporaryState(),this.subscriptionPreviewWarningCleanup?.(),this.subscriptionPreviewWarningCleanup=null,this.hidePage(),this.queueRedirect(e)}handleTemplatePreview(e){const t=e.currentVariant,i=e.variants.find(l=>l.id===t);if(!i)return!1;const s=e.variants.find(l=>l.isControl);if(!s)return!1;this.log("Setting up template preview for type",s.type);
8const r=new URL(window.location.toString()),n=r.searchParams.get("view"),o=i.type===s.type;return!o&&!i.isControl&&template.suffix===s.affix&&this.typeFromTemplate()===s.type&&i.pathName!==null?(this.log("Hit control template type, redirecting to the variant url"),this.hidePage(),r.pathname=i.pathName,this.queueRedirect(r),!0):(!i.isControl&&this.typeFromTemplate()==i.type&&template.suffix===s.affix&&o&&n!==(i.affix||"__DEFAULT__")&&(this.log("Template type and affix match control, updating the view param"),r.searchParams.delete("view"),this.log("Setting the new viewParam to",i.affix||"__DEFAULT__"),this.hidePage(),r.searchParams.set("view",i.affix||"__DEFAULT__"),this.queueRedirect(r)),n!==null&&n!==(i.affix||"__DEFAULT__")&&(r.searchParams.delete("view"),this.hidePage(),this.queueRedirect(r)),!0)}handleUrlPreview(e){const t=e.currentVariant,i=e.variants.find(n=>n.id===t),s=e.variants.find(n=>n.isControl)?.redirectUrl;if(!i)return!1;this.log("Setting up URL redirect preview");const r=new URL(window.location.toString());return r.pathname===s&&!i.isControl&&i.redirectUrl!==null&&(this.log("Url matches control, redirecting"),this.hidePage(),r.pathname=i.redirectUrl,this.queueRedirect(r)),!0}handleScriptPreview(e){const t=e.currentVariant,i=e.variants.find(n=>n.id===t);if(!i)return!1;this.log("Setting up script preview");const s=new URL(window.location.toString());return s.searchParams.get("slVariant")!==i.id&&(this.log("current id doesn't match the variant, redirecting"),s.searchParams.delete("slVariant"),this.log("Setting the new slVariantParam"),this.hidePage(),s.searchParams.set("slVariant",i.id),this.queueRedirect(s)),!0}async handlePricePreview(e){const t=e.currentVariant,i=e.variants.find(s=>s.id===t);return i?(this.log("Setting up price preview"),i.domSelectors&&i.domSelectors.length>0&&(U(document,{testId:e.testId,hypothesisId:i.id,selectors:i.domSelectors}),this.ensureCartAttributesForExistingPriceTests(!0)),!0):!1}async handleSubscriptionPricePreview(e){const t=e.variants.find(i=>i.id===e.currentVariant);t?.subscriptionData&&(this.log("Setting up subscription price preview"),await Je({id:t.id,isControl:t.isControl,subscriptionData:t.subscriptionData,priceData:t.priceData},(i,...s)=>this.log(i,...s)))}async handleSubscriptionLivePreview(e){this.testConfigs.find(s=>s.id===e.testId)?.hypotheses.find(s=>s.id===e.currentVariant)?.subscriptionData&&(this.log("Setting up subscription live preview"),this.subscriptionSwapDone=!1,this.subscriptionOneTimeDone=!1,this.subscriptionPriceDone=!1,await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange())}async finalize(){const e=await this.getCartState();e!==null&&this.queueCartUpdate(e),this.pruneStateAndSave(),await this.syncAllEvents()}setShoplift(){this.log("Setting up public API");const t=this.urlParams.get("slVariant")==="true",i=t?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:async s=>{if(this.log("Script checking variant for hypothesis '%s'",s),t)return this.log("Forcing variant for hypothesis '%s'",s),!0;if(i!==null)return this.log("Forcing hypothesis '%s'",i),s===i;const r=this.testConfigs.find(o=>o.hypotheses.some(l=>l.id===s));if(!r)return this.log("No test found for hypothesis '%s'",s),!1;const n=this.state.essential.visitorTests.find(o=>o.testId===r.id);return n?(this.log("Active visitor test found",s),n.hypothesisId===s):(await this.manuallySplitVisitor(r),this.testConfigs.some(o=>o.hypotheses.some(l=>l.id===s&&this.state.essential.visitorTests.some(c=>c.hypothesisId===l.id))))},setAnalyticsConsent:async s=>{await this.onConsentChange(s,!0)},getVisitorData:()=>({visitor:this.state.analytics.visitor,visitorTests:this.state.essential.visitorTests.filter(s=>!s.isInvalid).map(s=>{const{shouldSendToGa:r,savedAt:n,...o}=s;return o})})}}setShopliftStub(){this.log("Setting up stubbed public API");const t=this.urlParams.get("slVariant")==="true",i=t?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:s=>Promise.resolve(t||s===i),setAnalyticsConsent:()=>Promise.resolve(),getVisitorData:()=>({visitor:null,visitorTests:[]})}}async manuallySplitVisitor(e){this.log("Starting manual split for test '%s'",e.id),await this.handleVisitorTest([e])||this.showPage();const i=this.getReservationForTest(e.id);i&&!i.isRealized&&i.entryCriteriaKey&&(this.log("Realizing manual API reservation for test '%s'",e.id),this.realizeReservationForCriteria(i.entryCriteriaKey)),this.saveState(),this.syncAllEvents()}async handleVisitorTest(e){await this.filterTestsByAudience(this.testConfigs,this.state.analytics.visitor??this.buildBaseVisitor(),this.state.essential.visitorTests),this.pruneStaleVisitorTests(),this.deriveC
8ategoryFromExistingTests(),this.clearStaleReservations();let t=e?e.filter(i=>this.testsFilteredByAudience.some(s=>s.id===i.id)):[...this.testsForUrl(this.testsFilteredByAudience),...this.domTestsForUrl(this.testsFilteredByAudience)];try{if(t.length===0)return this.log("No tests found"),!1;this.log("Checking for existing visitor test on page");const i=this.getCurrentVisitorHypothesis(t);if(i){this.log("Found current visitor test");const l=this.considerRedirect(i);return l&&(this.log("Redirecting for current visitor test"),this.redirect(i)),l}const s=this.getReservationForCurrentPage();if(s){this.log("Found matching reservation for current page: %s",s.testId);const l=this.getHypothesis(s.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(s.entryCriteriaKey);const c=this.considerRedirect(l);return c&&this.redirect(l),c}}this.log("No active test relation for test page");const r=this.testsForUrl(this.inactiveTestConfigs.filter(l=>this.testIsPaused(l)&&l.hypotheses.some(c=>this.state.essential.visitorTests.some(d=>d.hypothesisId===c.id)))).map(l=>l.id);if(r.length>0)return this.log("Visitor has paused tests for test page, skipping test assignment: %o",r),!1;if(!this.state.temporary.testCategory){const l=this.testsFilteredByAudience.filter(d=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d))),c=this.testsFilteredByAudience.filter(d=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d)));if(this.log("Category dice roll - global tests: %o, conditional tests: %o",l.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)})),c.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)}))),l.length>0&&c.length>0){const d=l.length,p=c.length,h=d+p,u=Math.random()*h;this.state.temporary.testCategory=u<d?"global":"conditional",this.log("Category dice roll: rolled %.2f of %d (global weight: %d, conditional weight: %d), selected '%s'",u,h,d,p,this.state.temporary.testCategory)}else l.length>0?(this.state.temporary.testCategory="global",this.log("Only global tests available, setting category to global")):(this.state.temporary.testCategory="conditional",this.log("Only conditional tests available, setting category to conditional"));this.persistTemporaryState()}const n=this.state.temporary.testCategory;if(this.log("Visitor test category: %s",n),n==="global"){const l=this.testsFilteredByAudience.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:global");t=t.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}else{const l=this.testsFilteredByAudience.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:conditional");t=t.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}if(t.length===0)return this.log("No tests remaining after category filter"),!1;this.createReservations(t);const o=this.getReservationForCurrentPage();if(o&&!o.isRealized){const l=this.getHypothesis(o.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(o.entryCriteriaKey);const c=this.considerRedirect(l);return c&&(this.log("Redirecting for new test"),this.redirect(l)),c}}return!1}finally{this.includeInDomTests(),this.saveState()}}includeInDomTests(){this.applyControlForAudienceFilteredPriceTests();const e=this.getDomTestsForCurrentUrl(),t=this.getVisitorDomHypothesis(e);for(const i of e){this.log("Evaluating dom test '%s'",i.id);const s=i.hypotheses.some(u=>u.type==="price");if(this.state.essential.visitorTests.find(u=>u.testId===i.id&&u.isInvalid&&!u.hypothesisId)){if(this.log("Visitor is blocked from test '%s', applying control prices if price test",i.id),s){const u=i.hypotheses.find(b=>b.isControl);u?.priceData&&(this.applyPriceTestWithMapLookup(i.id,u,[u],()=>{this.log("Control prices applied for blocked visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1))}continue}const n=this.getReservationForTest(i.id);let o=null,l=!1;const c=t.find(u=>i.hypotheses.some(b=>u.id===b.id));if(n)o=this.getHypothesis(n.hypothesisId)??null,this.log("Using reserved hypothesis '%s' for test '%s'",n.hypothesisId,i.id);else if(c)o=c,this.log("Using existing hypothesis assignment for test '%s'",i.id);else if(s){const u=this.visitorActiveTestTypeWithReservations();u?(l=!0,this.log("Visitor already in test type '%s', treating as non-test for price test '%s'",u,i.id)):o=this.pickHypothesis(i)}else o=this.pickHypothesis(i);if(l&&s){const u=i.hypotheses.find(b=>b.isControl);u?.priceData&&(this.log("Applying control prices for non-test visitor on price test '%s' (Map-based)",i.id),this.applyPriceTestWithMapLookup(i.id,u,[u],()=>{this.log("Control prices applied for non-test visitor, no metrics tracked")}
8),this.updatePriceTestHiddenInputs(i.id,"control",!1));continue}if(!o){this.log("Failed to pick hypothesis for test");continue}this.sendDiagnosticTelemetry("assignment",i.id,{hypothesisId:o.id,isControl:o.isControl,testType:o.type});const d=i.bayesianRevision??4,p=o.type==="price",h=d>=5;if(p&&h){if(this.log(`Price test with Map-based lookup (v${d}): ${i.id}`),!o.priceData){this.log("No price data for hypothesis '%s', skipping",o.id);continue}const u=o.isControl?"control":"variant";this.log(`Setting up Map-based price test for ${u} (test: ${i.id})`),this.applyPriceTestWithMapLookup(i.id,o,i.hypotheses,b=>{const E=this.getReservationForTest(b);E&&!E.isRealized&&E.entryCriteriaKey?this.realizeReservationForCriteria(E.entryCriteriaKey):this.queueAddVisitorToTest(b,o),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(p&&!h){this.log(`Price test without viewport tracking (v${d}): ${i.id}`);const u=this.getDomSelectorsForHypothesis(o);if(u.length===0)continue;U(document,{testId:i.id,hypothesisId:o.id,selectors:u},b=>{this.queueAddVisitorToTest(b,o),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(!o.domSelectors||o.domSelectors.length===0){this.log("No selectors found, skipping hypothesis");continue}U(document,{testId:i.id,hypothesisId:o.id,selectors:o.domSelectors},u=>{this.queueAddVisitorToTest(u,o),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()})}}considerRedirect(e){if(this.log("Considering redirect for hypothesis '%s'",e.id),e.isControl)return this.log("Skipping redirect for control"),!1;if(e.type==="basicScript"||e.type==="manualScript")return this.log("Skipping redirect for script test"),!1;const t=this.state.essential.visitorTests.find(n=>n.hypothesisId===e.id),i=new URL(window.location.toString()),r=new URLSearchParams(window.location.search).get("view");if(e.type==="theme"){if(!(e.themeId===themeId)){if(this.log("Theme id '%s' is not hypothesis theme ID '%s'",e.themeId,themeId),this.isAppProxyPath())return this.log("On App Proxy path, skipping theme redirect to avoid infinite loop"),!1;if(t&&t.themeId!==e.themeId&&(t.themeId===themeId||!this.isThemePreview()))this.log("On old theme, redirecting and updating local visitor"),t.themeId=e.themeId;else if(this.isThemePreview())return this.log("On non-test theme, skipping redirect"),!1;return this.log("Hiding page to redirect for theme test"),this.hidePage(),!0}return!1}else if(e.type!=="dom"&&e.type!=="price"&&e.affix!==template.suffix&&e.affix!==r||e.redirectPath&&!i.pathname.endsWith(e.redirectPath))return this.log("Hiding page to redirect for template test"),this.hidePage(),!0;return this.log("Not redirecting"),!1}redirect(e){if(this.log("Redirecting to hypothesis '%s'",e.id),e.isControl)return;const t=new URL(window.location.toString());if(t.searchParams.delete("view"),e.redirectPath){const o=RegExp("^(/w{2}-w{2})/").exec(t.pathname);if(o&&o.length>1){const l=o[1];t.pathname=`${l}${e.redirectPath}`}else t.pathname=e.redirectPath}else e.type==="theme"?(t.searchParams.set("_ab","0"),t.searchParams.set("_fd","0"),t.searchParams.set("_sc","1"),t.searchParams.set("preview_theme_id",e.themeId.toString())):e.type!=="urlRedirect"&&t.searchParams.set("view",e.affix);const i=this.state.essential.visitorTests.find(o=>o.hypothesisId===e.id)?.testId,s=t.pathname+t.search,r=window.location.pathname+window.location.search,n=J(t.hash);if(i&&s!==r&&!n){const o=He(),l=Ne({v:2,t:i,n:o,fh:qe(window.location.pathname+window.location.search)});t.hash=`slr-${o}`;const c=new Date(Date.now()+3e4).toUTCString();document.cookie=`shoplift_redirect=${l};domain=.${window.location.hostname};path=/;SameSite=Strict;expires=${c}`}s===r&&this.showPage(),this.queueRedirect(t)}async refreshVisitor(e){if(e===null||!this.state.essential.isFirstLoad||!this.testConfigs.some(i=>i.visitorOption!=="all"))return;this.log("Refreshing visitor"),this.hidePage();const t=await this.getVisitor(e);t&&t.id&&this.updateLocalVisitor(t)}buildBaseVisitor(){return{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.device,country:null,...this.state.essential.initialState}}getInitialState(){const e=this.getUTMValue("utm_source")??"",t=this.getUTMValue("utm_medium")??"",i=this.getUTMValue("utm_campaign")??"",s=this.getUTMValue("utm_content")??"",r=window.document.referrer,n=this.device;return{createdAt:new Date,utmSource:e,utmMedium:t,utmCampaign:i,utmContent:s,referrer:r,device:n}}checkForThemePreview(){return this.log("Checking for theme preview"),window.location.hostname.endsWith(".shopifypreview.com")?(this.log("on shopify preview domain"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!1):this.isThemePreview()?this.state.essential.visitorTests.some(e=>e.isThemeTest&&e.hypothesisId!=null&&this.getHypothesis(e.hypothesisId)&&e.themeId===themeId)?(this.log("On active theme test, remov
8ing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):this.state.essential.visitorTests.some(e=>e.isThemeTest&&e.hypothesisId!=null&&!this.getHypothesis(e.hypothesisId)&&e.themeId===themeId)?(this.log("Visitor is on an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.state.essential.isFirstLoad?(this.log("No visitor found on theme preview, redirecting to main theme"),this.redirectToMainTheme(),!0):this.inactiveTestConfigs.some(e=>e.hypotheses.some(t=>t.themeId===themeId))?(this.log("Current theme is an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.testConfigs.some(e=>e.hypotheses.some(t=>t.themeId===themeId))?(this.log("Falling back to clearing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):(this.log("No tests on current theme, skipping script"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!0):(this.log("Not on theme preview"),this.clearThemeBar(!0,!1,this.state),!1)}redirectToMainTheme(){this.hidePage();const e=new URL(window.location.toString());e.searchParams.set("preview_theme_id",""),this.queueRedirect(e)}testsForUrl(e){const t=new URL(window.location.href),i=this.typeFromTemplate();return e.filter(s=>s.hypotheses.some(r=>r.type!=="dom"&&r.type!=="price"&&(r.isControl&&r.type===i&&r.affix===template.suffix||r.type==="theme"||r.isControl&&r.type==="urlRedirect"&&r.redirectPath&&t.pathname.endsWith(r.redirectPath)||r.type==="basicScript"))&&(s.ignoreTestViewParameterEnforcement||!t.searchParams.has("view")||s.hypotheses.map(r=>r.affix).includes(t.searchParams.get("view")??"")))}domTestsForUrl(e){const t=new URL(window.location.href);return e.filter(i=>i.hypotheses.some(s=>s.type!=="dom"&&s.type!=="price"?!1:s.type==="price"&&s.priceData&&s.priceData.variants.length>0?!0:s.domSelectors&&s.domSelectors.some(r=>new RegExp(re(r)).test(J(t.toString())))))}needsKlaviyo(e,t,i){return e.some(s=>s.requiresKlaviyo&&!t.some(r=>r.testId===s.id)&&this.matchesTestSettings(s,i,this.visitorCreatedDuringTestActive(s.statusHistory)
8))}getKlaviyoIdentity(){const e=ie(Fe(this.getCookie("__kla_id",document.cookie)));return{kx:ie(this.urlParams.get("_kx"))??(e?null:ie(new URL(this.state.temporary.entryPage??"",window.location.href).searchParams.get("_kx"))),exchangeId:e}}ensureKlaviyoMembership(){return this.klaviyoMembership??=this.resolveKlaviyoMembership().catch(e=>(this.log("Error resolving Klaviyo membership",e),{groups:[],known:!1})),this.klaviyoMembership}async resolveKlaviyoMembership(){const{kx:e,exchangeId:t}=this.getKlaviyoIdentity();if(!(e??t))return{groups:[],known:!1};this.log("Hiding page to resolve Klaviyo membership"),this.hidePage();const s=new URLSearchParams;e&&s.append("kx",e),t&&s.append("exchangeId",t);let r={groups:[],known:!1};try{const n=await this.makeJsonRequest({method:"get",url:`${this.host}/api/v1/storefront/klaviyo-groups/${encodeURIComponent(this.shop)}?${s}`,signal:AbortSignal.timeout(this.klaviyoGateTimeout)});r={groups:n?.groups??[],known:n?.known===!0}}catch(n){if(n instanceof G)return n;this.log("Error getting Klaviyo groups",n)}return r}async filterTestsByAudience(e,t,i){const s=[],r=e.some(l=>(l.requiresRegion||this.geoViaShopify&&l.requiresCountry)&&!i.some(c=>c.testId===l.id));this.resolvedRegion===null&&r&&(this.log("Hiding page to wait for Shopify region resolution"),this.hidePage(),await this.waitForResolvedRegion()),window.__slRegion=this.resolvedRegion??"";let n=t.country;this.geoViaShopify?n=this.resolvedRegion?this.resolvedRegion.slice(0,2):n:!n&&e.some(l=>l.requiresCountry&&!i.some(c=>c.testId===l.id))&&(this.log("Hiding page to check geoip"),this.hidePage(),n=await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/get-country`,signal:AbortSignal.timeout(this.getCountryTimeout)}).catch(l=>(this.log("Error getting country",l),null)));let o={groups:[],known:!1};if(this.needsKlaviyo(e,i,t)){const l=await this.ensureKlaviyoMembership();if(l instanceof G)throw l;o=l}window.__slKlaviyoGroups=o.groups,window.__slKlaviyoKnown=o.known;for(const l of e){if(this.log("Checking audience for test '%s'",l.id),this.state.essential.visitorTests.some(p=>p.testId===l.id&&p.hypothesisId==null)){console.log(`Skipping blocked test '${l.id}'`);continue}const c=this.visitorCreatedDuringTestActive(l.statusHistory);(i.some(p=>p.testId===l.id&&(l.device==="all"||l.device===t.device&&l.device===this.device))||this.isTargetAudience(l,t,c,n))&&(this.log("Visitor is in audience for test '%s'",l.id),s.push(l))}this.testsFilteredByAudience=s}async waitForResolvedRegion(e=1500,t=50){const i=Date.now();for(;this.resolvedRegion===null&&Date.now()-i<e;)await new Promise(s=>window.setTimeout(s,t))}isTargetAudience(e,t,i,s){const r=this.getChannel(t);return this.matchesTestSettings(e,t,i)&&(e.targetAudiences.length===0||e.targetAudiences.reduce((n,o)=>n||o.reduce((l,c)=>l&&c(t,i,r,s),!0),!1))}matchesTestSettings(e,t,i){return(e.device==="all"||e.device===t.device&&e.device===this.device)&&(e.visitorOption==="all"||e.visitorOption==="new"&&i||e.visitorOption==="returning"&&!i)}visitorCreatedDuringTestActive(e){let t="";for(const i of e){if(this.state.analytics.visitor!==null&&this.state.analytics.visitor.createdAt<i.createdAt||this.state.essential.initialState.createdAt<i.createdAt)break;t=i.status}return t==="active"}getDomTestsForCurrentUrl(){return this.domTestsForUrl(this.testsFilteredByAudience)}getCurrentVisitorHypothesis(e){return e.flatMap(t=>t.hypotheses).find(t=>t.type!=="dom"&&t.type!=="price"&&this.state.essential.visitorTests.some(i=>i.hypothesisId===t.id))}getVisitorDomHypothesis(e){return e.flatMap(t=>t.hypotheses).filter(t=>(t.type==="dom"||t.type==="price")&&this.state.essential.visitorTests.some(i=>i.hypothesisId===t.id))}getHypothesis(e){return this.testConfigs.filter(t=>t.hypotheses.some(i=>i.id===e)).map(t=>t.hypotheses.find(i=>i.id===e))[0]}getActiveAssignment(){if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig;return t.currentVariant&&t.testId?{testId:t.testId,hypothesisId:t.currentVariant}:null}const e=this.state.essential.visitorTests.find(t=>t.hypothesisId);return e?.hypothesisId?{testId:e.testId,hypothesisId:e.hypothesisId}:null}findActiveSubscriptionTestControl(){for(const e of this.testConfigs){const t=e.hypotheses.find(i=>i.isControl);if(t?.subscriptionData)return{testId:e.id,hypothesis:t}}return null}getDomSelectorsForHypothesis(e){if(!e)return[];if(e.domSelectors&&e.domSelectors.length>0)return e.domSelectors;if(e.priceData){const t=`${this.priceSelectorsSessionKey}_${e.id}`;try{const s=sessionStorage.getItem(t);if(s){const r=JSON.parse(s);return e.domSelectors=r,this.log("Loaded %d price selectors from cache for hypothesis '%s'",r.length,e.id),r}}catch{}const i=Me(e.priceData);e.domSelectors=i;try{sessionStorage.setItem(t,JSON.stringify(i)),this.log("Generated and cached %d price selectors for hypothesis '%s'",i.length,e.id)}catch{this.log("Generated %d price selectors for hypothesis '%s' (cache unavailable)",i.length,e.id)}return i}return[]}hasThemeTest(e){return e.some(t=>t.hypotheses.some(i=>i.type==="theme"))}hasTestThatIsNotThemeTest(e){return e.some(t=>t.hypotheses.some(i=>i.type!=="theme"&&i.type!=="dom"&&i.type!=="price"))}hasThemeAndOtherTestTypes(e){return this.hasThemeTest(e)&&this.hasTestThatIsNotThemeTest(e)}testIsPaused(e){return e.status==="paused"||e.status==="incompatible"||e.status==="suspended"}visitorActiveTestType(){const e=this.state.essential.visitorTests.filter(t=>this.testConfigs.some(i=>i.hypotheses.some(s=>s.id==t.hypothesisId)));return e.length===0?null:e.some(t=>t.isThemeTest)?"theme":"templateOrUrlRedirect"}getReservationType(e){return e==="price"||this.isTemplateTestType(e)?"deferred":"immediate"}isTemplateTestType(e){return["product","collection","landing","index","cart","search","blog","article","collectionList"].includes(e)}getEntryCriteriaKey(e){const t=e.hypotheses.find(i=>i.isControl);if(!t)return`unknown:${e.id}`;switch(t.type){case"theme":return"global:theme";case"basicScript":return"global:autoApi";case"price":return"global:price";case"manualScript":return`conditional:manualApi:${e.id}`;case"urlRedirect":return`conditional:url:${t.redirectPath||"unknown"}`;default:return`conditional:template:${t.type}`}}isGlobalEntryCriteria(e){return e.startsWith("global:")}groupTestsByEntryCriteria(e){const t=new Map;for(const i of e){const s=this.getEntryCriteriaKey(i),r=t.get(s)||[];r.push(i),t.set(s,r)}return t}doesCurrentPageMatchEntryCriteria(e){if(this.isGlobalEntryCriteria(e))return!0;
8if(e==="conditional:manualApi")return!1;if(e.startsWith("conditional:url:")){const t=e.replace("conditional:url:","");return window.location.pathname.endsWith(t)}if(e.startsWith("conditional:template:")){const t=e.replace("conditional:template:","");return this.typeFromTemplate()===t}return!1}hasActiveReservation(){const e=this.getActiveReservations();return Object.values(e).some(t=>!t.isRealized)}getActiveReservation(){const e=this.getActiveReservations();return Object.values(e).find(t=>!t.isRealized)??null}clearStaleReservations(){const e=this.state.temporary.testReservations;if(!e)return;let t=!1;for(const[i,s]of Object.entries(e)){const r=this.testConfigs.find(o=>o.id===s.testId);if(!r){this.log("Test '%s' no longer in config, clearing reservation for criteria '%s'",s.testId,i),delete e[i],t=!0;continue}if(r.status!=="active"){this.log("Test '%s' status is '%s', clearing reservation for criteria '%s'",s.testId,r.status,i),delete e[i],t=!0;continue}this.testsFilteredByAudience.some(o=>o.id===s.testId)||(this.log("Visitor no longer passes audience for test '%s', clearing reservation for criteria '%s'",s.testId,i),delete e[i],t=!0)}t&&this.persistTemporaryState()}createReservations(e){if(this.state.temporary.testReservations||(this.state.temporary.testReservations={}),this.state.temporary.rolledEntryCriteria||(this.state.temporary.rolledEntryCriteria=[]),this.state.temporary.testCategory==="global"){this.createSingleReservation(e,"global");return}const i=e.filter(o=>this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(o))),s=e.filter(o=>!this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(o)));this.log("Conditional tests split - matching current page: %d, not matching: %d",i.length,s.length),i.length>0&&this.log("Tests matching current page (same pool): %o",i.map(o=>({id:o.id,title:o.title,criteria:this.getEntryCriteriaKey(o)})));const r=`conditional:current-page:${this.typeFromTemplate()}`;if(i.length>0&&!this.state.temporary.rolledEntryCriteria.includes(r)){this.createSingleReservation(i,r);for(const o of i){const l=this.getEntryCriteriaKey(o);this.state.temporary.rolledEntryCriteria.includes(l)||this.state.temporary.rolledEntryCriteria.push(l)}}const n=this.groupTestsByEntryCriteria(s);for(const[o,l]of n){if(this.state.temporary.rolledEntryCriteria.includes(o)){this.log("Already rolled for criteria '%s', skipping",o);continue}if(l.some(S=>this.state.essential.visitorTests.some(C=>C.testId===S.id))){this.log("Visitor already has VT for criteria '%s', skipping",o),this.state.temporary.rolledEntryCriteria.push(o);continue}const d=[...l].sort((S,C)=>S.id.localeCompare(C.id));this.log("Test dice roll for criteria '%s' - available tests: %o",o,d.map(S=>({id:S.id,title:S.title})));const p=Math.floor(Math.random()*d.length),h=d[p];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",p+1,l.length,h.id,h.title);const u=this.pickHypothesis(h);if(!u){this.log("No hypothesis picked for test '%s'",h.id);continue}this.sendDiagnosticTelemetry("assignment",h.id,{hypothesisId:u.id,isControl:u.isControl,testType:u.type});const b=this.getReservationType(u.type),E={testId:h.id,hypothesisId:u.id,testType:u.type,reservationType:b,isThemeTest:u.type==="theme",themeId:u.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:o};this.state.temporary.testReservations[o]=E,this.state.temporary.rolledEntryCriteria.push(o),this.log("Created %s reservation for test '%s' (criteria: %s)",b,h.id,o);for(const S of l)S.id!==h.id&&this.markTestAsBlocked(S,o)}this.persistTemporaryState()}createSingleReservation(e,t){if(this.state.temporary.rolledEntryCriteria.includes(t)){this.log("Already rolled for pool '%s', skipping",t);return}if(e.some(p=>this.state.essential.visitorTests.some(h=>h.testId===p.id&&!h.isInvalid))){this.log("Visitor already has VT for pool '%s', skipping",t),this.state.temporary.rolledEntryCriteria.push(t);return}if(e.length===0){this.log("No tests in pool '%s'",t);return}const s=[...e].sort((p,h)=>p.id.localeCompare(h.id));this.log("Test dice roll for pool '%s' - available tests: %o",t,s.map(p=>({id:p.id,title:p.title,criteria:this.getEntryCriteriaKey(p)})));const r=Math.floor(Math.random()*s.length),n=s[r];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",r,e.length,n.id,n.title);const o=this.pickHypothesis(n);if(!o){this.log("No hypothesis picked for test '%s'",n.id);return}this.sendDiagnosticTelemetry("assignment",n.id,{hypothesisId:o.id,isControl:o.isControl,testType:o.type});const l=this.getReservationType(o.type),c=this.getEntryCriteriaKey(n),d={testId:n.id,hypothesisId:o.id,testType:o.type,reservationType:l,isThemeTest:o.type==="theme",themeId:o.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:c};this.state.temporary.testReservations[c]=d,this.state.temporary.rolledEntryCriteria.push(t),this.log("Created %s reservation for test '%s' from pool '%s' (criteria: %s)",l,n.id,t,c);for(const p of e)p.id!==n.id&&this.markTestAsBlocked(p,`pool:${t}`);this.persistTemporaryState()}markTestAsBlocked(e,t){this.state.essential.visitorTests.some(i=>i.testId===e.id)||(this.log("Blocking visitor from test '%s' (reason: %s)",e.id,t),this.state.essential.visitorTests.push({createdAt:new Date,testId:e.id,hypothesisId:null,isThemeTest:e.hypotheses.some(i=>
8i.type==="theme"),shouldSendToGa:!1,isSaved:!0,isInvalid:!0,themeId:void 0}))}realizeReservationForCriteria(e){const t=this.state.temporary.testReservations?.[e];if(!t)return this.log("No reservation found for criteria '%s'",e),!1;if(t.isRealized)return this.log("Reservation already realized for criteria '%s'",e),!1;if(this.state.essential.visitorTests.some(s=>s.testId===t.testId&&!s.isInvalid))return this.log("Visitor already assigned to test '%s'",t.testId),!1;const i=this.getHypothesis(t.hypothesisId);return i?(t.isRealized=!0,this.persistTemporaryState(),this.queueAddVisitorToTest(t.testId,i),this.saveState(),this.log("Realized reservation for test '%s' (criteria: %s)",t.testId,e),!0):(this.log("Hypothesis '%s' not found",t.hypothesisId),!1)}getActiveReservations(){return this.state.temporary.testReservations??{}}getReservationForCurrentPage(){const e=this.getActiveReservations();for(const[t,i]of Object.entries(e)){if(i.isRealized)continue;const s=this.testConfigs.find(r=>r.id===i.testId);if(!(!s||s.status!=="active")&&this.doesCurrentPageMatchEntryCriteria(t))return i}return null}getReservationForTest(e){const t=this.getActiveReservations();return Object.values(t).find(i=>i.testId===e)??null}getReservationTestType(){const e=this.getActiveReservations(),t=Object.values(e);if(t.length===0)return null;for(const i of t)if(i.isThemeTest)return"theme";for(const i of t)if(i.testType==="price")return"price";return t.some(i=>!i.isRealized)?"templateOrUrlRedirect":null}hasPriceTests(e){return e.some(t=>t.hypotheses.some(i=>i.type==="price"))}_priceTestProductIds=null;getPriceTestProductIds(){if(this._priceTestProductIds)return this._priceTestProductIds;const e=new Set;for(const t of this.testConfigs)for(const i of t.hypotheses)if(i.type==="price"){for(const s of i.domSelectors||[]){const r=s.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);r?.[1]&&e.add(r[1])}if(i.priceData?.variants)for(const[s]of i.priceData.variants)e.add(s)}return this._priceTestProductIds=e,this.log("Built price test product ID cache with %d products",e.size),e}isProductInAnyPriceTest(e){return this.getPriceTestProductIds().has(e)}visitorActiveTestTypeWithReservations(){const e=this.getActiveReservations();for(const r of Object.values(e)){if(r.isThemeTest)return"theme";if(r.testType==="price")return"price"}if(Object.values(e).some(r=>!r.isRealized)){if(this.state.temporary.testCategory==="global")for(const n of Object.values(e)){if(n.testType==="theme")return"theme";if(n.testType==="price")return"price";if(n.testType==="basicScript")return"theme"}return"templateOrUrlRedirect"}const i=this.state.essential.visitorTests.filter(r=>!r.isInvalid&&this.testConfigs.some(n=>n.hypotheses.some(o=>o.id===r.hypothesisId)));return i.length===0?null:i.some(r=>this.getHypothesis(r.hypothesisId)?.type==="price")?"price":i.some(r=>r.isThemeTest)?"theme":"templateOrUrlRedirect"}applyControlForAudienceFilteredPriceTests(){const e=this.testConfigs.filter(s=>s.status==="active"&&s.hypotheses.some(r=>r.type==="price"));if(e.length===0)return;const t=this.testsFilteredByAudience.filter(s=>s.hypotheses.some(r=>r.type==="price")),i=e.filter(s=>!t.some(r=>r.id===s.id));if(i.length!==0){this.log("Found %d price tests filtered by audience, applying control selectors",i.length);for(const s of i){const r=s.hypotheses.find(c=>c.isControl),n=this.getDomSelectorsForHypothesis(r);if(n.length===0){this.log("No control selectors for audience-filtered price test '%s'",s.id);continue}const o=new URL(window.location.href);n.some(c=>{try{return new RegExp(re(c)).test(J(o.toString()))}catch{return!1}})&&(this.log("Applying control selectors for audience-filtered price test '%s'",s.id),U(document,{testId:s.id,hypothesisId:r.id,selectors:n},()=>{}),this.updatePriceTestHiddenInputs(s.id,"control",!1))}}}pickHypothesis(e){let t=Math.random();const i=e.hypotheses.reduce((r,n)=>r+n.visitorCount,0);return e.hypotheses.sort((r,n)=>r.isControl?n.isControl?0:-1:n.isControl?1:0).reduce((r,n)=>{if(r!==null)return r;const l=e.hypotheses.reduce((c,d)=>c&&d.visitorCount>20,!0)?n.visitorCount/i-n.trafficPercentage:0;return t<=n.trafficPercentage-l?n:(t-=n.trafficPercentage-l,null)},null)}typeFromTemplate(){switch(template.type){case"list-collections":return"collectionList";case"page":return"landing";case"article":case"blog":case"cart":case"collection":case"index":case"product":case"search":return template.type;default:return null}}queueRedirect(e){this.saveState(),this.disableReferrerOverride||(this.log(`Saving temporary referrer override '${document.referrer}'`),this.state.temporary.originalReferrer=document.referrer,this.persistTemporaryState()),window.setTimeout(()=>window.location.assign(e),0),window.setTimeout(()=>{this.syncAllEvents()},2e3)}scheduleRetrySync(){this.clientIdRetryCount>=5||(this.clientIdRetryCount++,window.setTimeout(()=>{this.syncAllEvents()},500))}async syncAllEvents(){const e=async()=>
8{if(this.isSyncing){window.setTimeout(()=>{(async()=>await e())()},500);return}try{if(this.isSyncing=!0,this.syncGAEvents(),this.shopifyAnalyticsId||(this.shopifyAnalyticsId=this.getShopifyAnalyticsId()),!this.shopifyAnalyticsId){this.scheduleRetrySync();return}await this.syncEvents()}finally{this.isSyncing=!1}};await e()}async syncEvents(){if(!this.state.essential.consentApproved||!this.shopifyAnalyticsId||this.state.analytics.queue.length===0)return;const e=this.state.analytics.queue.length,t=this.state.analytics.queue.splice(0,e);this.log("Syncing %s events",e);try{const i={shop:this.shop,visitorDetails:{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.state.analytics.visitor?.device??this.device,country:this.state.analytics.visitor?.country??null,...this.state.essential.initialState},events:this.state.essential.visitorTests.filter(r=>!r.isInvalid&&!r.isSaved&&r.hypothesisId!=null).map(r=>new Se(r.testId,r.hypothesisId,r.createdAt)).concat(t)};await this.sendEvents(i);for(const r of this.state.essential.visitorTests.filter(n=>!n.isInvalid&&!n.isSaved&&n.hypothesisId!=null))this.sendDiagnosticTelemetry("event-delivered",r.testId,{hypothesisId:r.hypothesisId,isControl:r.assignedTo==="control",testType:r.testType??"unknown"});const s=await this.getVisitor(this.shopifyAnalyticsId);s!==null&&this.updateLocalVisitor(s);for(const r of this.state.essential.visitorTests.filter(n=>!n.isInvalid&&!n.isSaved))r.isSaved=!0,r.savedAt=Date.now()}catch{this.state.analytics.queue.splice(0,0,...t)}finally{this.saveState()}}syncGAEvents(){if(!this.gaConfig.sendEvents){if(fe)return;fe=!0,this.log("UseGtag is false â skipping GA Events");return}if(this.isSyncingGA){this.log("Already syncing GA - skipping GA events");return}const e=this.state.essential.visitorTests.filter(t=>t.shouldSendToGa);e.length!==0&&(this.isSyncingGA=!0,this.log("Syncing %s GA Events",e.length),Promise.allSettled(e.map(t=>this.sendGAEvent(t))).then(()=>this.log("All gtag events sent")).finally(()=>this.isSyncingGA=!1))}sendGAEvent(e){return new Promise(t=>{this.log("Sending GA Event for test %s, hypothesis %s",e.testId,e.hypothesisId);const i=()=>{this.log("GA acknowledged event for hypothesis %s",e.hypothesisId),e.shouldSendToGa=!1,this.persistEssentialState(),t()},s={exp_variant_string:`SL-${e.testId}-${e.hypothesisId}`};
8this.shopliftDebug&&Object.assign(s,{debug_mode:!0});function r(n,o,l){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}this.gaConfig.mode==="gtag"?r("event","experience_impression",{...s,event_callback:i}):(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"experience_impression",...s,eventCallback:i}))})}updateLocalVisitor(e){let t;({visitorTests:t,...this.state.analytics.visitor}=e),this.log("updateLocalVisitor - server returned %d tests: %o",t.length,t.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isInvalid:s.isInvalid}))),this.log("updateLocalVisitor - local has %d tests: %o",this.state.essential.visitorTests.length,this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid})));const i=300*1e3;for(const s of this.state.essential.visitorTests.filter(r=>r.isSaved&&(!r.savedAt||Date.now()-r.savedAt>i)&&!t.some(n=>n.testId===r.testId)))this.log("updateLocalVisitor - marking LOCAL test as INVALID (isSaved && not in server): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),s.isInvalid=!0;for(const s of t){const r=this.state.essential.visitorTests.findIndex(o=>o.testId===s.testId);if(!(r!==-1))this.log("updateLocalVisitor - ADDING server test (not found locally): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),this.state.essential.visitorTests.push(s);else{const o=this.state.essential.visitorTests.at(r);this.log("updateLocalVisitor - REPLACING local test with server test: testId=%s, local hypothesisId=%s -> server hypothesisId=%s, local isInvalid=%s -> false",s.testId,o?.hypothesisId,s.hypothesisId,o?.isInvalid),s.isInvalid=!1,s.shouldSendToGa=o?.shouldSendToGa??!1,s.testType=o?.testType,s.assignedTo=o?.assignedTo,s.testTitle=o?.testTitle,this.state.essential.visitorTests.splice(r,1,s)}}this.log("updateLocalVisitor - FINAL local tests: %o",this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid}))),this.state.analytics.visitor.storedAt=new Date}async getVisitor(e){try{return await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/by-key/${this.shop}/${e}`})}catch{return null}}async sendEvents(e){await this.makeRequest({method:"post",url:`${this.eventHost}/api/v0/events`,data:JSON.stringify(e)})}sendDiagnosticTelemetry(e,t,i){if(!this.telemetryEnabled||!navigator.sendBeacon)return;const s=this.state.essential.consentApproved,r=JSON.stringify({shop:this.shop,testId:t,checkpoint:e,device:this.device,...s?{visitorId:this.shopifyAnalyticsId??"unknown"}:{},clientTimestamp:Date.now(),consentApproved:s,hasConsentInteraction:this.state.essential.hasConsentInteraction,...i});navigator.sendBeacon(`${this.eventHost}/api/v0/telemetry`,new Blob([r],{type:"text/plain"}))}getUTMValue(e){return new URLSearchParams(window.location.search).get(e)||null}hidePage(e){this.log("Hiding page"),this.cssHideClass&&!window.document.documentElement.classList.contains(this.cssHideClass)&&(window.document.documentElement.classList.add(this.cssHideClass),e||setTimeout(this.removeAsyncHide(this.cssHideClass),2e3))}showPage(){this.cssHideClass&&this.removeAsyncHide(this.cssHideClass)()}getDeviceType(){function e(){let i=!1;return(function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
8sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}function t(){let i=!1;return(function(s){(/android|ipad|playbook|silk/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}return e()?"mobile":t()?"tablet":"desktop"}removeAsyncHide(e){return()=>{e&&window.document.documentElement.classList.remove(e)}}async getCartState(){try{let e=await this.makeJsonRequest({method:"get",url:`${window.location.origin}/cart.js`});return e===null||(e.note===null&&(e=await this.makeJsonRequest({method:"post",url:`${window.location.origin}/cart/update.js`,data:JSON.stringify({note:""})})),e==null)?null:{token:e.token,total_price:e.total_price,total_discount:e.total_discount,currency:e.currency,items_subtotal_price:e.items_subtotal_price,items:e.items.map(t=>({quantity:t.quantity,variant_id:t.variant_id,key:t.key,price:t.price,final_line_price:t.final_line_price,sku:t.sku,product_id:t.product_id}))}}catch(e){return this.log("Error sending cart info",e),null}}ensureCartAttributesForExistingPriceTests(e){try{if(this.log("Checking visitor assignments for active price tests"),e&&this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig;this.log("Using preview config for merchant:",t.testId);let i="variant";if(t.variants&&t.variants.length>0){const s=t.variants.find(r=>r.id===t.currentVariant);s&&s.isControl&&(i="control")}this.log("Merchant preview - updating hidden inputs:",t.testId,i),this.updatePriceTestHiddenInputs(t.testId,i,!0);return}for(const t of this.state.essential.visitorTests){const i=this.testConfigs.find(n=>n.id===t.testId);if(!i){this.log("Test config not found:",t.testId);continue}const s=i.hypotheses.find(n=>n.id===t.hypothesisId);if(!s||s.type!=="price")continue;const r=s.isControl?"control":"variant";this.log("Updating hidden inputs for price test:",t.testId,r),this.updatePriceTestHiddenInputs(t.testId,r,e)}}catch(t){this.log("Error ensuring cart attributes for existing price tests:",t)}}subscriptionSwapDone=!1;subscriptionHideWrongPlans=null;subscriptionPriceDone=!1;subscriptionUpdateOneTime=null;subscriptionOneTimeDone=!1;swapMap=null;slptValue=null;async subscriptionSwap(){await ze(this)}async subscriptionPriceChange(){await Ge(this)}async subscriptionOneTimePrice(){await je(this)}
8updatePriceTestHiddenInputs(e,t,i){try{this.cleanupPriceTestObservers();const s=`${e}:${t}:${i?"t":"f"}`,r=T=>{const m=T.getAttribute("data-sl-pid");if(!m)return!0;if(i&&this.state.temporary.previewConfig){const w=this.state.temporary.previewConfig,I=t==="control"?"a":"b",f=w.variants.find(v=>v.label===I);if(!f)return!1;for(const v of f.domSelectors||[]){const g=v.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(g){const P=g[1];if(this.log(`Extracted ID from selector: ${P}, comparing to: ${m}`),P===m)return this.log("Product ID match found in preview config:",m,"variant:",f.label),!0}else this.log(`Could not extract ID from selector: ${v.cssSelector}`)}return this.log("No product ID match in preview config for:",m,"variant:",I),!1}const y=this.testConfigs.find(w=>w.id===e);if(!y)return this.log("Test config not found for testId:",e),!1;for(const w of y.hypotheses||[]){for(const I of w.domSelectors||[]){const f=I.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(f&&f[1]===m)return this.log("Product ID match found in domSelectors:",m,"for test:",e),!0}if(w.priceData?.variants){for(const I of w.priceData.variants)if(I[0]===m)return this.log("Product ID match found in priceData:",m,"for test:",e),!0}}return this.log("No product ID match for:",m,"in test:",e),!1},n=new Set;let o=!1,l=null;const c=(T,m)=>{if(document.querySelectorAll("[data-sl-attribute-p]").forEach(w=>{if(w instanceof Element&&w.nodeType===Node.ELEMENT_NODE&&w.isConnected&&document.contains(w))try{T.observe(w,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(I){this.log(`Failed to observe element (${m}):`,I)}}),document.body&&document.body.isConnected)try{T.observe(document.body,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(w){this.log(`Failed to observe document.body (${m}):`,w)}},d=(T,m,y,w)=>{const I=T.filter(f=>{const v=f.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);return v&&v[1]===w});this.log(`Applying ${y} DOM selectors, total: ${T.length}, filtered: ${I.length}`),I.length>0&&U(document,{testId:e,hypothesisId:m,selectors:I})},p=(T,m)=>{this.log(`Applying DOM selector changes for product ID: ${T}`),m.disconnect(),o=!0;try{if(i&&this.state.temporary.previewConfig){const y=t==="control"?"a":"b",w=this.state.temporary.previewConfig.variants.find(I=>I.label===y);if(!w?.domSelectors){this.log(`No DOM selectors found for preview variant: ${y}`);return}d(w.domSelectors,w.id,"preview config",T)}else{const y=this.testConfigs.find(I=>I.id===e);if(!y){this.log(`No test config found for testId: ${e}`);return}const w=y.hypotheses.find(I=>t==="control"?I.isControl:!I.isControl);if(!w?.domSelectors){this.log(`No DOM selectors found for assignment: ${t}`);return}d(w.domSelectors,w.id,"live config",T)}}finally{l!==null&&clearTimeout(l),l=window.setTimeout(()=>{o=!1,l=null,c(m,"reconnection"),this.log("Re-established innerHTML observer after DOM changes")},50)}},h=new MutationObserver(T=>{if(!o)for(const m of T){if(m.type!=="childList"&&m.type!=="characterData")continue;let y=m.target;m.type==="characterData"&&(y=m.target.parentElement||m.target.parentNode);let w=y,I=w.getAttribute("data-sl-attribute-p");for(;!I&&w.parentElement;)w=w.parentElement,I=w.getAttribute("data-sl-attribute-p");if(!I)continue;const f=w.innerHTML||w.textContent||"";let v="";m.type==="characterData"&&m.oldValue!==null&&(v=m.oldValue),this.log(`innerHTML changed on element with data-sl-attribute-p="${I}"`),v&&this.log(`Previous content: "${v}"`),this.log(`Current content: "${f}"`),p(I,h)}});c(h,"initial setup"),n.add(h);const u=new MutationObserver(T=>{T.forEach(m=>{m.addedNodes.forEach(y=>{if(y.nodeType===Node.ELEMENT_NODE){const w=y;E(w);const I=w.matches('input[name="properties[_slpt]"]')?[w]:w.querySelectorAll('input[name="properties[_slpt]"]');I.length>0&&this.log(`MutationObserver found ${I.length} new hidden input(s)`),I.forEach(f=>{const v=f.getAttribute("data-sl-pid");if(this.log(`MutationObserver checking new input with data-sl-pid="${v}"`),r(f))f.value!==s&&(f.value=s,this.log("Updated newly added hidden input:",s)),S(f);else{const g=f.getAttribute("data-sl-pid");g&&this.isProductInAnyPriceTest(g)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",g):(f.remove(),this.log("Removed newly added non-matching hidden input for product ID:",g))}})}})})});n.add(u);const b=new MutationObserver(T=>{T.forEach(m=>{if(m.type==="attributes"&&m.attributeName==="data-sl-pid"){const y=m.target;if(this.log("AttributeObserver detected data-sl-pid attribute change on:",y.tagName),y.matches('input[name="properties[_slpt]"]')){const w=y,I=m.oldValue,f=w.getAttribute("data-sl-pid");this.log(`data-sl-pid changed from "${I}" to "${f}" - triggering payment placement updates`),r(w)?(w.value!==s&&(w.value=s,this.log("Updated hidden input after data-sl-pid change:",s)),f&&p(f,h),this.log("Re-running payment placement updates after variant change"),E(document.body)):f&&this.isProductInAnyPriceTest(f)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",f):(w.remove(),this.log("Removed non-matching hidden input after data-sl-pid change:",f))}}})});n.add(b);const E=T=>{T.tagName==="SHOPIFY-PAYMENT-TERMS"&&(this.log("MutationObserver found new shopify-payment-terms element"),this.updateShopifyPaymentTerms(e,t));const m=T.querySelectorAll("shopify-payment-terms");m.length>0&&(this.log(`MutationObserver found ${m.length}
8 shopify-payment-terms in added node`),this.updateShopifyPaymentTerms(e,t)),T.tagName==="AFTERPAY-PLACEMENT"&&(this.log("MutationObserver found new afterpay-placement element"),this.updateAfterpayPlacements(e,t,"afterpay"));const y=T.querySelectorAll("afterpay-placement");y.length>0&&(this.log(`MutationObserver found ${y.length} afterpay-placement in added node`),this.updateAfterpayPlacements(e,t,"afterpay")),T.tagName==="SQUARE-PLACEMENT"&&(this.log("MutationObserver found new square-placement element"),this.updateAfterpayPlacements(e,t,"square"));const w=T.querySelectorAll("square-placement");w.length>0&&(this.log(`MutationObserver found ${w.length} square-placement in added node`),this.updateAfterpayPlacements(e,t,"square")),T.tagName==="KLARNA-PLACEMENT"&&(this.log("MutationObserver found new klarna-placement element"),this.updateKlarnaPlacements(e,t));const I=T.querySelectorAll("klarna-placement");I.length>0&&(this.log(`MutationObserver found ${I.length} klarna-placement in added node`),this.updateKlarnaPlacements(e,t))},S=T=>{b.observe(T,{attributes:!0,attributeFilter:["data-sl-pid"],attributeOldValue:!0,subtree:!1});const m=T.getAttribute("data-sl-pid");this.log(`Started AttributeObserver on specific input with data-sl-pid="${m}"`)},C=()=>{const T=document.querySelectorAll('input[name="properties[_slpt]"]');this.log(`Found ${T.length} existing hidden inputs to check`),T.forEach(m=>{const y=m.getAttribute("data-sl-pid");this.log(`Checking existing input with data-sl-pid="${y}"`),r(m)?(m.value=s,this.log("Updated existing hidden input:",s),y&&(this.log("Applying initial DOM selector changes for existing product"),p(y,h)),S(m)):y&&this.isProductInAnyPriceTest(y)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",y):(m.remove(),this.log("Removed non-matching hidden input for product ID:",y))})},_=()=>{document.body?(u.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver on document.body"),C(),E(document.body)):document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.body&&(u.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver after DOMContentLoaded"),C(),E(document.body))}):(this.log("Set timeout on observer"),setTimeout(_,10))};_(),window.__shopliftPriceTestObservers=n,window.__shopliftPriceTestValue=s,this.log("Set up DOM observer for price test hidden inputs")}catch(s){this.log("Error updating price test hidden inputs:",s)}}updateKlarnaPlacements(e,t){this.updatePlacementElements(e,t,"klarna-placement",(i,s)=>{i.setAttribute("data-purchase-amount",s.toString())})}cleanupPriceTestObservers(){const e=window.__shopliftPriceTestObservers;e&&(e.forEach(t=>{t.disconnect()}),e.clear(),this.log("Cleaned up existing price test observers")),delete window.__shopliftPriceTestObservers,delete window.__shopliftPriceTestValue}updateAfterpayPlacements(e,t,i="afterpay"){const s=i==="square"?"square-placement":"afterpay-placement";if(document.querySelectorAll(s).length===0){this.log(`No ${s} elements found on page - early return`);return}this.updatePlacementElements(e,t,s,(n,o)=>{if(i==="afterpay"){const l=(o/100).toFixed(2);n.setAttribute("data-amount",l)}else n.setAttribute("data-amount",o.toString())}),this.log("updateAfterpayPlacements completed")}updatePlacementElements(e,t,i,s){const r=document.querySelectorAll(i);if(r.length===0){this.log(`No ${i} elements found - early return`);return}let n;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const l=t==="control"?"a":"b",c=this.state.temporary.previewConfig.variants.find(d=>d.label===l);if(!c?.domSelectors){this.log(`No variant found for label ${l} in preview config for ${i}`);return}n=c.domSelectors,this.log(`Using preview config for ${i} in merchant mode, variant: ${l}`)}else{const l=this.testConfigs.find(d=>d.id===e);if(!l){this.log(`No testConfig found for id: ${e} - early return`);return}
8const c=l.hypotheses.find(d=>t==="control"?d.isControl:!d.isControl);if(!c?.domSelectors){this.log(`No hypothesis or domSelectors found for assignment: ${t} - early return`);return}n=c.domSelectors}const o=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);r.forEach(l=>{let c=null;const d=l.parentElement;if(d&&(c=d.querySelector('input[name="properties[_slpt]"]')),c||(c=l.querySelector('input[name="properties[_slpt]"]')),!c){this.log(`No hidden input found for ${i} element`);return}const p=c.getAttribute("data-sl-pid");if(!p){this.log("Hidden input has no data-sl-pid attribute - skipping");return}const h=n.find(S=>{const C=S.cssSelector.match(o);return C&&C[1]===p});if(!h){this.log(`No matching selector found for productId: ${p} - skipping element`);return}const u=h.actions.find(S=>S.scope==="price");if(!u?.value){this.log("No price action or value found - skipping element");return}const b=parseFloat(u.value.replace(/[^0-9.]/g,""));if(Number.isNaN(b)){this.log(`Invalid price "${u.value}" for product ${p} - skipping`);return}const E=Math.round(b*100);s(l,E)}),this.log(`updatePlacementElements completed for ${i}`)}updateShopifyPaymentTerms(e,t){const i=document.querySelectorAll("shopify-payment-terms");if(i.length===0)return;this.log("Store using shopify payments");let s;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const n=t==="control"?"a":"b",o=this.state.temporary.previewConfig.variants.find(l=>l.label===n);if(!o||!o.domSelectors){this.log(`No variant found for label ${n} in preview config`);return}s=o.domSelectors,this.log(`Using preview config for shopify-payment-terms in merchant mode, variant: ${n}`)}else{const n=this.testConfigs.find(l=>l.id===e);if(!n)return;const o=n.hypotheses.find(l=>t==="control"?l.isControl===!0:l.isControl===!1);if(!o||!o.domSelectors)return;s=o.domSelectors}const r=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);i.forEach(n=>{const o=n.getAttribute("variant-id");if(!o)return;const l=s.find(c=>{const d=c.cssSelector.match(r);return d&&d[1]===o});if(l){const c=l.actions.find(d=>d.scope==="price");if(c&&c.value){const d=n.getAttribute("shopify-meta");if(d)try{const p=JSON.parse(d);if(p.variants&&Array.isArray(p.variants)){const h=p.variants.find(u=>u.id?.toString()===o);if(h){h.full_price=c.value;const u=parseFloat(c.value.replace(/[^0-9.]/g,""));if(h.number_of_payment_terms&&h.number_of_payment_terms>1){const b=u/h.number_of_payment_terms;h.price_per_term=`$${b.toFixed(2)}`}n.setAttribute("shopify-meta",JSON.stringify(p))}}}catch(p){this.log("Error parsing/updating shoplift-meta:",p)}}}})}async makeJsonRequest(e){const t=await this.makeRequest(e);return t===null?null:JSON.parse(await t.text(),F)}async makeRequest(e){const{url:t,method:i,headers:s,data:r,signal:n}=e,o=new Headers;if(s)for(const c in s)o.append(c,s[c]);(!s||!s.Accept)&&o.append("Accept","application/json"),r!==void 0&&(!s||!s["Content-Type"])&&o.append("Content-Type","application/json"),(this.eventHost.includes("ngrok.io")||this.eventHost.includes("ngrok-free.app"))&&o.append("ngrok-skip-browser-warning","1234");const l=await this.fetch(t,{method:i,headers:o,body:r,signal:n});if(!l.ok){if(l.status===204)return null;if(l.status===422){const c=await l.json();if(typeof c<"u"&&c.isBot)throw new G}throw new Error(`Error sending shoplift request ${l.status}`)}return l}queueAddVisitorToTest(e,t){if(this.state.essential.visitorTests.some(s=>s.testId===e))return;const i=this.testConfigs.find(s=>s.id===e);if(this.state.essential.visitorTests.push({createdAt:new Date,testId:e,hypothesisId:t.id,isThemeTest:t.type==="theme",themeId:t.themeId,isSaved:!1,isInvalid:!1,shouldSendToGa:!0,testType:t.type,assignedTo:t.isControl?"control":"variant",testTitle:i?.title}),t.type==="price"){const s=t.isControl?"control":"variant";this.log("Price test assignment detected, updating cart attributes:",e,s),this.updatePriceTestHiddenInputs(e,s,!1)}}queueCartUpdate(e){this.queueEvent(new Te(e))}queuePageView(e){this.queueEvent(new Ce(e))}queueEvent(e){!this.state.essential.consentApproved&&this.state.essential.hasConsentInteraction||this.state.analytics.queue.length>10||this.state.analytics.queue.push(e)}legacyGetLocalStorageVisitor(){const e=this.localStorageGet(this.legacySessionKey);if(e)try{return JSON.parse(e,F)}catch{}return null}pruneStaleVisitorTests(){this.state.essential.visitorTests=this.state.essential.visitorTests.filter(e=>this.testConfigs.some(t=>t.id==e.testId)||this.inactiveTestConfigs.filter(t=>this.testIsPaused(t)).some(t=>t.id===e.testId))}pruneStateAndSave(){this.pruneStaleVisitorTests(),this.saveState()}saveState(){this.persistEssentialState(),this.persistAnalyticsState()}loadState(){const e=this.loadAnalyticsState(),t={analytics:e,essential:this.loadEssentialState(e),temporary:this.loadTemporaryState()},i=this.legacyGetLocalStorageVisitor(),s=this.legacyGetCookieVisitor(),r=[i,s].filter(n=>n!==null).sort((n,o)=>+o.storedAt-+n.storedAt)[0];return t.analytics.visitor===null&&r&&({visitorTests:t.essential.visitorTests,...t.analytics.visitor}=r,t.essential.isFirstLoad=!1,t.essential.initialState={createdAt:r.createdAt,referrer:r.referrer,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmMedium:r.utmMedium,utmSource:r.utmSource,device:r.device},this.deleteCookie("SHOPLIFT"),this.deleteLocalStorage(this.legacySessionKey)),!t.essential.consentApproved&&t.essential.hasConsentInteraction&&this.deleteLocalStorage(this.analyticsSessionKey),t}loadEssentialState(e){const t=this.loadLocalStorage(this.essentialSessionKey),i=this.loadCookie(this.essentialSessionKey),s=this.getInitialState();e.visitor?.device&&(s.device=e.visitor.device);const r={timestamp:new Date,consentApproved:!1,hasConsentInteraction:!1,debugMode:!1,initialState:s,visitorTests:[],isFirstLoad:!0},n=[t,i].filter(o=>o!==null).sort((o,l)=>+l.timestamp-+o.timestamp)[0]??r;return n.initialState||(e.visitor!==null?n.initialState=e.visitor:(n.initialState=s,n.initialState.createdAt=n.timestamp)),n}loadAnalyticsState(){const e=this.loadLocalStorage(this.analyticsSessionKey),t=this.loadCookie(this.analyticsSessionKey),i={timestamp:new Date,visitor:null,queue:[]},s=[e,t].filter(r=>r!==null).sort((r,n)=>+n.timestamp-+r.timestamp)[0]??i;return s.queue.length===0&&e&&e.queue.length>1&&(s.queue=e.queue),s}loadTemporaryState(){const e=this.sessionStorageGet(this.temporarySessionKey),t=e?JSON.parse(e,F):null,i=this.loadCookie(this.temporarySessionKey);return t??i??{isMerchant:!1,timestamp:new Date}}persistEssentialState(){this.log("Persisting essential state"),this.state.essential.isFirstLoad=!1,this.state.essential.timestamp=new Date,this.persistLocalStorageState(this.essentialSessionKey,this.state.essential),this.persist
8CookieState(this.essentialSessionKey,this.state.essential)}persistAnalyticsState(){this.log("Persisting analytics state"),this.state.essential.consentApproved&&(this.state.analytics.timestamp=new Date,this.persistLocalStorageState(this.analyticsSessionKey,this.state.analytics),this.persistCookieState(this.analyticsSessionKey,{...this.state.analytics,queue:[]}))}persistTemporaryState(){this.log("Setting temporary session state"),this.state.temporary.timestamp=new Date,this.sessionStorageSet(this.temporarySessionKey,JSON.stringify(this.state.temporary)),this.persistCookieState(this.temporarySessionKey,this.state.temporary,!0)}loadLocalStorage(e){const t=this.localStorageGet(e);if(t===null)return null;try{return JSON.parse(t,F)}catch{return null}}loadCookie(e){const t=this.getCookie(e);if(t===null)return null;try{return JSON.parse(t,F)}catch{return null}}persistLocalStorageState(e,t){this.localStorageSet(e,JSON.stringify(t))}persistCookieState(e,t,i=!1){const s=JSON.stringify(t),r=i?"":`expires=${new Date(new Date().getTime()+864e5*365).toUTCString()};`;document.cookie=`${e}=${s};domain=.${window.location.hostname};path=/;SameSite=Strict;${r}`}deleteCookie(e){const t=new Date(0).toUTCString();document.cookie=`${e}=;domain=.${window.location.hostname};path=/;expires=${t};`}deleteLocalStorage(e){window.localStorage.removeItem(e)}getChannel(e){return[{"name":"cross-network","test":(v) => new RegExp(".*cross-network.*", "i").test(v.utmCampaign)},{"name":"direct","test":(v) => v.utmSource === "" && v.utmMedium === ""},{"name":"paid-shopping","test":(v) => (new RegExp("^(?:Google|IGShopping|aax-us-east\.amazon-adsystem\.com|aax\.amazon-adsystem\.com|alibaba|alibaba\.com|amazon|amazon\.co\.uk|amazon\.com|apps\.shopify\.com|checkout\.shopify\.com|checkout\.stripe\.com|cr\.shopping\.naver\.com|cr2\.shopping\.naver\.com|ebay|ebay\.co\.uk|ebay\.com|ebay\.com\.au|ebay\.de|etsy|etsy\.com|m\.alibaba\.com|m\.shopping\.naver\.com|mercadolibre|mercadolibre\.com|mercadolibre\.com\.ar|mercadolibre\.com\.mx|message\.alibaba\.com|msearch\.shopping\.naver\.com|nl\.shopping\.net|no\.shopping\.net|offer\.alibaba\.com|one\.walmart\.com|order\.shopping\.yahoo\.co\.jp|partners\.shopify\.com|s3\.amazonaws\.com|se\.shopping\.net|shop\.app|shopify|shopify\.com|shopping\.naver\.com|shopping\.yahoo\.co\.jp|shopping\.yahoo\.com|shopzilla|shopzilla\.com|simplycodes\.com|store\.shopping\.yahoo\.co\.jp|stripe|stripe\.com|uk\.shopping\.net|walmart|walmart\.com)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|y
8andex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.o
8pera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"display","test":(v) => new RegExp("^(?:display|banner|expandable|interstitial|cpm)$", "i").test(v.utmMedium)},{"name":"paid-other","test":(v) => new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)}
8,{"name":"organic-shopping","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)},{"name":"organic-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|k
8akao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) || new RegExp("^(?:social|social-network|social-media|sm|social network|social media)$", "i").test(v.utmMedium)},{"name":"organic-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) || new RegExp("^(.*video.*)$", "i").test(v.utmMedium)},{"name":"organic-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|y
8andex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || v.utmMedium.toLowerCase() === "organic"},{"name":"referral","test":(v) => new RegExp("^(?:referral|app|link)$", "i").test(v.utmMedium)},{"name":"email","test":(v) => new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmMedium) || new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmSource)},{"name":"affiliate","test":(v) => v.utmMedium.toLowerCase() === "affiliate"},{"name":"audio","test":(v) => v.utmMedium.toLowerCase() === "audio"},{"name":"sms","test":(v) => v.utmSource.toLowerCase() === "sms" || v.utmMedium.toLowerCase() === "sms"},{"name":"mobile-push-notification","test":(v) => v.utmSource.toLowerCase() === "firebase" || new RegExp("(?:.*mobile.*|.*notification.*|push$)", "i").test(v.utmMedium)}].find(i=>i.test(e))?.name??"other"}getShopifyAnalyticsId(){const e=this.getCookie("_shopify_y");if(e)return e;try{const t=this.localStorageGet("Shoplift_ClientId");if(t)return t}catch{}return null}legacyGetCookieVisitor(){const e=this.getCookie("SHOPLIFT");return e===null?null:JSON.parse(e,F)}getCookie(e,t=this.cookie){const i=t.split("; ").filter(s=>s.split("=").at(0)===e).at(0);return i===void 0?null:i.split("=").slice(1).join("=")}monitorConsentChange(){document.addEventListener("visitorConsentCollected",e=>{(async()=>await this.onConsentChange(e.detail.analyticsAllowed,!0))()}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.loadShopifyConsentApiWithRetry()):this.loadShopifyConsentApiWithRetry()}loadShopifyConsentApiWithRetry(){let e=0;const t=()=>{this.loadShopifyConsentApi()||e++<10&&window.setTimeout(t,100)};t()}loadShopifyConsentApi(){if(window.Shopify){this.log("Loading Shopify features");const e=async()=>{if(!window.Shopify){this.log("Shopify object missing... suddenly?");return}if(window.Shopify.customerPrivacy===void 0){this.log("Shopify CustomerPrivacy api still missing, trying again in 1000ms"),t=window.setTimeout(()=>{(async()=>await e())()},1e3);return}if(this.geoViaShopify){const s=window.Shopify.customerPrivacy.getRegion?.();this.resolvedRegion=typeof s=="string"?s.replace(/-/g,""):""}const i=window.Shopify.customerPrivacy.getTrackingConsent();await this.onConsentChange(window.Shopify.customerPrivacy.analyticsProcessingAllowed(),i==="yes")};let t=window.setTimeout(()=>{(async()=>await e())()},5e3);return window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],i=>{(async()=>{if(window.clearTimeout(t),i){this.log("Error loading consent tracking",i);return}await e()})()}),!0}return!1}async onConsentChange(e,t){try{if(this.log("Consent change detected",e,t),this.state.essential.consentApproved=e,this.state.essential.hasConsentInteraction=t,!this.state.essential.consentApproved){this.state.essential.hasConsentInteraction&&(this.state.analytics.queue.length=0),this.saveState();return}this.cookie=document.cookie,this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.saveState(),await this.syncAllEvents()}catch(i){this.log("Error syncing on consent change",i)}}isThemePreview(){return isThemePreview||themeRole!=="main"}isAppProxyPath(){const e=["/apps/","/tools/","/a/"],t=window.location.pathname;return e.some(i=>t.startsWith(i))}clearThemeBar(e,t,i){const s=structuredClone(i);this.log("Looking for theme bar"),this.waitForElement(null,"body").then(r=>this.waitForElement(r,"#preview-bar-iframe, #PBarNextFrameWrapper").then(n=>(this.log("Found theme bar"),t&&(this.log("Removing theme bar"),n.remove()),e?this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify({...this.debugState(),stateAtEvaluation:s},te)}):Promise.resolve(null)))).catch(r=>console.error(r))}waitForElement(e,t){return new Promise(i=>{const s=document.querySelector(t);if(s){i(s);return}const r=new MutationObserver(n=>{const o=document.querySelector(t);if(o){r.disconnect(),i(o);return}});r.observe(e??document.documentElement,{childList:!0})})}setDebug(e){this.state.essential.debugMode=e,this.saveState()}log(e,...t){let i=0;const s=e.replace(/%[sdoOfF]/g,r=>{if(i>=t.length)return r;const n=t[i++];return r==="%o"||r==="%O"?JSON.stringify(n):String(n)});this.logHistory.push(`[${new Date().toISOString()}][SL] ${s}`),!(!this.state.essential.debugMode&&!this.shopliftDebug)&&console.debug(`[SL] ${e}`,...t)}debugState(){return{state:this.state,storage:{essential:this.loadLocalStorage(this.essentialSessionKey),analytics:this.loadLocalStorage(this.analyticsSessionKey)},params:{shop:this.shop,host:this.host,eventHost:this.eventHost,cssHideClass:this.cssHideClass,testConfigs:this.testConfigs,inactiveTestConfigs:this.inactiveTestConfigs,sendPageView:this.sendPageView,isShopifyMerchantCookie
8:this.getCookie("is_shopify_merchant"),themeId,url:window.location.href,isThemePreview,themeRole,gaConfig:this.gaConfig},logHistory:this.logHistory}}createViewportObserver(e,t={}){const{threshold:i=this.VIEWPORT_TRACK_THRESHOLD,triggerOnce:s=!0}=t,r=new Set;return new IntersectionObserver(n=>{n.forEach(o=>{if(o.isIntersecting&&!r.has(o.target)){const l=o.target,c=l.getAttribute(this.DATA_SL_TEST_ID);c&&(e(c,l),s&&r.add(l))}})},{threshold:i})}applyChangesWithViewport(e,t,i,s){const r=t.selectorsForViewportTracking??t.selectors,n=o=>{if(this.state.essential.visitorTests.some(h=>h.testId===o)||this.activeViewportObservers.has(o))return;const l=[];if(r.forEach(h=>{e.querySelectorAll(h.cssSelector).forEach(b=>l.push(b))}),l.length===0)return;let c=!1;const d=()=>{c||(c=!0,i(o),p.disconnect(),this.activeViewportObservers.delete(o))},p=this.createViewportObserver(()=>{d()},{triggerOnce:!0,...s});this.activeViewportObservers.set(o,p),this.log(`Created viewport observer for test ${o}, observing ${l.length} elements`),l.forEach(h=>{h.setAttribute(this.DATA_SL_TEST_ID,String(o)),p.observe(h)}),setTimeout(()=>{c||l.forEach(h=>{const u=h.getBoundingClientRect(),b=s?.threshold??this.VIEWPORT_TRACK_THRESHOLD,E=Math.min(u.bottom,window.innerHeight)-Math.max(u.top,0),S=Math.min(u.right,window.innerWidth)-Math.max(u.left,0);u.top<window.innerHeight&&u.bottom>0&&u.left<window.innerWidth&&u.right>0&&E>0&&S>0&&E>=u.height*b&&(this.log(`Price element already visible in viewport for test ${o}:`,h),d())})},100)};t.selectors.length>0&&U(e,t,()=>{}),Ie(e,{testId:t.testId,hypothesisId:t.hypothesisId,selectors:r},o=>{n(o)})}applyPriceTestWithMapLookup(e,t,i,s){if(!t.priceData){this.log("No price data for hypothesis '%s'",t.id);return}this.log("Hypothesis '%s' isControl=%s, priceData has %d variants",t.id,t.isControl,t.priceData.variants.length);const r=t.priceData.variants.slice(0,3);for(const[S,C,_]of r)this.log(" Sample priceData: variant=%s, price=%d, compareAt=%d",S,C,_);const n=j(t.priceData),o=new Set;for(const S of i)if(S.priceData)for(const[C]of S.priceData.variants)o.add(C);this.log("Price test Map lookup: %d products in hypothesis, %d total products to track",n.size,o.size);const l=t.priceData,c=new WeakSet;let d=!1;const p="[data-sl-attribute-p], [data-sl-attribute-cap], [data-sl-attribute-discount]",h=S=>{if(c.has(S))return;const C=S.getAttribute("data-sl-attribute-p"),_=S.getAttribute("data-sl-attribute-cap"),T=S.getAttribute("data-sl-attribute-discount"),m=C||_||T;if(!m||!o.has(m))return;c.add(S);const y=n.get(m);y&&(this.log("Applying price for product %s: %d cents (compare at: %d cents)",m,y.priceInCents,y.compareAtPriceInCents),$e(S,m,y,l),this.log("Applied price to element for product %s",m)),!d&&!this.state.essential.visitorTests.some(w=>w.testId===e)&&(S.setAttribute(this.DATA_SL_TEST_ID,String(e)),this.setupElementViewportTracking(S,e,()=>{d||(d=!0,s(e))}))},u=()=>{const S=document.querySelectorAll(p);this.log("Scanning for price elements, found: %d",S.length),S.forEach(h)},b=new MutationObserver(S=>{for(const C of S)C.type==="childList"&&C.addedNodes.forEach(_=>{if(_.nodeType===Node.ELEMENT_NODE){const T=_;(T.hasAttribute("data-sl-attribute-p")||T.hasAttribute("data-sl-attribute-cap")||T.hasAttribute("data-sl-attribute-discount"))&&h(T),T.querySelectorAll(p).forEach(h)}}),C.type==="attributes"&&C.target instanceof Element&&h(C.target)}),E=document.body||document.documentElement;b.observe(E,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-sl-attribute-p","data-sl-attribute-cap","data-sl-attribute-discount"]}),this.log("MutationObserver started for price elements"),u(),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",()=>{this.log("DOMContentLoaded - rescanning for price elements"),u()}),setTimeout(()=>{this.log("Delayed rescan for price elements"),u()},100),setTimeout(()=>{this.log("Final rescan for price elements"),u()},500)}setupElementViewportTracking(e,t,i){const s=this.VIEWPORT_TRACK_THRESHOLD,r=e.getBoundingClientRect(),n=Math.min(r.bottom,window.innerHeight)-Math.max(r.top,0),o=Math.min(r.right,window.innerWidth)-Math.max(r.left,0);if(r.top<window.innerHeight&&r.bottom>0&&r.left<window.innerWidth&&r.right>0&&n>0&&o>0&&n>=r.height*s){this.log("Price element already visible for test %s",t),i();return}const c=new IntersectionObserver(d=>{for(const p of d)if(p.isIntersecting&&p.intersectionRatio>=s){this.log("Price element entered viewport for test %s",t),c.disconnect(),i();break}},{threshold:s});c.observe(e)}debug(){const e=this.debugState();console.log(JSON.stringify(e,te,2))}}(async function(){window.shopliftInstance||(window.shopliftInstance=new et("drstolberg.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",false,false,false,{"sendEvents":false,"mode":"gtag"}
8,false,false,1000,[],[],null,false),await window.shopliftInstance.init())})();async function tt(a,e,t,i){const s=Ke({log:i});if(t)return i("[SUB-PREVIEW] A side â no overlay applied; widget renders naturally"),s;const r=a.widget.widgetType,n=e?j(e):null;let o=W(e),l=Y(a,o),c=l.discountMap,d=l.maxDiscount;function p(){const f=W(e);f!==o&&(o=f,l=Y(a,o),c=l.discountMap,d=l.maxDiscount,i(`[SUB-PREVIEW] scope refreshed currentProductId=${o??"n/a"}, maxDiscount=${d}`))}i(`[SUB-PREVIEW] side=B, currentProductId=${o??"n/a"}, maxDiscount=${d}`);function h(f){if(!e||!n)return null;const v=X(n),g=v?n.get(v):void 0;return g?{formattedVariantPrice:K(g.priceInCents,e),formattedDiscounted:K(g.priceInCents*(1-f/100),e)}:null}function u(f){const v=Z(a,f);if(!v)return d;const g=D(a,"subscriptionInput"),P=g.length?g[0].selector:'input[name="rc_plan"]',A=v.querySelector(`${P}:checked`);if(A){const k=c[A.value];if(k!==void 0)return k}return d}function b(f){const v=D(a,"subscriptionDiscount");for(const g of v)if(g.selector.includes("badge")||g.selector.includes("__badge")){const P=f.querySelector(g.selector);P?.textContent&&!P.textContent.includes(`${d}%`)&&$(P,A=>N(A,d))}}function E(f,v){const g=h(v);if(!g)return;const P=D(a,"subscriptionCompareAt");for(const A of P){const k=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);k?.textContent&&!k.textContent.includes(g.formattedVariantPrice)&&$(k,x=>/\d/.test(x)?g.formattedVariantPrice:x)}}function S(f,v){const g=h(v);if(!g)return;const P=D(a,"subscriptionPrice");for(const A of P){const k=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);k?.textContent&&!k.textContent.includes(g.formattedDiscounted)&&$(k,x=>/\d/.test(x)?g.formattedDiscounted:x)}}function C(f){const v=D(a,"subscriptionInput"),g=v.length?v[0].selector:'input[name="rc_plan"]',P=D(a,"subscriptionPlanDiscount"),A=P.length?P[0].selector:".rc-plans-button__discount";for(const k of Array.from(f.querySelectorAll("label"))){const x=k.querySelector(g),R=k.querySelector(A);if(x&&R?.textContent){const V=c[x.value];if(V!==void 0){const O=R.textContent.match(/[\d.]+%/)?.[0];O&&O!==`${V}%`&&$(R,L=>N(L,V))}}}}function _(f){const v=f.querySelector("select");if(v)for(const g of Array.from(v.options)){const P=c[g.value];if(P!==void 0&&g.textContent){const A=g.textContent.match(/[\d.]+%/)?.[0];A&&A!==`${P}%`&&(g.textContent=N(g.textContent,P))}}}function T(f){const v=D(a,"onetimePrice");if(!v.length||!e||!n)return;const g=X(n),P=g?n.get(g):void 0;if(!P)return;const A=K(P.priceInCents,e),k=D(a,"onetimeContainer"),x=k.length?k[0].selector:'[part~="rc-purchase-option__onetime"]',R=f.querySelector(x);if(R)for(const V of v){const O=R.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(A)&&$(O,L=>/\d/.test(L)?A:L)}}function m(f,v){const P=D(a,"subscriptionDiscount").filter(A=>A.selector.includes("benefit")||A.selector==="rc-benefits");for(const A of P){const k=f.querySelector(A.selector);if(k?.shadowRoot){for(const x of Array.from(k.shadowRoot.querySelectorAll("li")))if(x.textContent?.includes("Save")){const R=x.textContent.match(/[\d.]+%/)?.[0];R&&R!==`${v}%`&&$(x,V=>N(V,v))}}}}let y=!1;function w(){if(!y){y=!0;try{p();const f=B(a);if(!f)return;const v=u(f);b(f),E(f,v),S(f,v),T(f);const g=Z(a,f);g&&(r==="buttons"||r==="radio"?C(g):_(g)),m(f,v)}finally{y=!1}}}const I=ue({data:a,runUpdates:w});return function(){I(),s()}}const it=Object.freeze(Object.defineProperty({__proto__:null,subscriptionPreviewRender:tt},Symbol.toStringTag,{value:"Module"}))})(); })("/", { suffix: "tea-v3", type: "product" }, "main", 162480455913, false)</script>
8 9<!-- End of Shoplift scripts --> 10 11 12 13 14 <meta charset="utf-8"> 15 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 16 <meta name="viewport" content="width=device-width,initial-scale=1"> 17 <meta name="theme-color" content=""> 18 <meta name="google-site-verification" content="nCyXNPOlq1yZbkQS4IMNOQpyTnyKGiVyeMtewTlt_B0" /> 19 <link rel="canonical" href="https://doctorstolberg.com/products/rest-digest-tea"><link rel="icon" type="image/png" href="//doctorstolberg.com/cdn/shop/files/favicon.png?crop=center&height=32&v=1749245627&width=32"><title> 20 Rest + Digest Tea 21 – DOCTOR STOLBERG</title> 22 23 24 <meta name="description" content="A daily soothing, streamlined formula to support digestion and eliminate bloat."> 25 26 27 28 29<meta property="og:site_name" content="DOCTOR STOLBERG"> 30<meta property="og:url" content="https://doctorstolberg.com/products/rest-digest-tea"> 31<meta property="og:title" content="Rest + Digest Tea"> 32<meta property="og:type" content="product"> 33<meta property="og:description" content="A daily soothing, streamlined formula to support digestion and eliminate bloat."><meta property="og:image" content="http://doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025"> 34 <meta property="og:image:secure_url" content="https://doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025"> 35 <meta property="og:image:width" content="4000"> 36 <meta property="og:image:height" content="5000"><meta property="og:price:amount" content="45.00"> 37 <meta property="og:price:currency" content="USD"><meta name="twitter:card" content="summary_large_image"> 38<meta name="twitter:title" content="Rest + Digest Tea"> 39<meta name="twitter:description" content="A daily soothing, streamlined formula to support digestion and eliminate bloat."> 40 41 42
42<script src="//doctorstolberg.com/cdn/shop/t/46/assets/constants.js?v=58251544750838685771788989889" defer="defer"></script>
42 43
43<script src="//doctorstolberg.com/cdn/shop/t/46/assets/pubsub.js?v=158357773527763999511788989889" defer="defer"></script>
43 44
44<script src="//doctorstolberg.com/cdn/shop/t/46/assets/global.js?v=8771620970054051491788989888" defer="defer"></script>
44 45
45<script src="//doctorstolberg.com/cdn/shop/t/46/assets/theme-scripts.js?v=39258829695680046061788989890" defer="defer"></script>
45 46
46<script src="//doctorstolberg.com/cdn/shop/t/46/assets/custom-scripts.js?v=111603181540343972631788989889" defer="defer"></script>
46<script src="//doctorstolberg.com/cdn/shop/t/46/assets/animations.js?v=88693664871331136111788989886" defer="defer"></script>
46<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
46<meta name="facebook-domain-verification" content="18uhevfghktp93uq0qi6vdn9eyz3lp"> 47<meta name="google-site-verification" content="38MOJuVwLclu_8OeSU1B3wucHjZcme-__4u1PMnkUPE"> 48<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/63675138281/digital_wallets/dialog"> 49<meta id="in-context-paypal-metadata" data-shop-id="63675138281" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 50<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="buy" href="/cart/50889447407849:1?ucp/version=2026-08-25&context/payment/0/handler=dev.shopify.shop_pay" payment="dev.shopify.shop_pay com.google.pay dev.shopify.card"><link rel="alternate" type="application/json+oembed" href="https://doctorstolberg.com/products/rest-digest-tea.oembed">
51<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
51 52<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
53<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=63675138281" crossorigin="anonymous"></script>
vendor: 1 bytes, line 53
53
54<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":63675138281,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/63675138281","merchantName":"DOCTOR STOLBERG","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","discover","amex","elo","jcb"],"total":{"type":"pending","label":"DOCTOR STOLBERG","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 54
54
55<script id="shopify-features" type="application/json">{"accessToken":"747cd65fa0e63d383ee74521c870ed7f","betas":["rich-media-storefront-analytics"],"domain":"doctorstolberg.com","predictiveSearch":true,"shopId":63675138281,"locale":"en"}</script>
vendor: 1 bytes, line 55
55
56<script>var Shopify = Shopify || {}; 57Shopify.shop = "drstolberg.myshopify.com"; 58Shopify.locale = "en"; 59Shopify.currency = {"active":"USD","rate":"1.0"}; 60Shopify.country = "US"; 61Shopify.theme = {"name":"doctor-stolberg-theme\/main","id":162480455913,"schema_name":"Esencia","schema_version":"2.0.1","theme_store_id":null,"role":"main"}; 62Shopify.theme.handle = "null"; 63Shopify.theme.style = {"id":null,"handle":null}; 64Shopify.cdnHost = "doctorstolberg.com/cdn"; 65Shopify.routes = Shopify.routes || {}; 66Shopify.routes.root = "/"; 67Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 68Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 69Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 70Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 70
70
71<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 71
71
72<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 72
72
73<script> 74 window.ShopifyPay = window.ShopifyPay || {}; 75 window.ShopifyPay.apiHost = "shop.app\/pay"; 76 window.ShopifyPay.redirectState = null; 77</script>
vendor: 1 bytes, line 77
77
78<script> 79 window.Shopify = window.Shopify || {}; 80 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 81 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 82 window.Shopify.SignInWithShop.eligible = true; 83</script>
vendor: 1 bytes, line 83
83
84<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
vendor: 1 bytes, line 84
84
85<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 85
85
86<script type="module"> 87 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 88 89 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 90 91</script>
vendor: 1 bytes, line 91
91
92<script> 93 window.Shopify = window.Shopify || {}; 94 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 95 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"]}; 96</script>
vendor: 1 bytes, line 96
96
97<script>(function() { 98 var isLoaded = false; 99 function asyncLoad() { 100 if (isLoaded) return; 101 isLoaded = true; 102 var urls = ["https:\/\/static.rechargecdn.com\/assets\/js\/widget.min.js?shop=drstolberg.myshopify.com","\/\/www.powr.io\/powr.js?powr-token=drstolberg.myshopify.com\u0026external-type=shopify\u0026shop=drstolberg.myshopify.com","https:\/\/pc-quiz.s3.us-east-2.amazonaws.com\/current\/quiz-loader.min.js?shop=drstolberg.myshopify.com","https:\/\/static.klaviyo.com\/onsite\/js\/klaviyo.js?company_id=YzFzLa\u0026shop=drstolberg.myshopify.com","https:\/\/cdn.nfcube.com\/instafeed-dfbf859c25488ebd490403e34f3939c1.js?shop=drstolberg.myshopify.com","https:\/\/shopify-widget.route.com\/shopify.widget.js?shop=drstolberg.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=drstolberg.myshopify.com"]; 103 for (var i = 0; i < urls.length; i++) { 104 var s = document.createElement('script'); 105 s.type = 'text/javascript'; 106 s.async = true; 107 s.src = urls[i]; 108 var x = document.getElementsByTagName('script')[0]; 109 x.parentNode.insertBefore(s, x); 110 } 111 }; 112 if(window.attachEvent) { 113 window.attachEvent('onload', asyncLoad); 114 } else { 115 window.addEventListener('load', asyncLoad, false); 116 } 117})();</script>
vendor: 1 bytes, line 117
117
118<script id="__st">var __st={"a":63675138281,"offset":-25200,"reqid":"51418050-0a24-43f9-a089-b3569cadc7d8-1791438547","pageurl":"doctorstolberg.com\/products\/rest-digest-tea","u":"7db9afb891a6","p":"product","rtyp":"product","rid":8254808785129};</script>
vendor: 1 bytes, line 118
118
119<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 119
119
120<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 120
120
121<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//doctorstolberg.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 121
121
122<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 = "//doctorstolberg.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>
122<script crossorigin="anonymous" defer="defer" src="//doctorstolberg.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 122
122
123<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 123
123
124<script> 125 window.Shopify = window.Shopify || {}; 126 window.Shopify.MCP = window.Shopify.MCP || {}; 127 window.Shopify.MCP.enabled = true; 128 window.Shopify.MCP.shop = "drstolberg.myshopify.com"; 129 window.Shopify.MCP.mcpEndpoint = "https:\/\/doctorstolberg.com\/api\/mcp"; 130 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"]}}]; 131</script>
vendor: 1 bytes, line 131
131
132<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("\/\/doctorstolberg.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 133</script>
vendor: 1 bytes, line 133
133
134<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://doctorstolberg.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 135</script>
vendor: 1 bytes, line 135
135
136<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 137 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); 138</script>
vendor: 1 bytes, line 138
138
139<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})}})); 140</script>
140 141<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://doctorstolberg.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 142<style id="shopify-accelerated-checkout-cart"> 143 #shopify-buyer-consent { 144 margin-top: 1em; 145 display: inline-block; 146 width: 100%; 147} 148 149#shopify-buyer-consent.hidden { 150 display: none; 151} 152 153#shopify-subscription-policy-button { 154 background: none; 155 border: none; 156 padding: 0; 157 text-decoration: underline; 158 font-size: inherit; 159 cursor: pointer; 160} 161 162#shopify-subscription-policy-button::before { 163 box-shadow: none; 164} 165 166 </style>
167<script id="sections-script" data-sections="header" defer="defer" src="//doctorstolberg.com/cdn/shop/t/46/compiled_assets/scripts.js?v=184325197989695213571788989947"></script>
vendor: 1 bytes, line 167
167
168<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
168 169 170 171 <style data-shopify> 172 173 174 175 176 177 178 179 :root, 180 .color-background-1 { 181 --color-background: 255,255,255; 182 183 --gradient-background: #ffffff; 184 185 186 187 188 --color-foreground: 0,0,0; 189 --color-background-contrast: 191,191,191; 190 --color-shadow: 0,0,0; 191 --color-button: 0,0,0; 192 --color-button-text: 255,255,255; 193 --color-secondary-button: 255,255,255; 194 --color-secondary-button-text: 0,0,0; 195 --color-link: 0,0,0; 196 --color-badge-foreground: 0,0,0; 197 --color-badge-background: 255,255,255; 198 --color-badge-border: 0,0,0; 199 --payment-terms-background-color: rgb(255 255 255); 200 } 201 202 203 .color-background-2 { 204 --color-background: 255,255,255; 205 206 --gradient-background: #ffffff; 207 208 209 210 211 --color-foreground: 0,0,0; 212 --color-background-contrast: 191,191,191; 213 --color-shadow: 0,0,0; 214 --color-button: 255,255,0; 215 --color-button-text: 0,0,0; 216 --color-secondary-button: 255,255,255; 217 --color-secondary-button-text: 0,0,0; 218 --color-link: 0,0,0; 219 --color-badge-foreground: 0,0,0; 220 --color-badge-background: 255,255,255; 221 --color-badge-border: 0,0,0; 222 --payment-terms-background-color: rgb(255 255 255); 223 } 224 225 226 .color-inverse { 227 --color-background: 255,255,0; 228 229 --gradient-background: #ffff00; 230 231 232 233 234 --color-foreground: 0,0,0; 235 --color-background-contrast: 127,128,0; 236 --color-shadow: 0,0,0; 237 --color-button: 0,0,0; 238 --color-button-text: 255,255,255; 239 --color-secondary-button: 255,255,0; 240 --color-secondary-button-text: 0,0,0; 241 --color-link: 0,0,0; 242 --color-badge-foreground: 0,0,0; 243 --color-badge-background: 255,255,0; 244 --color-badge-border: 0,0,0; 245 --payment-terms-background-color: rgb(255 255 0); 246 } 247 248 249 .color-accent-1 { 250 --color-background: 221,211,191; 251 252 --gradient-background: #ddd3bf; 253 254 255 256 257 --color-foreground: 117,72,43; 258 --color-background-contrast: 177,154,108; 259 --color-shadow: 117,72,43; 260 --color-button: 255,255,255; 261 --color-button-text: 117,72,43; 262 --color-secondary-button: 221,211,191; 263 --color-secondary-button-text: 117,72,43; 264 --color-link: 117,72,43; 265 --color-badge-foreground: 117,72,43; 266 --color-badge-background: 221,211,191; 267 --color-badge-border: 117,72,43; 268 --payment-terms-background-color: rgb(221 211 191); 269 } 270 271 272 .color-accent-2 { 273 --color-background: 192,158,145; 274 275 --gradient-background: #c09e91; 276 277 278 279 280 --color-foreground: 255,255,255; 281 --color-background-contrast: 133,92,76; 282 --color-shadow: 117,72,43; 283 --color-button: 255,255,255; 284 --color-button-text: 192,158,145; 285 --color-secondary-button: 192,158,145; 286 --color-secondary-button-text: 255,255,255; 287 --color-link: 255,255,255; 288 --color-badge-foreground: 255,255,255; 289 --color-badge-background: 192,158,145; 290 --color-badge-border: 255,255,255; 291 --payment-terms-background-color: rgb(192 158 145); 292 } 293 294 295 body, .color-background-1, .color-background-2, .color-inverse, .color-accent-1, .color-accent-2 { 296 color: rgba(var(--color-foreground), 0.75); 297 background-color: rgb(var(--color-background)); 298 } 299 300 :root { 301 --font-body-family: "system_ui", -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; 302 --font-body-style: normal; 303 --font-body-weight: 400; 304 --font-body-weight-bold: 700; 305 --font-body-size:1.4rem; 306 --font-nav-size:1.4rem; 307 --font-button-size:1.4rem; 308 --font-heading-family: "system_ui", -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; 309 --font-heading-style: normal; 310 --font-heading-weight: 400; 311 312 --font-body-scale: 1.0; 313 --font-heading-scale: 1.0; 314 315 --media-padding: px; 316 --media-border-opacity: 0.0; 317 --media-border-width: 0px; 318 --media-radius: 0px;
319 --media-shadow-opacity: 0.0; 320 --media-shadow-horizontal-offset: 0px; 321 --media-shadow-vertical-offset: 0px; 322 --media-shadow-blur-radius: 0px; 323 --media-shadow-visible: 0; 324 325 --page-width: 300rem; 326 --page-width-margin: 0rem; 327 328 --product-card-image-padding: 0.0rem; 329 --product-card-corner-radius: 0.0rem; 330 --product-card-text-alignment: left; 331 --product-card-border-width: 0.0rem; 332 --product-card-border-opacity: 0.0; 333 --product-card-shadow-opacity: 0.0; 334 --product-card-shadow-visible: 0; 335 --product-card-shadow-horizontal-offset: 0.0rem; 336 --product-card-shadow-vertical-offset: 0.0rem; 337 --product-card-shadow-blur-radius: 0.0rem; 338 339 --collection-card-image-padding: 0.0rem; 340 --collection-card-corner-radius: 0.0rem; 341 --collection-card-text-alignment: left; 342 --collection-card-border-width: 0.0rem; 343 --collection-card-border-opacity: 0.0; 344 --collection-card-shadow-opacity: 0.0; 345 --collection-card-shadow-visible: 0; 346 --collection-card-shadow-horizontal-offset: 0.0rem; 347 --collection-card-shadow-vertical-offset: 0.0rem; 348 --collection-card-shadow-blur-radius: 0.0rem; 349 350 --blog-card-image-padding: 0.0rem; 351 --blog-card-corner-radius: 0.0rem; 352 --blog-card-text-alignment: left; 353 --blog-card-border-width: 0.0rem; 354 --blog-card-border-opacity: 0.0; 355 --blog-card-shadow-opacity: 0.0; 356 --blog-card-shadow-visible: 0; 357 --blog-card-shadow-horizontal-offset: 0.0rem; 358 --blog-card-shadow-vertical-offset: 0.0rem; 359 --blog-card-shadow-blur-radius: 0.0rem; 360 361 --badge-corner-radius: 0.0rem; 362 363 --popup-border-width: 0px; 364 --popup-border-opacity: 0.0; 365 --popup-corner-radius: 0px; 366 --popup-shadow-opacity: 0.0; 367 --popup-shadow-horizontal-offset: 0px; 368 --popup-shadow-vertical-offset: 0px; 369 --popup-shadow-blur-radius: 0px; 370 371 --drawer-border-width: 0px; 372 --drawer-border-opacity: 0.0; 373 --drawer-shadow-opacity: 0.0; 374 --drawer-shadow-horizontal-offset: 0px; 375 --drawer-shadow-vertical-offset: 0px; 376 --drawer-shadow-blur-radius: 0px; 377 378 --spacing-sections-desktop: 60px; 379 --spacing-sections-mobile: 42px; 380 381 --grid-desktop-vertical-spacing: 16px; 382 --grid-desktop-horizontal-spacing: 16px; 383 --grid-mobile-vertical-spacing: 8px; 384 --grid-mobile-horizontal-spacing: 8px; 385 386 --text-boxes-border-opacity: 0.0; 387 --text-boxes-border-width: 0px; 388 --text-boxes-radius: 0px; 389 --text-boxes-shadow-opacity: 0.0; 390 --text-boxes-shadow-visible: 0; 391 --text-boxes-shadow-horizontal-offset: 0px; 392 --text-boxes-shadow-vertical-offset: 0px; 393 --text-boxes-shadow-blur-radius: 0px; 394 395 --buttons-radius: 0px; 396 --buttons-radius-outset: 0px; 397 --buttons-border-width: 1px; 398 --buttons-border-opacity: 1.0; 399 --buttons-shadow-opacity: 0.0; 400 --buttons-shadow-visible: 0; 401 --buttons-shadow-horizontal-offset: 0px; 402 --buttons-shadow-vertical-offset: 0px; 403 --buttons-shadow-blur-radius: 0px; 404 --buttons-border-offset: 0px; 405 406 --inputs-radius: 0px; 407 --inputs-border-width: 1px; 408 --inputs-border-opacity: 0.55; 409 --inputs-shadow-opacity: 0.0; 410 --inputs-shadow-horizontal-offset: 0px; 411 --inputs-margin-offset: 0px; 412 --inputs-shadow-vertical-offset: 4px; 413 --inputs-shadow-blur-radius: 5px; 414 --inputs-radius-outset: 0px; 415 416 --variant-pills-radius: 0px; 417 --variant-pills-border-width: 1px; 418 --variant-pills-border-opacity: 1.0; 419 --variant-pills-shadow-opacity: 0.0; 420 --variant-pills-shadow-horizontal-offset: 0px; 421 --variant-pills-shadow-vertical-offset: 0px; 422 --variant-pills-shadow-blur-radius: 0px; 423 } 424 425 *, 426 *::before, 427 *::after { 428 box-sizing: inherit; 429 } 430 431 html { 432 box-sizing: border-box; 433 font-size: calc(var(--font-body-scale) * 62.5%); 434 height: 100%; 435 } 436 437 body { 438 display: grid; 439 grid-template-rows: auto auto 1fr auto; 440 grid-template-columns: 100%; 441 min-height: 100%; 442 margin: 0; 443 font-size: 1.5rem; 444 letter-spacing: 0.06rem; 445 line-height: calc(1 + 0.8 / var(--font-body-scale)); 446 font-family: var(--font-body-family); 447 font-style: var(--font-body-style); 448 font-weight: var(--font-body-weight); 449 } 450 451 @media screen and (min-width: 750px) { 452 body { 453 font-size: 1.6rem; 454 } 455 } 456 </style> 457 458 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/base.css?v=24462816791124504531788989887" rel="stylesheet" type="text/css" media="all" /> 459 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/theme-styles.css?v=88728442949448762391788989891" rel="stylesheet" type="text/css" media="all" /> 460 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/custom-styles.css?v=98709957772949206621788989890" rel="stylesheet" type="text/css" media="all" /> 461 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/tea-tiers.css?v=106134650822621777471789185680" rel="stylesheet" type="text/css" media="all" /> 462 463<link href="//doctorstolberg.com/cdn/shop/t/46/assets/tea-cart.css?v=99160012142549239841788989886" rel="stylesheet" type="text/css" media="all" />
464<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-cart-model.js?v=123209634812599222751788989890" defer></script>
vendor: 1 bytes, line 464
464
465<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-cart-session.js?v=174822965382877193961789179442" defer></script>
vendor: 1 bytes, line 465
465
466<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-cart.js?v=86826212516521858161789175039" defer></script>
466 467 468<link 469 rel="stylesheet" 470 href="//doctorstolberg.com/cdn/shop/t/46/assets/component-predictive-search.css?v=118923337488134913561788989888" 471 media="print" 472 onload="this.media='all'" 473 >
473<script> 474 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 475 if (Shopify.designMode) { 476 document.documentElement.classList.add('shopify-design-mode'); 477 } 478 </script>
478 479 480 <meta name="google-site-verification" content="gqXOtL9yuDfv0C51zvEyIyS-9dwSzL1I5eG-1m-ukGo" /><!-- BEGIN app block: shopify://apps/rebuy-personalization-engine/blocks/rebuy-global-embed/a26ae9b9-933b-40bf-bbc6-bf1220bbc4dc -->
481<script> 482 window.Rebuy = window.Rebuy || {}; 483 window.Rebuy.customer = window.Rebuy.customer || {}; 484 485 window.Rebuy.market = window.Rebuy.market || {}; 486 487 window.Rebuy.market.country = "US"; 488 489 490 window.Rebuy.market.locale = "en"; 491 492</script>
492 493 494 495 496 497 498<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
499<script type="text/javascript"> 500 (function (c, l, a, r, i, t, y) { 501 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 502 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify"; 503 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 504 505 c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => { 506 if (error) { 507 console.error("Error loading Shopify features:", error); 508 return; 509 } 510 511 c[a]('consentv2', { 512 ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied", 513 analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied", 514 source: 101, 515 }); 516 }); 517 518 l.addEventListener("visitorConsentCollected", function (e) { 519 c[a]('consentv2', { 520 ad_Storage: e.detail.marketingAllowed ? "granted" : "denied", 521 analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied", 522 source: 101, 523 }); 524 }); 525 })(window, document, "clarity", "script", "yk3rtg0nx1"); 526</script>
526 527 528 529 530<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 531 532 533 534 535 536 537 538 539 540 541 542 543
543<script async src="https://static.klaviyo.com/onsite/js/YzFzLa/klaviyo.js?company_id=YzFzLa"></script>
543 544
544<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>
544 545 546 547
547<script id="viewed_product"> 548 if (item == null) { 549 var _learnq = _learnq || []; 550 551 var MetafieldReviews = null 552 var MetafieldYotpoRating = null 553 var MetafieldYotpoCount = null 554 var MetafieldLooxRating = null 555 var MetafieldLooxCount = null 556 var okendoProduct = null 557 var okendoProductReviewCount = null 558 var okendoProductReviewAverageValue = null 559 try { 560 // The following fields are used for Customer Hub recently viewed in order to add reviews. 561 // This information is not part of __kla_viewed. Instead, it is part of __kla_viewed_reviewed_items 562 MetafieldReviews = {"rating":{"scale_min":"1.0","scale_max":"5.0","value":"4.88"},"rating_count":188}; 563 MetafieldYotpoRating = null 564 MetafieldYotpoCount = null 565 MetafieldLooxRating = null 566 MetafieldLooxCount = null 567 568 okendoProduct = null 569 // If the okendo metafield is not legacy, it will error, which then requires the new json formatted data 570 if (okendoProduct && 'error' in okendoProduct) { 571 okendoProduct = null 572 } 573 okendoProductReviewCount = okendoProduct ? okendoProduct.reviewCount : null 574 okendoProductReviewAverageValue = okendoProduct ? okendoProduct.reviewAverageValue : null 575 } catch (error) { 576 console.error('Error in Klaviyo onsite reviews tracking:', error); 577 } 578 579 var item = { 580 Name: "Rest + Digest Tea", 581 ProductID: 8254808785129, 582 Categories: ["Rest + Digest Tea","Shop All","Shop All (old)"], 583 ImageURL: "https://doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box_grande.jpg?v=1749183025", 584 URL: "https://doctorstolberg.com/products/rest-digest-tea", 585 Brand: "DR. STOLBERG'S HERBAL TEA", 586 Price: "$45.00", 587 Value: "45.00", 588 CompareAtPrice: "$0.00" 589 }; 590 _learnq.push(['track', 'Viewed Product', item]); 591 _learnq.push(['trackViewedItem', { 592 Title: item.Name, 593 ItemId: item.ProductID, 594 Categories: item.Categories, 595 ImageUrl: item.ImageURL, 596 Url: item.URL, 597 Metadata: { 598 Brand: item.Brand, 599 Price: item.Price, 600 Value: item.Value, 601 CompareAtPrice: item.CompareAtPrice 602 }, 603 metafields:{ 604 reviews: MetafieldReviews, 605 yotpo:{ 606 rating: MetafieldYotpoRating, 607 count: MetafieldYotpoCount, 608 }, 609 loox:{ 610 rating: MetafieldLooxRating, 611 count: MetafieldLooxCount, 612 }, 613 okendo: { 614 rating: okendoProductReviewAverageValue, 615 count: okendoProductReviewCount, 616 } 617 } 618 }]); 619 } 620 </script>
620 621 622 623 624 625 626
626<script> 627 window.klaviyoReviewsProductDesignMode = false 628 </script>
628 629 630 631 632 <!-- BEGIN app snippet: customer-hub-data -->
632<script> 633 if (!window.customerHub) { 634 window.customerHub = {}; 635 } 636 window.customerHub.storefrontRoutes = { 637 login: "https://doctorstolberg.com/customer_authentication/redirect?locale=en®ion_country=US?return_url=%2F%23k-hub", 638 register: "https://account.doctorstolberg.com?locale=en®ion_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkcnN0b2xiZXJnLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5MjA0MzM0NywibmJmIjoxNzkxNDM4NTQ3fQ.Nq1TGEaRLmi_3InARcO1uIroYmqAM_DmKfnvWduK0i4?return_url=%2F%23k-hub", 639 logout: "/account/logout", 640 profile: "/account", 641 addresses: "/account/addresses", 642 }; 643 644 window.customerHub.userId = null; 645 646 window.customerHub.storeDomain = "drstolberg.myshopify.com"; 647 648 649 window.customerHub.activeProduct = { 650 name: "Rest + Digest Tea", 651 category: null, 652 imageUrl: "https://doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box_grande.jpg?v=1749183025", 653 id: "8254808785129", 654 link: "https://doctorstolberg.com/products/rest-digest-tea", 655 options: [ 656 657 { 658 name: "Title", 659 values: [ 660 661 662 663 { 664 name: "Default Title", 665 colorHex: null, 666 swatchImageUrl: null 667 } 668 669 ] 670 } 671 672 ], 673 variants: [ 674 675 { 676 id: "50889447407849", 677 selectedOptions: [ 678 679 680 { 681 name: "Title", 682 value: "Default Title" 683 } 684 685 ], 686 687 imageUrl: null, 688 689 price: "4500", 690 currency: "USD", 691 availableForSale: true, 692 title: "Default Title", 693 }, 694 695 ], 696 };
697 window.customerHub.activeProduct.variants.forEach((variant) => { 698 699 variant.price = `${variant.price.slice(0, -2)}.${variant.price.slice(-2)}`; 700 }); 701 702 703 704 window.customerHub.storeLocale = { 705 currentLanguage: 'en', 706 currentCountry: 'US', 707 availableLanguages: [ 708 709 { 710 iso_code: 'en', 711 endonym_name: 'English' 712 } 713 714 ], 715 availableCountries: [ 716 717 { 718 iso_code: 'US', 719 name: 'United States', 720 currency_code: 'USD' 721 } 722 723 ] 724 }; 725 726</script>
726 727<!-- END app snippet --> 728 729 730 731 732 733 734 735<!-- END app block --><link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
736<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: 63675138281,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 736
736
737<script> 738 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 739</script>
vendor: 1 bytes, line 739
739
740<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}
740).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: 63675138281,storefrontBaseUrl: "https://doctorstolberg.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://doctorstolberg.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"2550366441","configuration":"{\"projectId\":\"yk3rtg0nx1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]}
740,"dataSharingState":"unrestricted"},{"id":"1964835049","configuration":"{\"shop\":\"drstolberg.myshopify.com\", \"shopliftUrl\":\"https:\/\/events.shoplift.ai\/api\/events\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"dabcda9558be25394b12ce3ce899568b","type":"APP","apiClientId":7521861633,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1942782185","configuration":"{\"store_id\":\"170548\",\"environment\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"10c4f173702937db6fa4bf871600cafd","type":"APP","apiClientId":294517,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1731657961","configuration":"{\"accountID\":\"YzFzLa\",\"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":"1229947113","configuration":"{\"pixelCode\":\"D2F75HBC77UA70EEBFR0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"799572201","configuration":"{\n \"accountID\":\"drstolberg.myshopify.com\",\n \"environment\":\"production\",\n \"apiURL\":\"https:\/\/api.quizkitapp.com\"\n }","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8b4008b7d9cf69ef6aab7ff3dbda8179","type":"APP","apiClientId":4291957,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"466649321","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\",\\\"GT-NBPN83X\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/lr3_CNab74YZEIKj5dQq\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/dJb5CNCb74YZEIKj5dQq\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-X1N09K3PEP\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/5P5HCM2b74YZEIKj5dQq\\\",\\\"MC-FFJDWDL5E8\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-X1N09K3PEP\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/HJlUCMeb74YZEIKj5dQq\\\",\\\"MC-FFJDWDL5E8\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/vBlICMqb74YZEIKj5dQq\\\",\\\"MC-FFJDWDL5E8\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-X1N09K3PEP\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/_4HVCNmb74YZEIKj5dQq\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-X1N09K3PEP\\\",\\\"AW-11452109186\\\/s1obCNOb74YZEIKj5dQq\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-X1N09K3PEP\\\"}],\\\"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":"225411305","configuration":"{\"pixel_id\":\"453268350107422\",\"pixel_type\":\"facebook_pixel\"}","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":"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":"DOCTOR STOLBERG","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"drstolberg.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/doctorstolberg.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":45.0,"currencyCode":"USD"},"product":{"title":"Rest + Digest Tea","vendor":"DR. STOLBERG'S HERBAL TEA","id":"8254808785129","untranslatedTitle":"Rest + Digest Tea","url":"\/products\/rest-digest-tea","type":""},"id":"50889447407849","image":{"src":"\/\/doctorstolberg.com\/cdn\/shop\/files\/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025"},"sku":"TEA-REST-ORG-30-KIT-EA1","title":"Default Title","untranslatedTitle":"Default Title"}],"products":[{"id":"8254808785129","handle":"rest-digest-tea","isCollective":null,"title":"Rest + Digest Tea","type":null,"untranslatedTitle":"Rest + Digest Tea","url":"\/products\/rest-digest-tea","vendor":"DR. STOLBERG'S HERBAL TEA","remoteShopId":null,"variants":[{"id":"50889447407849","image":{"src":"\/\/doctorstolberg.com\/cdn\/shop\/files\/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025"},"price":{"amount":45.0,"currencyCode":"USD"},"sku":"TEA-REST-ORG-30-KIT-EA1","title":"Default Title","untranslatedTitle":"Default Title"}]}],"purchasingCompany":null},},"https://doctorstolberg.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"162480455913","themePublished":"true","eventMetadataId":"a93a2b22-786b-49df-b161-20bfa4f0e932","pageType":"product","resourceId":"8254808785129","shopId":"63675138281","storefrontBaseUrl":"https:\/\/doctorstolberg.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":45.0,\"currencyCode\":\"USD\"},\"product\":{\"title\":\"Rest + Digest Tea\",\"vendor\":\"DR. STOLBERG'S HERBAL TEA\",\"id\":\"8254808785129\",\"untranslatedTitle\":\"Rest + Digest Tea\",\"url\":\"\/products\/rest-digest-tea\",\"type\":\"\"},\"id\":\"50889447407849\",\"image\":{\"src\":\"\/\/doctorstolberg.com\/cdn\/shop\/files\/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025\"},\"sku\":\"TEA-REST-ORG-30-KIT-EA1\",\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});})();</script>
740<script> 741 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 742 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 743 window.ShopifyAnalytics.meta.currency = 'USD'; 744 var meta = {"product":{"id":8254808785129,"gid":"gid:\/\/shopify\/Product\/8254808785129","vendor":"DR. STOLBERG'S HERBAL TEA","type":"","handle":"rest-digest-tea","variants":[{"id":50889447407849,"price":4500,"name":"Rest + Digest Tea","public_title":null,"sku":"TEA-REST-ORG-30-KIT-EA1"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8254808785129,"requestId":"51418050-0a24-43f9-a089-b3569cadc7d8-1791438547"}}; 745 for (var attr in meta) { 746 window.ShopifyAnalytics.meta[attr] = meta[attr]; 747 } 748</script>
vendor: 1 bytes, line 748
748
749<script class="analytics"> 750 (function () { 751 var customDocumentWrite = function(content) { 752 var jquery = null; 753 754 if (window.jQuery) { 755 jquery = window.jQuery; 756 } else if (window.Checkout && window.Checkout.$) { 757 jquery = window.Checkout.$; 758 } 759 760 if (jquery) { 761 jquery('body').append(content); 762 } 763 }; 764 765 var hasLoggedConversion = function(token) { 766 if (token) { 767 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 768 } 769 return false; 770 } 771 772 var setCookieIfConversion = function(token) { 773 if (token) { 774 var twoMonthsFromNow = new Date(Date.now()); 775 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 776 777 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 778 } 779 } 780 781 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 782 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 783 if (trekkie.integrations) { 784 return; 785 } 786 trekkie.methods = [ 787 'identify', 788 'page', 789 'ready', 790 'track', 791 'trackForm', 792 'trackLink' 793 ]; 794 trekkie.factory = function(method) { 795 return function() { 796 var args = Array.prototype.slice.call(arguments); 797 args.unshift(method); 798 trekkie.push(args); 799 if (method == 'track' || method == 'page') { 800 var pageUrl; 801 try { 802 pageUrl = window.location.href; 803 } catch (e) {} 804 var pageReferrer; 805 try { 806 pageReferrer = document.referrer; 807 } catch (e) {} 808 try { 809 if (window.__TREKKIE_SHIM_QUEUE == null) { 810 window.__TREKKIE_SHIM_QUEUE = []; 811 } 812 window.__TREKKIE_SHIM_QUEUE.push({ 813 from: 'trekkie-stub', 814 method: method, 815 args: args.slice(1), 816 pageContext: { 817 url: pageUrl, 818 referrer: pageReferrer 819 } 820 }); 821 } catch (e) { 822 // no-op 823 } 824 } 825 return trekkie; 826 }; 827 }; 828 for (var i = 0; i < trekkie.methods.length; i++) { 829 var key = trekkie.methods[i]; 830 trekkie[key] = trekkie.factory(key); 831 } 832 trekkie.load = function(config) { 833 trekkie.config = config || {}; 834 trekkie.config.initialDocumentCookie = document.cookie; 835 var first = document.getElementsByTagName('script')[0]; 836var script = document.createElement('script'); 837script.type = 'text/javascript'; 838script.onerror = function(e) { 839 var scriptFallback = document.createElement('script'); 840 scriptFallback.type = 'text/javascript'; 841 scriptFallback.onerror = function(error) { 842 var Monorail = { 843 produce: function produce(monorailDomain, schemaId, payload) { 844 var currentMs = new Date().getTime(); 845 var event = { 846 schema_id: schemaId, 847 payload: payload, 848 metadata: { 849 event_created_at_ms: currentMs, 850 event_sent_at_ms: currentMs 851 } 852 }; 853 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 854 }, 855 sendRequest: function sendRequest(endpointUrl, payload) { 856 // Try the sendBeacon API 857 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 858 var blobData = new window.Blob([payload], { 859 type: 'text/plain' 860 }); 861 862 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 863 return true; 864 } // sendBeacon was not successful 865 866 } // XHR beacon 867 868 var xhr = new XMLHttpRequest(); 869 870 try { 871 xhr.open('POST', endpointUrl); 872 xhr.setRequestHeader('Content-Type', 'text/plain'); 873 xhr.send(payload); 874 } catch (e) { 875 console.log(e); 876 } 877 878 return false; 879 }, 880 isIos12: function isIos12() { 881 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 882 } 883 }; 884 Monorail.produce('monorail-edge.shopifysvc.com', 885 'trekkie_storefront_load_errors/1.1', 886 {shop_id: 63675138281, 887 theme_id: 162480455913, 888 app_name: "storefront", 889 context_url: window.location.href, 890 source_url: "//doctorstolberg.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 891 892 }; 893 scriptFallback.async = true; 894 scriptFallback.src = '//doctorstolberg.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 895 first.parentNode.insertBefore(scriptFallback, first); 896}; 897script.async = true; 898script.src = '//doctorstolberg.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 899first.parentNode.insertBefore(script, first); 900 901 }; 902 trekkie.load( 903 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":63675138281,"isMerchantRequest":null,"themeId":162480455913,"themeCityHash":"6479276712592554555","contentLanguage":"en","currency":"USD","eventMetadataId":"a93a2b22-786b-49df-b161-20bfa4f0e932"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 904 ); 905 906 var loaded = false;
907 trekkie.ready(function() { 908 if (loaded) return; 909 loaded = true; 910 911 window.ShopifyAnalytics.lib = window.trekkie; 912 913 var originalDocumentWrite = document.write; 914 document.write = customDocumentWrite; 915 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 916 document.write = originalDocumentWrite; 917 918 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 919 var token = match? match[1]: undefined; 920 if (!hasLoggedConversion(token)) { 921 setCookieIfConversion(token); 922 window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"USD","variantId":50889447407849,"productId":8254808785129,"productGid":"gid:\/\/shopify\/Product\/8254808785129","name":"Rest + Digest Tea","price":"45.00","sku":"TEA-REST-ORG-30-KIT-EA1","brand":"DR. STOLBERG'S HERBAL TEA","variant":null,"category":"","nonInteraction":true,"remote":false,"available":true},undefined,undefined,{"shopifyEmitted":true}); 923 } 924 }); 925 926 window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8254808785129,"requestId":"51418050-0a24-43f9-a089-b3569cadc7d8-1791438547","shopifyEmitted":true}); 927 928 var eventsListenerScript = document.createElement('script'); 929 eventsListenerScript.async = true; 930 eventsListenerScript.src = "//doctorstolberg.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 931 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 932})();</script>
vendor: 1 bytes, line 932
932
933<script 934 defer 935 src="https://doctorstolberg.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.0.min.js" 936 data-application="storefront-renderer" 937 data-shop-id="63675138281" 938 data-render-region="gcp-us-central1" 939 data-page-type="product" 940 data-theme-instance-id="162480455913" 941 data-theme-name="Esencia" 942 data-theme-version="2.0.1" 943 data-monorail-region="shop_domain" 944 data-resource-timing-sampling-rate="10" 945 data-shs="true" 946 data-shs-beacon="true" 947 data-shs-export-with-fetch="true" 948 data-shs-logs-sample-rate="1" 949 data-shs-beacon-endpoint="https://doctorstolberg.com/api/collect" 950></script>
950 951<meta name="shopify-y" content="94149487-6dbc-48e3-b24e-eff0c61f189c" data-expiration="1822996147000"><meta name="shopify-s" content="2c97aefe-5075-45d7-891b-247c11fdb736" data-expiration="1791440347000"><meta name="new-cookie-storage-activated" content="t"> 952</head> 953 954 <body class="gradient template-product template-name--tea-v3 title-rest-digest-tea animate--hover-default"> 955 <a class="skip-to-content-link button visually-hidden" href="#MainContent"> 956 Skip to content 957 </a> 958 959<link href="//doctorstolberg.com/cdn/shop/t/46/assets/quantity-popover.css?v=153075665213740339621788989890" rel="stylesheet" type="text/css" media="all" /> 960<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-card.css?v=95427162360506547451788989887" rel="stylesheet" type="text/css" media="all" /> 961
962<script src="//doctorstolberg.com/cdn/shop/t/46/assets/cart.js?v=56933888273975671431788989889" defer="defer"></script>
vendor: 1 bytes, line 962
962
963<script src="//doctorstolberg.com/cdn/shop/t/46/assets/cart-subscription-toggle.js?v=154853256210060804431788989888" defer="defer"></script>
vendor: 1 bytes, line 963
963
964<script src="//doctorstolberg.com/cdn/shop/t/46/assets/quantity-popover.js?v=19455713230017000861788989890" defer="defer"></script>
964 965 966<style> 967 .drawer { 968 visibility: hidden; 969 } 970</style> 971 972<cart-drawer class="drawer is-empty"> 973 <div id="CartDrawer" class="cart-drawer"> 974 <div id="CartDrawer-Overlay" class="cart-drawer__overlay"></div> 975 <div 976 class="drawer__inner gradient color-background-2" 977 role="dialog" 978 aria-modal="true" 979 aria-label="Your cart" 980 tabindex="-1" 981 ><div class="drawer__inner-empty"> 982 <div class="cart-drawer__warnings center"> 983 <div class="cart-drawer__empty-content"> 984 <h2 class="cart__empty-text">Your cart is empty</h2> 985 <button 986 class="drawer__close" 987 type="button" 988 onclick="this.closest('cart-drawer').close()" 989 aria-label="Close" 990 > 991 <svg 992 xmlns="http://www.w3.org/2000/svg" 993 aria-hidden="true" 994 focusable="false" 995 class="icon icon-close" 996 fill="none" 997 viewBox="0 0 18 17" 998> 999 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 1000</svg> 1001 1002 </button> 1003 <a href="/collections/shop-all" class="button"> 1004 Continue shopping 1005 </a><p class="cart__login-title h3">Have an account?</p> 1006 <p class="cart__login-paragraph"> 1007 <a href="https://doctorstolberg.com/customer_authentication/redirect?locale=en®ion_country=US" class="link underlined-link">Log in</a> to check out faster. 1008 </p></div> 1009 </div></div><div class="drawer__header"> 1010 <h2 class="drawer__heading">Your cart</h2> 1011 <button 1012 class="drawer__close" 1013 type="button" 1014 onclick="this.closest('cart-drawer').close()" 1015 aria-label="Close" 1016 > 1017 <svg 1018 xmlns="http://www.w3.org/2000/svg" 1019 aria-hidden="true" 1020 focusable="false" 1021 class="icon icon-close" 1022 fill="none" 1023 viewBox="0 0 18 17" 1024> 1025 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 1026</svg> 1027 1028 </button> 1029 </div> 1030 <cart-drawer-items 1031 1032 class=" is-empty" 1033 1034 > 1035 <form 1036 action="/cart" 1037 id="CartDrawer-Form" 1038 class="cart__contents cart-drawer__form" 1039 method="post" 1040 > 1041 <div id="CartDrawer-CartItems" class="drawer__contents js-contents"><p id="CartDrawer-LiveRegionText" class="visually-hidden" role="status"></p> 1042 <p id="CartDrawer-LineItemStatus" class="visually-hidden" aria-hidden="true" role="status"> 1043 Loading... 1044 </p> 1045 </div> 1046 <div id="CartDrawer-CartErrors" role="alert"></div> 1047 </form> 1048 </cart-drawer-items> 1049 <div class="drawer__footer"><!-- Start blocks --> 1050 <!-- Subtotals --> 1051 1052 <div class="cart-drawer__footer" > 1053 <div></div> 1054 1055 <div class="totals" role="status"> 1056 <h2 class="totals__total">Estimated total</h2> 1057 <p class="totals__total-value">$0.00 USD</p> 1058 </div> 1059 1060 <small class="tax-note caption-large rte">Taxes, discounts and <a href="/policies/shipping-policy">shipping</a> calculated at checkout 1061</small> 1062 </div> 1063 1064 <!-- CTAs --> 1065 1066 <div class="cart__ctas" > 1067 <noscript> 1068 <button type="submit" class="cart__update-button button button--secondary" form="CartDrawer-Form"> 1069 Update 1070 </button> 1071 </noscript> 1072 1073 <button 1074 type="submit" 1075 id="CartDrawer-Checkout" 1076 class="cart__checkout-button button" 1077 name="checkout" 1078 form="CartDrawer-Form" 1079 1080 disabled 1081 1082 > 1083 Check out 1084 </button> 1085 </div> 1086 </div> 1087 </div> 1088 </div> 1089</cart-drawer> 1090
1091<script> 1092 document.addEventListener('DOMContentLoaded', function () { 1093 function isIE() { 1094 const ua = window.navigator.userAgent; 1095 const msie = ua.indexOf('MSIE '); 1096 const trident = ua.indexOf('Trident/'); 1097 1098 return msie > 0 || trident > 0; 1099 } 1100 1101 if (!isIE()) return; 1102 const cartSubmitInput = document.createElement('input'); 1103 cartSubmitInput.setAttribute('name', 'checkout'); 1104 cartSubmitInput.setAttribute('type', 'hidden'); 1105 document.querySelector('#cart').appendChild(cartSubmitInput); 1106 document.querySelector('#checkout').addEventListener('click', function (event) { 1107 document.querySelector('#cart').submit(); 1108 }); 1109 }); 1110</script>
1110 1111<!-- BEGIN sections: header-group --> 1112<div id="shopify-section-sections--22802679136489__announcement-bar" class="shopify-section shopify-section-group-header-group announcement-bar-section"><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-slideshow.css?v=107725913939919748051788989887" rel="stylesheet" type="text/css" media="all" /> 1113<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-slider.css?v=142503135496229589681788989887" rel="stylesheet" type="text/css" media="all" /> 1114 1115<style> 1116 .announcement-bar-section .announcement--schedule-controlled:not(.is-schedule-visible) { 1117 display: none !important; 1118 } 1119 1120 .announcement-bar-slider--no-controls .slider-button { 1121 display: none; 1122 } 1123 1124 .announcement-bar-slider--single { 1125 width: 100% !important; 1126 } 1127 1128 .announcement-bar-slider--single .slider { 1129 scroll-snap-type: none; 1130 } 1131</style> 1132 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-list-social.css?v=35792976012981934991788989893" rel="stylesheet" type="text/css" media="all" /> 1133 1134 1135<div 1136 class="utility-bar color-inverse gradient utility-bar--bottom-border" 1137 1138> 1139 <div class="page-width utility-bar__grid"><slideshow-component 1140 class="announcement-bar" 1141 role="region" 1142 aria-roledescription="Carousel" 1143 aria-label="Announcement bar" 1144 > 1145 <div class="announcement-bar-slider slider-buttons"> 1146 <button 1147 type="button" 1148 class="slider-button slider-button--prev" 1149 name="previous" 1150 aria-label="Previous announcement" 1151 aria-controls="Slider-sections--22802679136489__announcement-bar" 1152 > 1153 <svg aria-hidden="true" focusable="false" class="icon icon-caret" viewBox="0 0 10 6"> 1154 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"> 1155</svg> 1156 1157 </button> 1158 <div 1159 class="grid grid--1-col slider slider--everywhere" 1160 id="Slider-sections--22802679136489__announcement-bar" 1161 aria-live="polite" 1162 aria-atomic="true" 1163 data-autoplay="true" 1164 data-speed="4" 1165 ><div 1166 class="slideshow__slide slider__slide grid__item grid--1-col announcement--schedule-controlled" 1167 id="Slide-sections--22802679136489__announcement-bar-1" 1168 1169 data-schedule-start="" 1170 data-schedule-end="2026-06-09T23:59:59" 1171 1172 1173 role="group" 1174 aria-roledescription="Announcement" 1175 aria-label="1 of 6" 1176 tabindex="-1" 1177 > 1178 <div 1179 class="announcement-bar__announcement" 1180 role="region" 1181 aria-label="Announcement" 1182 1183 ><p class="announcement-bar__message h5"> 1184 <span>SUBSCRIBE + SAVE 10% ON EVERY ORDER.</span></p></div> 1185 </div><div 1186 class="slideshow__slide slider__slide grid__item grid--1-col announcement--schedule-controlled" 1187 id="Slide-sections--22802679136489__announcement-bar-2" 1188 1189 data-schedule-start="" 1190 data-schedule-end="2026-06-09T23:59:59" 1191 1192 1193 role="group" 1194 aria-roledescription="Announcement" 1195 aria-label="2 of 6" 1196 tabindex="-1" 1197 > 1198 <div 1199 class="announcement-bar__announcement" 1200 role="region" 1201 aria-label="Announcement" 1202 1203 ><p class="announcement-bar__message h5"> 1204 <span>FREE DOMESTIC SHIPPING ON ORDERS OVER $90.</span></p></div> 1205 </div><div 1206 class="slideshow__slide slider__slide grid__item grid--1-col announcement--schedule-controlled" 1207 id="Slide-sections--22802679136489__announcement-bar-3" 1208 1209 data-schedule-start="2026-06-10T00:00:00" 1210 data-schedule-end="2026-06-10T23:59:59" 1211 1212 1213 role="group" 1214 aria-roledescription="Announcement" 1215 aria-label="3 of 6" 1216 tabindex="-1" 1217 > 1218 <div 1219 class="announcement-bar__announcement" 1220 role="region" 1221 aria-label="Announcement" 1222 1223 ><p class="announcement-bar__message h5">
1224 <span>1 YEAR ANNIVERSARY SALE</span></p></div> 1225 </div><div 1226 class="slideshow__slide slider__slide grid__item grid--1-col announcement--schedule-controlled" 1227 id="Slide-sections--22802679136489__announcement-bar-4" 1228 1229 data-schedule-start="2026-06-10T00:00:00" 1230 data-schedule-end="2026-06-10T23:59:59" 1231 1232 1233 role="group" 1234 aria-roledescription="Announcement" 1235 aria-label="4 of 6" 1236 tabindex="-1" 1237 > 1238 <div 1239 class="announcement-bar__announcement" 1240 role="region" 1241 aria-label="Announcement" 1242 1243 ><p class="announcement-bar__message h5"> 1244 <span>20% OFF SITEWIDE</span></p></div> 1245 </div><div 1246 class="slideshow__slide slider__slide grid__item grid--1-col announcement--schedule-controlled" 1247 id="Slide-sections--22802679136489__announcement-bar-5" 1248 1249 data-schedule-start="2026-06-11T00:00:00" 1250 data-schedule-end="" 1251 1252 1253 role="group" 1254 aria-roledescription="Announcement" 1255 aria-label="5 of 6" 1256 tabindex="-1" 1257 > 1258 <div 1259 class="announcement-bar__announcement" 1260 role="region" 1261 aria-label="Announcement" 1262 1263 ><p class="announcement-bar__message h5"> 1264 <span>SUBSCRIBE + SAVE 10% ON EVERY ORDER.</span></p></div> 1265 </div><div 1266 class="slideshow__slide slider__slide grid__item grid--1-col announcement--schedule-controlled" 1267 id="Slide-sections--22802679136489__announcement-bar-6" 1268 1269 data-schedule-start="2026-06-11T00:00:00" 1270 data-schedule-end="" 1271 1272 1273 role="group" 1274 aria-roledescription="Announcement" 1275 aria-label="6 of 6" 1276 tabindex="-1" 1277 > 1278 <div 1279 class="announcement-bar__announcement" 1280 role="region" 1281 aria-label="Announcement" 1282 1283 ><p class="announcement-bar__message h5"> 1284 <span>FREE DOMESTIC SHIPPING ON ORDERS OVER $90.</span></p></div> 1285 </div></div> 1286 <button 1287 type="button" 1288 class="slider-button slider-button--next" 1289 name="next" 1290 aria-label="Next announcement" 1291 aria-controls="Slider-sections--22802679136489__announcement-bar" 1292 > 1293 <svg aria-hidden="true" focusable="false" class="icon icon-caret" viewBox="0 0 10 6"> 1294 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"> 1295</svg> 1296 1297 </button> 1298 </div> 1299 </slideshow-component><div class="localization-wrapper"> 1300</div> 1301 </div> 1302</div> 1303
1304<script src="//doctorstolberg.com/cdn/shop/t/46/assets/announcement-schedule.js?v=119065264913450192661788989887"></script>
1304 1305 1306 1307</div><div id="shopify-section-sections--22802679136489__header" class="shopify-section shopify-section-group-header-group section-header"><link rel="stylesheet" href="//doctorstolberg.com/cdn/shop/t/46/assets/component-list-menu.css?v=151968516119678728991788989892" media="print" onload="this.media='all'"> 1308<link rel="stylesheet" href="//doctorstolberg.com/cdn/shop/t/46/assets/component-search.css?v=165164710990765432851788989890" media="print" onload="this.media='all'"> 1309<link rel="stylesheet" href="//doctorstolberg.com/cdn/shop/t/46/assets/component-menu-drawer.css?v=31331429079022630271788989895" media="print" onload="this.media='all'"> 1310<link rel="stylesheet" href="//doctorstolberg.com/cdn/shop/t/46/assets/component-cart-notification.css?v=54116361853792938221788989889" media="print" onload="this.media='all'"> 1311<link rel="stylesheet" href="//doctorstolberg.com/cdn/shop/t/46/assets/component-cart-items.css?v=145340746371385151771788989888" media="print" onload="this.media='all'"> 1312 1313<link rel="stylesheet" href="//doctorstolberg.com/cdn/shop/t/46/assets/component-price.css?v=70172745017360139101788989889" media="print" onload="this.media='all'"><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-cart-drawer.css?v=32734645360765062401788989888" rel="stylesheet" type="text/css" media="all" /> 1314 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-cart.css?v=181291337967238571831788989889" rel="stylesheet" type="text/css" media="all" /> 1315 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-totals.css?v=15906652033866631521788989887" rel="stylesheet" type="text/css" media="all" /> 1316 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-price.css?v=70172745017360139101788989889" rel="stylesheet" type="text/css" media="all" /> 1317 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-discounts.css?v=152760482443307489271788989886" rel="stylesheet" type="text/css" media="all" /> 1318<noscript><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-list-menu.css?v=151968516119678728991788989892" rel="stylesheet" type="text/css" media="all" /></noscript> 1319<noscript><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-search.css?v=165164710990765432851788989890" rel="stylesheet" type="text/css" media="all" /></noscript> 1320<noscript><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-menu-drawer.css?v=31331429079022630271788989895" rel="stylesheet" type="text/css" media="all" /></noscript> 1321<noscript><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-cart-notification.css?v=54116361853792938221788989889" rel="stylesheet" type="text/css" media="all" /></noscript> 1322<noscript><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-cart-items.css?v=145340746371385151771788989888" rel="stylesheet" type="text/css" media="all" /></noscript> 1323 1324 1325 1326 1327 1328<style> 1329 1330 1331 1332 header-drawer { 1333 justify-self: start; 1334 margin-left: -1.2rem; 1335 }.menu-drawer-container { 1336 display: flex; 1337 } 1338 1339 .list-menu { 1340 list-style: none; 1341 padding: 0; 1342 margin: 0; 1343 } 1344 1345 .list-menu--inline { 1346 display: inline-flex; 1347 flex-wrap: wrap; 1348 } 1349 1350 summary.list-menu__item { 1351 padding-right: 2.7rem; 1352 } 1353 1354 .list-menu__item { 1355 display: flex; 1356 align-items: center; 1357 line-height: calc(1 + 0.3 / var(--font-body-scale)); 1358 } 1359 1360 .list-menu__item--link { 1361 text-decoration: none; 1362 padding-bottom: 1rem; 1363 padding-top: 1rem; 1364 line-height: calc(1 + 0.8 / var(--font-body-scale)); 1365 } 1366 1367 @media screen and (min-width: 750px) { 1368 .list-menu__item--link { 1369 padding-bottom: 0.5rem; 1370 padding-top: 0.5rem; 1371 } 1372 } 1373</style><style data-shopify>.header { 1374 padding: 2px 3rem 2px 3rem; 1375 } 1376 1377 .section-header { 1378 position: sticky; /* This is for fixing a Safari z-index issue. PR #2147 */ 1379 margin-bottom: 0px; 1380 } 1381 1382 @media screen and (min-width: 750px) { 1383 .section-header { 1384 margin-bottom: 0px; 1385 } 1386 } 1387 1388 @media screen and (min-width: 990px) { 1389 .header { 1390 padding-top: 4px; 1391 padding-bottom: 4px; 1392 } 1393 }</style>
1393<script src="//doctorstolberg.com/cdn/shop/t/46/assets/details-disclosure.js?v=13653116266235556501788989887" defer="defer"></script>
vendor: 1 bytes, line 1393
1393
1394<script src="//doctorstolberg.com/cdn/shop/t/46/assets/details-modal.js?v=25581673532751508451788989887" defer="defer"></script>
vendor: 1 bytes, line 1394
1394
1395<script src="//doctorstolberg.com/cdn/shop/t/46/assets/cart-notification.js?v=133508293167896966491788989888" defer="defer"></script>
vendor: 1 bytes, line 1395
1395
1396<script src="//doctorstolberg.com/cdn/shop/t/46/assets/search-form.js?v=133129549252120666541788989888" defer="defer"></script>
1396<script src="//doctorstolberg.com/cdn/shop/t/46/assets/cart-drawer.js?v=105077087914686398511788989888" defer="defer"></script>
1396<svg xmlns="http://www.w3.org/2000/svg" class="hidden"> 1397 <symbol id="icon-search" viewbox="0 0 18 19" fill="none"> 1398 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/> 1399 </symbol> 1400 1401 <symbol id="icon-reset" class="icon icon-close" fill="none" viewBox="0 0 18 18" stroke="currentColor"> 1402 <circle r="8.5" cy="9" cx="9" stroke-opacity="0.2"/> 1403 <path d="M6.82972 6.82915L1.17193 1.17097" stroke-linecap="round" stroke-linejoin="round" transform="translate(5 5)"/> 1404 <path d="M1.22896 6.88502L6.77288 1.11523" stroke-linecap="round" stroke-linejoin="round" transform="translate(5 5)"/> 1405 </symbol> 1406 1407 <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17"> 1408 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 1409 </symbol> 1410</svg><sticky-header data-sticky-type="on-scroll-up" class="header-wrapper color-background-2 gradient"><header class="header header--middle-center header--mobile-center page-width drawer-menu header--has-menu header--has-social header--has-account"> 1411 1412<header-drawer data-breakpoint="desktop"> 1413 <details id="Details-menu-drawer-container" class="menu-drawer-container"> 1414 <summary 1415 class="header__icon header__icon--menu header__icon--summary link focus-inset" 1416 aria-label="Menu" 1417 > 1418 <span> 1419 <svg 1420 xmlns="http://www.w3.org/2000/svg" 1421 aria-hidden="true" 1422 focusable="false" 1423 class="icon icon-hamburger" 1424 fill="none" 1425 viewBox="0 0 18 16" 1426> 1427 <path d="M1 .5a.5.5 0 100 1h15.71a.5.5 0 000-1H1zM.5 8a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1A.5.5 0 01.5 8zm0 7a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1a.5.5 0 01-.5-.5z" fill="currentColor"> 1428</svg> 1429 1430 <svg 1431 xmlns="http://www.w3.org/2000/svg" 1432 aria-hidden="true" 1433 focusable="false" 1434 class="icon icon-close" 1435 fill="none" 1436 viewBox="0 0 18 17" 1437> 1438 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 1439</svg> 1440 1441 </span> 1442 </summary> 1443 <div id="menu-drawer" class="gradient menu-drawer motion-reduce color-background-1"> 1444 <div class="menu-drawer__inner-container"> 1445 <div class="menu-drawer__navigation-container"> 1446 <nav class="menu-drawer__navigation"> 1447 <ul class="menu-drawer__menu has-submenu list-menu" role="list"><li><a 1448 id="HeaderDrawer-shop" 1449 href="/products/rest-digest-tea" 1450 class="menu-drawer__menu-item list-menu__item link link--text focus-inset menu-drawer__menu-item--active" 1451 1452 aria-current="page" 1453 1454 > 1455 Shop 1456 </a></li><li><a 1457 id="HeaderDrawer-about" 1458 href="/pages/about" 1459 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1460 1461 > 1462 About 1463 </a></li><li><a 1464 id="HeaderDrawer-well-being" 1465 href="https://drnataziazustolberg.substack.com/" 1466 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1467 1468 > 1469 Well Being 1470 </a></li><li><a 1471 id="HeaderDrawer-ask-doctor-stolberg" 1472 href="/pages/quiz" 1473 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1474 1475 > 1476 Ask Doctor Stolberg 1477 </a></li><li><a 1478 id="HeaderDrawer-stockists" 1479 href="/pages/store-locator" 1480 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1481 1482 > 1483 Stockists 1484 </a></li><li><a 1485 id="HeaderDrawer-login" 1486 href="/apps/account" 1487 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1488 1489 > 1490 Login 1491 </a></li></ul> 1492 </nav> 1493 <div class="menu-drawer__utility-links"><a 1494 href="https://doctorstolberg.com/customer_authentication/redirect?locale=en®ion_country=US" 1495 class="menu-drawer__account link focus-inset h5 medium-hide large-up-hide" 1496 > 1497 <svg 1498 xmlns="http://www.w3.org/2000/svg" 1499 aria-hidden="true" 1500 focusable="false" 1501 class="icon icon-account" 1502 fill="none" 1503 viewBox="0 0 18 19" 1504> 1505 <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.
15051-3.67-1.35-6.17-1.35z" fill="currentColor"> 1506</svg> 1507 1508Log in</a><div class="menu-drawer__localization header-localization"> 1509</div><ul class="list list-social list-unstyled" role="list"><li class="list-social__item"> 1510 <a href="https://www.instagram.com/dr.nataziazustolberg/" class="list-social__link link"><svg aria-hidden="true" focusable="false" class="icon icon-instagram" viewBox="0 0 20 20"> 1511 <path fill="currentColor" fill-rule="evenodd" d="M13.23 3.492c-.84-.037-1.096-.046-3.23-.046-2.144 0-2.39.01-3.238.055-.776.027-1.195.164-1.487.273a2.43 2.43 0 0 0-.912.593 2.486 2.486 0 0 0-.602.922c-.11.282-.238.702-.274 1.486-.046.84-.046 1.095-.046 3.23 0 2.134.01 2.39.046 3.229.004.51.097 1.016.274 1.495.145.365.319.639.602.913.282.282.538.456.92.602.474.176.974.268 1.479.273.848.046 1.103.046 3.238.046 2.134 0 2.39-.01 3.23-.046.784-.036 1.203-.164 1.486-.273.374-.146.648-.329.921-.602.283-.283.447-.548.602-.922.177-.476.27-.979.274-1.486.037-.84.046-1.095.046-3.23 0-2.134-.01-2.39-.055-3.229-.027-.784-.164-1.204-.274-1.495a2.43 2.43 0 0 0-.593-.913 2.604 2.604 0 0 0-.92-.602c-.284-.11-.703-.237-1.488-.273ZM6.697 2.05c.857-.036 1.131-.045 3.302-.045 1.1-.014 2.202.001 3.302.045.664.014 1.321.14 1.943.374a3.968 3.968 0 0 1 1.414.922c.41.397.728.88.93 1.414.23.622.354 1.279.365 1.942C18 7.56 18 7.824 18 10.005c0 2.17-.01 2.444-.046 3.292-.036.858-.173 1.442-.374 1.943-.2.53-.474.976-.92 1.423a3.896 3.896 0 0 1-1.415.922c-.51.191-1.095.337-1.943.374-.857.036-1.122.045-3.302.045-2.171 0-2.445-.009-3.302-.055-.849-.027-1.432-.164-1.943-.364a4.152 4.152 0 0 1-1.414-.922 4.128 4.128 0 0 1-.93-1.423c-.183-.51-.329-1.085-.365-1.943C2.009 12.45 2 12.167 2 10.004c0-2.161 0-2.435.055-3.302.027-.848.164-1.432.365-1.942a4.44 4.44 0 0 1 .92-1.414 4.18 4.18 0 0 1 1.415-.93c.51-.183 1.094-.33 1.943-.366Zm.427 4.806a4.105 4.105 0 1 1 5.805 5.805 4.105 4.105 0 0 1-5.805-5.805Zm1.882 5.371a2.668 2.668 0 1 0 2.042-4.93 2.668 2.668 0 0 0-2.042 4.93Zm5.922-5.942a.958.958 0 1 1-1.355-1.355.958.958 0 0 1 1.355 1.355Z" clip-rule="evenodd"/> 1512</svg> 1513<span class="visually-hidden">Instagram</span> 1514 </a> 1515 </li></ul> 1516 </div> 1517 </div> 1518 </div> 1519 </div> 1520 </details> 1521</header-drawer> 1522 1523<a href="/" class="header__heading-link link link--text focus-inset"><div class="header__heading-logo-wrapper"> 1524 1525 <img src="//doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&width=600" alt="DOCTOR STOLBERG" srcset="//doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&width=170 170w, //doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&width=255 255w, //doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&width=340 340w" width="170" height="12.070254110612854" loading="eager" class="header__heading-logo" sizes="(min-width: 750px) 170px, 50vw"> 1526 </div></a><div class="header__icons"> 1527 <div class="desktop-localization-wrapper"> 1528</div> 1529 1530 1531<details-modal class="header__search"> 1532 <details> 1533 <summary 1534 class="header__icon header__icon--search header__icon--summary link focus-inset modal__toggle" 1535 aria-haspopup="dialog" 1536 aria-label="Search" 1537 > 1538 <span> 1539 <svg class="modal__toggle-open icon icon-search" aria-hidden="true" focusable="false"> 1540 <use href="#icon-search"> 1541 </svg> 1542 <svg class="modal__toggle-close icon icon-close" aria-hidden="true" focusable="false"> 1543 <use href="#icon-close"> 1544 </svg> 1545 </span> 1546 </summary> 1547 <div 1548 class="search-modal modal__content gradient" 1549 role="dialog" 1550 aria-modal="true" 1551 aria-label="Search" 1552 > 1553 <div class="modal-overlay"></div> 1554 <div 1555 class="search-modal__content search-modal__content-bottom" 1556 tabindex="-1" 1557 ><predictive-search class="search-modal__form" data-loading-text="Loading..."><form action="/search" method="get" role="search" class="search search-modal__form"> 1558 <div class="field"> 1559 <input 1560 class="search__input field__input" 1561 id="Search-In-Modal" 1562 type="search" 1563 name="q" 1564 value="" 1565 placeholder="Search"role="combobox" 1566 aria-expanded="false" 1567 aria-owns="predictive-search-results" 1568 aria-controls="predictive-search-results" 1569 aria-haspopup="listbox"
1570 aria-autocomplete="list" 1571 autocorrect="off" 1572 autocomplete="off" 1573 autocapitalize="off" 1574 spellcheck="false"> 1575 <label class="field__label" for="Search-In-Modal">Search</label> 1576 <input type="hidden" name="options[prefix]" value="last"> 1577 <button 1578 type="reset" 1579 class="reset__button field__button hidden" 1580 aria-label="Clear search term" 1581 > 1582 <svg class="icon icon-close" aria-hidden="true" focusable="false"> 1583 <use xlink:href="#icon-reset"> 1584 </svg> 1585 </button> 1586 <button class="search__button field__button" aria-label="Search"> 1587 <svg class="icon icon-search" aria-hidden="true" focusable="false"> 1588 <use href="#icon-search"> 1589 </svg> 1590 </button> 1591 </div><div class="predictive-search predictive-search--header" tabindex="-1" data-predictive-search> 1592 1593<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 1594 1595<div class="predictive-search__loading-state"> 1596 <svg 1597 aria-hidden="true" 1598 focusable="false" 1599 class="spinner" 1600 viewBox="0 0 66 66" 1601 xmlns="http://www.w3.org/2000/svg" 1602 > 1603 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 1604 </svg> 1605</div> 1606</div> 1607 1608 <span class="predictive-search-status visually-hidden" role="status" aria-hidden="true"></span></form></predictive-search><button 1609 type="button" 1610 class="search-modal__close-button modal__close-button link link--text focus-inset" 1611 aria-label="Close" 1612 > 1613 <svg class="icon icon-close" aria-hidden="true" focusable="false"> 1614 <use href="#icon-close"> 1615 </svg> 1616 </button> 1617 </div> 1618 </div> 1619 </details> 1620</details-modal> 1621 1622<a href="https://doctorstolberg.com/customer_authentication/redirect?locale=en®ion_country=US" class="header__icon header__icon--account link focus-inset small-hide"> 1623 <svg 1624 xmlns="http://www.w3.org/2000/svg" 1625 aria-hidden="true" 1626 focusable="false" 1627 class="icon icon-account" 1628 fill="none" 1629 viewBox="0 0 18 19" 1630> 1631 <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35z" fill="currentColor"> 1632</svg> 1633 1634 <span class="visually-hidden">Log in</span> 1635 </a><a href="/cart" class="header__icon header__icon--cart link focus-inset" id="cart-icon-bubble"><svg 1636 class="icon icon-cart-empty" 1637 aria-hidden="true" 1638 focusable="false" 1639 xmlns="http://www.w3.org/2000/svg" 1640 viewBox="0 0 40 40" 1641 fill="none" 1642> 1643 <path d="m15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.78-11.61zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1 -9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z" fill="currentColor" fill-rule="evenodd"/> 1644</svg> 1645<span class="visually-hidden">Cart</span></a> 1646 </div> 1647 </header> 1648</sticky-header> 1649
1650<script type="application/ld+json"> 1651 { 1652 "@context": "http://schema.org", 1653 "@type": "Organization", 1654 "name": "DOCTOR STOLBERG", 1655 1656 "logo": "https:\/\/doctorstolberg.com\/cdn\/shop\/files\/Doctor-Stolberg-logo.png?v=1744483211\u0026width=500", 1657 1658 "sameAs": [ 1659 "", 1660 "", 1661 "", 1662 "https:\/\/www.instagram.com\/dr.nataziazustolberg\/", 1663 "", 1664 "", 1665 "", 1666 "", 1667 "" 1668 ], 1669 "url": "https:\/\/doctorstolberg.com" 1670 } 1671</script>
1671 1672 1673</div> 1674<!-- END sections: header-group --> 1675 1676 <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1"> 1677 <section id="shopify-section-template--22802680283369__main" class="shopify-section section"> 1678<section 1679 id="MainProduct-template--22802680283369__main" 1680 class="section-template--22802680283369__main-padding section-tea--product color-background-2" 1681 data-section="template--22802680283369__main" 1682> 1683 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/section-main-product.css?v=141059467971401676601788989889" rel="stylesheet" type="text/css" media="all" /> 1684 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/section-tea-product.css?v=161422244962545681001788989887" rel="stylesheet" type="text/css" media="all" /> 1685 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-accordion.css?v=180964204318874863811788989886" rel="stylesheet" type="text/css" media="all" /> 1686 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-price.css?v=70172745017360139101788989889" rel="stylesheet" type="text/css" media="all" /> 1687 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-slider.css?v=142503135496229589681788989887" rel="stylesheet" type="text/css" media="all" /> 1688 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-rating.css?v=157771854592137137841788989890" rel="stylesheet" type="text/css" media="all" /> 1689 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-overlay.css?v=4826" rel="stylesheet" type="text/css" media="all" /> 1690 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-deferred-media.css?v=14096082462203297471788989891" rel="stylesheet" type="text/css" media="all" /> 1691<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-card.css?v=95427162360506547451788989887" rel="stylesheet" type="text/css" media="all" /> 1692 <link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-price.css?v=70172745017360139101788989889" rel="stylesheet" type="text/css" media="all" />
1693<script src="//doctorstolberg.com/cdn/shop/t/46/assets/scroll-to-reviews.js?v=81903860328760204361788989888" defer="defer"></script>
1693<style data-shopify>.section-template--22802680283369__main-padding { 1694 padding-top: 0px; 1695 padding-bottom: 24px; 1696 } 1697 1698 @media screen and (min-width: 750px) { 1699 .section-template--22802680283369__main-padding { 1700 padding-top: 0px; 1701 padding-bottom: 32px; 1702 } 1703 } 1704 1705 @media screen and (min-width:990px) { 1706 1707 .section-tea--product .product.grid { 1708 1709 display:grid; 1710 grid-template-columns: repeat(12,minmax(0,1fr)); 1711 1712 } 1713 1714 .section-tea--product .product.grid .grid__item.product__media-wrapper { 1715 grid-column:auto/span 6; 1716 max-width:none; 1717 width:100%; 1718 } 1719 1720 .section-tea--product .product.grid .product__info-wrapper.grid__item { 1721 grid-column:auto/span 4; 1722 max-width:none; 1723 width:100%; 1724 padding:1rem 4rem 4rem;grid-column:auto/span 6;} 1725 1726 1727 .section-tea--product .product.grid .product-tea--sidebar { 1728 grid-column:auto/span 2; 1729 max-width:none; 1730 width:100%; 1731 display:flex; 1732 flex-direction:column; 1733 align-self:flex-start; 1734 1735 position:sticky; 1736 top:0; 1737 1738 1739 1740 }.section-tea--product .product.grid .product-tea--sidebar { 1741 display:none; 1742 1743 } 1744 1745 .product__info-container { 1746 max-width:none !important; 1747 padding:4vw; 1748 }} 1749 1750 .product-sidebar-image--wrapper { 1751 position:relative; 1752 width:100%; 1753 height:50vh; 1754 1755 1756 } 1757 1758 .product-sidebar-image--wrapper img { 1759 position:absolute; 1760 object-fit:cover; 1761 object-position:50% 50%; 1762 width:100%; 1763 height:100%; 1764 1765 1766 } 1767 1768 1769 1770@media screen and (max-width:899px) { 1771 1772 .section-tea--product { 1773 overflow:hidden; 1774 } 1775 1776 .section-tea--product .product.grid .product-tea--sidebar { 1777 display:flex; 1778 flex-direction:row; 1779 gap:30px; 1780 overflow:hidden; 1781 box-sizing:border-box; 1782 } 1783 1784 .section-tea--product .product.grid .product-tea--sidebar > * { 1785 width:50%; 1786 } 1787 1788 .product-sidebar-image--wrapper { 1789 padding-bottom:0; 1790 height:300px; 1791 } 1792} 1793 1794.tea-product-sticky-cta { 1795 position: fixed; 1796 bottom: 0; 1797 left: 0; 1798 right: 0; 1799 z-index: 100; 1800 padding: var(--gutter); 1801 background: rgb(var(--color-background)); 1802 box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); 1803 opacity: 0; 1804 visibility: hidden; 1805 transform: translateY(100%); 1806 transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease; 1807} 1808@media screen and (min-width: 750px) { 1809 .tea-product-sticky-cta { 1810 display: none !important; 1811 } 1812} 1813@media screen and (max-width: 749px) { 1814 .tea-product-sticky-cta { 1815 padding: 0; 1816 } 1817 .tea-product-sticky-cta__inner { 1818 max-width: none; 1819 margin: 0; 1820 padding: 0; 1821 width: 100%; 1822 } 1823 .tea-product-sticky-cta__button { 1824 width: 100%; 1825 max-width: none; 1826 border-radius: 0; 1827 margin: 0; 1828 display: block; 1829 box-sizing: border-box; 1830 } 1831} 1832.tea-product-sticky-cta.tea-product-sticky-cta--visible { 1833 opacity: 1; 1834 visibility: visible; 1835 transform: translateY(0); 1836} 1837.tea-product-sticky-cta__inner { 1838 max-width: var(--page-width); 1839 margin: 0 auto; 1840} 1841.tea-product-sticky-cta__button { 1842 margin: 0; 1843} 1844 1845 1846 1847 1848 1849 1850 1851 .productlist-grid { 1852 display:grid; 1853 gap:1vw; 1854 } 1855 1856 .productlist-grid .swatch-product-wrapper { 1857 position:relative; 1858 1859 1860 } 1861 1862 .productlist-grid .swatch-inner-wrapper { 1863 position:relative; 1864 aspect-ratio:1; 1865 width:100%; 1866 display:block; 1867 1868 } 1869 .productlist-grid img { 1870 width:100%; 1871 height:100%; 1872 object-fit:cover; 1873 position:absolute; 1874 } 1875 1876 1877 @media screen and (min-width: 750px) { 1878 .slider.slider--tablet-up + .slider-buttons { 1879 display:flex !important; 1880 top:50%; 1881 transform:translateY(-50%); 1882 position:absolute; 1883 width:100% !important; 1884 z-index:9; 1885 justify-content:space-between; 1886 1887 } 1888 1889 .product--thumbnail_slider .slider.slider--tablet-up .product__media-item:not(.is-active) { 1890 display:block; 1891 } 1892 1893 .product--thumbnail_slider .slider.slider--tablet-up .product__media-item { 1894 width:100%; 1895 max-height:100vh; 1896 overflow:hidden; 1897 } 1898
1899 .product--thumbnail_slider .slider.slider--tablet-up + .slider-buttons .slider-counter { 1900 display:none; 1901 } 1902 1903 .thumbnail-slider .thumbnail-list.slider--tablet-up { 1904 display:none; 1905 } 1906 1907 1908 .product--thumbnail_slider .slider.slider--tablet-up + .slider-buttons .slider-button { 1909 background-color:rgb(var(--color-background)); 1910 border:1px solid #ccc; 1911 border-radius:50%; 1912 1913 } 1914 1915 .product--thumbnail_slider .slider.slider--tablet-up + .slider-buttons .slider-button.slider-button--next { 1916 margin-right:2vw; 1917 } 1918 .product--thumbnail_slider .slider.slider--tablet-up + .slider-buttons .slider-button.slider-button--prev { 1919 margin-left:2vw; 1920 } 1921 1922 .product--thumbnail_slider .thumbnail-slider { 1923 display:none; 1924 } 1925} 1926 1927 1928 1929 1930 .productlist-grid.one-column .swatch-product-wrapper { 1931 display:grid; 1932 grid-template-columns:1fr 2fr 1fr; 1933 align-items:center; 1934 column-gap:1vw; 1935 } 1936 1937 1938 1939 .linklist-grid { 1940 display:grid; 1941 column-gap:1vw; 1942 } 1943 1944 .linklist-grid .link-wrapper { 1945 position:relative; 1946 1947 } 1948 1949 .linklist-grid .link-wrapper img { 1950 width:100%; 1951 1952 1953 } 1954 1955 @media screen and (min-width:750px){ 1956 .product--thumbnail .product__media-gallery{ 1957 display:flex; 1958 flex-direction:row-reverse; 1959 1960 } 1961 1962 .product--thumbnail .product__media-gallery slider-component.slider-mobile-gutter:not(.thumbnail-slider){ 1963 min-width:80%; 1964 1965 } 1966 1967 .product--thumbnail .product__media-gallery slider-component.thumbnail-slider{ 1968 min-width:20%; 1969 1970 } 1971 1972 .product--thumbnail .product__media-gallery slider-component.thumbnail-slider .slider { 1973 grid-template-columns:1fr; 1974 } 1975 1976 } 1977 1978 1979 @media screen and (max-width:749px) { 1980 .product__info-wrapper { 1981 padding-left:6vw; 1982 padding-right:6vw; 1983 box-sizing:border-box; 1984 } 1985 }</style>
1985<script src="//doctorstolberg.com/cdn/shop/t/46/assets/product-info.js?v=81873523020508815201788989887" defer="defer"></script>
1985 1986
1986<script src="//doctorstolberg.com/cdn/shop/t/46/assets/product-form.js?v=133081758708377679181788989887" defer="defer"></script>
1986 1987 1988 1989 <div class="product product--large product--right product--stacked product--mobile-hide grid grid--1-col grid--2-col-tablet"> 1990 <div class="grid__item product__media-wrapper medium-hide large-up-hide"> 1991 1992<media-gallery 1993 id="MediaGallery-template--22802680283369__main" 1994 role="region" 1995 1996 class="product__column-sticky" 1997 1998 aria-label="Gallery Viewer" 1999 data-desktop-layout="stacked" 2000> 2001 <div id="GalleryStatus-template--22802680283369__main" class="visually-hidden" role="status"></div> 2002 <slider-component id="GalleryViewer-template--22802680283369__main" class="slider-mobile-gutter"><a class="skip-to-content-link button visually-hidden quick-add-hidden" href="#ProductInfo-template--22802680283369__main"> 2003 Skip to product information 2004 </a><ul 2005 id="Slider-Gallery-template--22802680283369__main" 2006 class="product__media-list contains-media grid grid--peek list-unstyled slider slider--mobile " 2007 role="list" 2008 ><li 2009 id="Slide-template--22802680283369__main-37255658799337" 2010 class="product__media-item grid__item slider__slide is-active scroll-tr
2010igger animate--fade-in" 2011 data-media-id="template--22802680283369__main-37255658799337" 2012 > 2013 2014<div 2015 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2016 style="--ratio: 0.8; --preview-ratio: 0.8;" 2017> 2018 <noscript><div class="product__media media"> 2019 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946" alt="Rest + Digest Tea box on a yellow background" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946 1946w" width="1946" height="2433" sizes="(min-width: 990px) 50vw, 100vw"> 2020 </div></noscript> 2021 2022 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2023 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2024 aria-hidden="true" 2025 focusable="false" 2026 class="icon icon-plus" 2027 width="19" 2028 height="19" 2029 viewBox="0 0 19 19" 2030 fill="none" 2031 xmlns="http://www.w3.org/2000/svg" 2032> 2033 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2034 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2035 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2036</svg> 2037</span> 2038 2039<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2040 2041<div class="loading__spinner hidden"> 2042 <svg 2043 aria-hidden="true" 2044 focusable="false" 2045 class="spinner" 2046 viewBox="0 0 66 66" 2047 xmlns="http://www.w3.org/2000/svg" 2048 > 2049 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2050 </svg> 2051</div> 2052<div class="product__media media media--transparent"> 2053 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946" alt="Rest + Digest Tea box on a yellow background" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946 1946w" width="1946" height="2433" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2054 </div> 2055 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="37255658799337">
2056 <span class="visually-hidden"> 2057 Open media 1 in modal 2058 </span> 2059 </button> 2060 </modal-opener></div> 2061 2062 </li><li 2063 id="Slide-template--22802680283369__main-39134129291497" 2064 class="product__media-item grid__item slider__slide scroll-trigger animate--fade-in" 2065 data-media-id="template--22802680283369__main-39134129291497" 2066 > 2067 2068<div 2069 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2070 style="--ratio: 0.7993421052631579; --preview-ratio: 0.7993421052631579;" 2071> 2072 <noscript><div class="product__media media"> 2073 <img src="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946 1946w" width="1946" height="2435" loading="lazy" sizes="(min-width: 990px) 50vw, 100vw"> 2074 </div></noscript> 2075 2076 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2077 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2078 aria-hidden="true" 2079 focusable="false" 2080 class="icon icon-plus" 2081 width="19" 2082 height="19" 2083 viewBox="0 0 19 19" 2084 fill="none" 2085 xmlns="http://www.w3.org/2000/svg" 2086> 2087 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2088 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2089 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2090</svg> 2091</span> 2092 2093<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2094 2095<div class="loading__spinner hidden"> 2096 <svg 2097 aria-hidden="true" 2098 focusable="false" 2099 class="spinner" 2100 viewBox="0 0 66 66" 2101 xmlns="http://www.w3.org/2000/svg" 2102 > 2103 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2104 </svg> 2105</div> 2106<div class="product__media media media--transparent"> 2107 <img src="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946 1946w" width="1946" height="2435" loading="lazy" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2108 </div> 2109 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="39134129291497">
2110 <span class="visually-hidden"> 2111 Open media 2 in modal 2112 </span> 2113 </button> 2114 </modal-opener></div> 2115 2116 </li><li 2117 id="Slide-template--22802680283369__main-37255673872617" 2118 class="product__media-item grid__item slider__slide scroll-trigger animate--fade-in" 2119 data-media-id="template--22802680283369__main-37255673872617" 2120 > 2121 2122<div 2123 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2124 style="--ratio: 0.8; --preview-ratio: 0.8;" 2125> 2126 <noscript><div class="product__media media"> 2127 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946" alt="Open Rest + Digest Tea box with sachets inside" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" sizes="(min-width: 990px) 50vw, 100vw"> 2128 </div></noscript> 2129 2130 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2131 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2132 aria-hidden="true" 2133 focusable="false" 2134 class="icon icon-plus" 2135 width="19" 2136 height="19" 2137 viewBox="0 0 19 19" 2138 fill="none" 2139 xmlns="http://www.w3.org/2000/svg" 2140> 2141 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2142 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2143 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2144</svg> 2145</span> 2146 2147<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2148 2149<div class="loading__spinner hidden"> 2150 <svg 2151 aria-hidden="true" 2152 focusable="false" 2153 class="spinner"
2154 viewBox="0 0 66 66" 2155 xmlns="http://www.w3.org/2000/svg" 2156 > 2157 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2158 </svg> 2159</div> 2160<div class="product__media media media--transparent"> 2161 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946" alt="Open Rest + Digest Tea box with sachets inside" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2162 </div> 2163 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="37255673872617"> 2164 <span class="visually-hidden"> 2165 Open media 3 in modal 2166 </span> 2167 </button> 2168 </modal-opener></div> 2169 2170 </li><li 2171 id="Slide-template--22802680283369__main-37255643300073" 2172 class="product__media-item grid__item slider__slide scroll-trigger animate--fade-in" 2173 data-media-id="template--22802680283369__main-37255643300073" 2174 > 2175 2176<div 2177 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2178 style="--ratio: 0.8; --preview-ratio: 0.8;" 2179> 2180 <noscript><div class="product__media media"> 2181 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946" alt="Rest + Digest Tea steeping in stacked glass tea cups" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" sizes="(min-width: 990px) 50vw, 100vw"> 2182 </div></noscript> 2183 2184 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2185 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2186 aria-hidden="true" 2187 focusable="false" 2188 class="icon icon-plus" 2189 width="19" 2190 height="19" 2191 viewBox="0 0 19 19" 2192 fill="none" 2193 xmlns="http://www.w3.org/2000/svg" 2194> 2195 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2196 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.
21961983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2197 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2198</svg> 2199</span> 2200 2201<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2202 2203<div class="loading__spinner hidden"> 2204 <svg 2205 aria-hidden="true" 2206 focusable="false" 2207 class="spinner" 2208 viewBox="0 0 66 66" 2209 xmlns="http://www.w3.org/2000/svg" 2210 > 2211 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2212 </svg> 2213</div> 2214<div class="product__media media media--transparent"> 2215 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946" alt="Rest + Digest Tea steeping in stacked glass tea cups" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2216 </div> 2217 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="37255643300073"> 2218 <span class="visually-hidden"> 2219 Open media 4 in modal 2220 </span> 2221 </button> 2222 </modal-opener></div> 2223 2224 </li></ul><div class="slider-buttons no-js-hidden quick-add-hidden"> 2225 <button 2226 type="button" 2227 class="slider-button slider-button--prev" 2228 name="previous" 2229 aria-label="Slide left" 2230 > 2231 <svg aria-hidden="true" focusable="false" class="icon icon-caret" viewBox="0 0 10 6"> 2232 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"> 2233</svg> 2234 2235 </button> 2236 <div class="slider-counter caption"> 2237 <span class="slider-counter--current">1</span> 2238 <span aria-hidden="true"> / </span>
2239 <span class="visually-hidden">of</span> 2240 <span class="slider-counter--total">4</span> 2241 </div> 2242 <button 2243 type="button" 2244 class="slider-button slider-button--next" 2245 name="next" 2246 aria-label="Slide right" 2247 > 2248 <svg aria-hidden="true" focusable="false" class="icon icon-caret" viewBox="0 0 10 6"> 2249 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"> 2250</svg> 2251 2252 </button> 2253 </div></slider-component></media-gallery> 2254 2255 </div> 2256 <div class="product__info-wrapper grid__item scroll-trigger animate--slide-in"> 2257 <product-info 2258 id="ProductInfo-template--22802680283369__main" 2259 data-section="template--22802680283369__main" 2260 data-url="/products/rest-digest-tea" 2261 class="product__info-container product__column-sticky" 2262 ><style> 2263@media (min-width: 768px){ 2264.section-tea--product .product.grid .product__info-wrapper.grid__item{ 2265margin-top: 0 !important; 2266} 2267 2268.product__title { 2269margin-bottom: 1rem !important; 2270} 2271</style> 2272<div class="product__title" > 2273 <h1>Rest + Digest Tea</h1> 2274 <a href="/products/rest-digest-tea" class="product__title"> 2275 <h2 class="h1"> 2276 Rest + Digest Tea 2277 </h2> 2278 </a> 2279 </div> 2280 <div 2281 class="rating" 2282 role="img" 2283 aria-label="4.88 out of 5.0 stars" 2284 > 2285 <a href="#" class="scroll-to-reviews" aria-label="Scroll to reviews"> 2286 <span 2287 aria-hidden="true" 2288 class="rating-star" 2289 style="--rating: 4; --rating-max: 5.0; --rating-decimal: 1;" 2290 ></span> 2291 </a> 2292 </div> 2293 <p class="rating-text caption"> 2294 <span aria-hidden="true">4.88 / 2295 5.0</span> 2296 </p> 2297 <p class="rating-count caption"> 2298 <a href="#" class="scroll-to-reviews"> 2299 <span aria-hidden="true">(188)</span> 2300 <span class="visually-hidden">188 2301 total reviews</span> 2302 </a> 2303 </p><p 2304 class="product__text inline-richtext product__description" 2305 2306 > 2307 <span class="product__text-bg">A daily streamlined formula to strengthen digestion and eliminate bloat. Doctor recommends sipping after meals for optimal results.</span> 2308 </p><ul class="product__description description__bullets" style="padding: 0 20px !important;"> 2309<li style="margin: 10px 0;">Helps reduce bloating after meals</li> 2310<li style="margin: 10px 0;">89% of users see improved digestion 2311</li> 2312<li style="margin: 10px 0;">Acupuncturist-developed formula</li> 2313</ul> 2314<br/> 2315 2316 2317 2318 2319
2319<script type="application/json" id="TeaPlanData-template--22802680283369__main"> 2320 { 2321 "product_id": 8254808785129, 2322 "variant_id": 50889447407849, 2323 "requires_selling_plan": false, 2324 "currency": "USD", 2325 "plans": [ 2326 2327 { 2328 "id": 5538578665, 2329 "name": "1 box every 1 month at 10% discount", 2330 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287397"},{"name":"Order Frequency and Unit","position":2,"value":"1-month"},{"name":"Product Quantity","position":3,"value":"1"}], 2331 "price": 4050, 2332 "compare_at_price": 4500, 2333 "per_delivery_price": 4050 2334 }, 2335 2336 { 2337 "id": 5538611433, 2338 "name": "1 box every 2 months at 10% discount", 2339 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287411"},{"name":"Order Frequency and Unit","position":2,"value":"2-month"},{"name":"Product Quantity","position":3,"value":"1"}], 2340 "price": 4050, 2341 "compare_at_price": 4500, 2342 "per_delivery_price": 4050 2343 }, 2344 2345 { 2346 "id": 5538644201, 2347 "name": "1 box every 3 months at 10% discount", 2348 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287412"},{"name":"Order Frequency and Unit","position":2,"value":"3-month"},{"name":"Product Quantity","position":3,"value":"1"}], 2349 "price": 4050, 2350 "compare_at_price": 4500, 2351 "per_delivery_price": 4050 2352 }, 2353 2354 { 2355 "id": 5538676969, 2356 "name": "2 boxes every 1 month at 15% discount", 2357 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287413"},{"name":"Order Frequency and Unit","position":2,"value":"1-month"},{"name":"Product Quantity","position":3,"value":"2"}], 2358 "price": 3825, 2359 "compare_at_price": 4500, 2360 "per_delivery_price": 3825 2361 }, 2362 2363 { 2364 "id": 5538709737, 2365 "name": "2 boxes every 2 months at 15% discount", 2366 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287414"},{"name":"Order Frequency and Unit","position":2,"value":"2-month"},{"name":"Product Quantity","position":3,"value":"2"}], 2367 "price": 3825, 2368 "compare_at_price": 4500, 2369 "per_delivery_price": 3825 2370 }, 2371 2372 { 2373 "id": 5538742505, 2374 "name": "2 boxes every 3 months at 15% discount", 2375 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287415"},{"name":"Order Frequency and Unit","position":2,"value":"3-month"},{"name":"Product Quantity","position":3,"value":"2"}], 2376 "price": 3825, 2377 "compare_at_price": 4500, 2378 "per_delivery_price": 3825 2379 }, 2380 2381 { 2382 "id": 5538775273, 2383 "name": "Every 1 month at 20% discount", 2384 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287416"},{"name":"Order Frequency and Unit","position":2,"value":"1-month"},{"name":"Product Quantity","position":3,"value":"3"}], 2385 "price": 3600, 2386 "compare_at_price": 4500, 2387 "per_delivery_price": 3600 2388 }, 2389 2390 { 2391 "id": 5538808041, 2392 "name": "Every 2 months at 20% discount", 2393 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287417"},{"name":"Order Frequency and Unit","position":2,"value":"2-month"},{"name":"Product Quantity","position":3,"value":"3"}], 2394 "price": 3600, 2395 "compare_at_price": 4500, 2396 "per_delivery_price": 3600 2397 }, 2398 2399 { 2400 "id": 5538840809, 2401 "name": "Every 3 months at 20% discount", 2402 "options": [{"name":"Recharge Plan ID","position":1,"value":"23287418"},{"name":"Order Frequency and Unit","position":2,"value":"3-month"},{"name":"Product Quantity","position":3,"value":"3"}], 2403 "price": 3600, 2404 "compare_at_price": 4500, 2405 "per_delivery_price": 3600 2406 } 2407 2408 ] 2409 } 2410 </script>
2410 2411
2411<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-tier-model.js?v=112577331377417332591789145803" defer></script>
2411 2412
2412<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-cart-model.js?v=123209634812599222751788989890" defer></script>
2412 2413
2413<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-cart-session.js?v=174822965382877193961789179442" defer></script>
2413 2414
2414<script src="//doctorstolberg.com/cdn/shop/t/46/assets/tea-tier-buybox.js?v=59636911484660078121789145802" defer></script>
2414 2415 <tea-tier-buybox class="tea-tiers" data-product-handle="rest-digest-tea" data-plan-data-id="TeaPlanData-template--22802680283369__main" data-product-id="8254808785129" data-unit-price="4500" data-currency="USD" data-variant-id="50889447407849"> 2416 <fieldset class="tea-tiers__modes"> 2417 <legend class="tea-tiers__sr">Purchase option</legend> 2418 <label><input type="radio" name="tea-mode-template--22802680283369__main" value="subscription" checked><span>Subscribe & Save</span></label> 2419 <label><input type="radio" name="tea-mode-template--22802680283369__main" value="onetime"><span>One-time</span></label> 2420 </fieldset> 2421 <div data-subscription> 2422 <fieldset class="tea-tiers__options"> 2423 <legend class="tea-tiers__sr">Choose your box quantity</legend> 2424 2425 2426 <label class="tea-tiers__option"> 2427 <input type="radio" name="tea-boxes-template--22802680283369__main" value="1" > 2428 <span class="tea-tiers__option-body"> 2429 2430 <span class="tea-tiers__radio" aria-hidden="true"></span> 2431 <span class="tea-tiers__details"> 2432 <span class="tea-tiers__option-title">1 box <span class="tea-tiers__saving">Save 10%</span></span> 2433 <span class="tea-tiers__meta">30 sachets</span> 2434 </span> 2435 <span class="tea-tiers__prices"><strong>$40.50</strong><s>$45.00</s></span> 2436 </span> 2437 </label> 2438 2439 2440 <label class="tea-tiers__option"> 2441 <input type="radio" name="tea-boxes-template--22802680283369__main" value="2" checked> 2442 <span class="tea-tiers__option-body"> 2443 <span class="tea-tiers__popular">Most Popular</span> 2444 <span class="tea-tiers__radio" aria-hidden="true"></span> 2445 <span class="tea-tiers__details"> 2446 <span class="tea-tiers__option-title">2 boxes <span class="tea-tiers__saving">Save 15%</span></span> 2447 <span class="tea-tiers__meta">60 sachets<br>Free shipping</span> 2448 </span> 2449 <span class="tea-tiers__prices"><strong>$76.50</strong><s>$90.00</s></span> 2450 </span> 2451 </label> 2452 2453 2454 <label class="tea-tiers__option"> 2455 <input type="radio" name="tea-boxes-template--22802680283369__main" value="3" > 2456 <span class="tea-tiers__option-body"> 2457 2458 <span class="tea-tiers__radio" aria-hidden="true"></span> 2459 <span class="tea-tiers__details"> 2460 <span class="tea-tiers__option-title">3 boxes <span class="tea-tiers__saving">Save 20%</span></span> 2461 <span class="tea-tiers__meta">90 sachets<br>Free shipping</span> 2462 </span> 2463 <span class="tea-tiers__prices"><strong>$108.00</strong><s>$135.00</s></span> 2464 </span> 2465 </label> 2466 2467 </fieldset> 2468 <label class="tea-tiers__cadence-label" for="TeaCadence-template--22802680283369__main">Ships every</label> 2469 <select id="TeaCadence-template--22802680283369__main" class="tea-tiers__cadence" data-cadence> 2470 <option value="1">Every 1 month</option> 2471 <option value="2" selected>Every 2 months</option> 2472 <option value="3">Every 3 months</option> 2473 </select> 2474 </div> 2475 <div class="tea-tiers__onetime" data-onetime hidden> 2476 <div class="tea-tiers__once-card"><strong>One-time purchase</strong><span>$45.00 / box</span><p>Ships once, no subscription.</p></div> 2477 </div> 2478 <div class="tea-tiers__purchase-row"> 2479 <div class="tea-tiers__stepper"> 2480 <button type="button" data-decrement aria-label="Remove one box" disabled>â</button> 2481 <label class="tea-tiers__sr" for="TeaQuantity-template--22802680283369__main">Box quantity</label> 2482 <input id="TeaQuantity-template--22802680283369__main" data-quantity type="number" min="1" step="1" value="1" inputmode="numeric"> 2483 <button type="button" data-increment aria-label="Add one box">+</button> 2484 </div> 2485 <button id="ProductSubmitButton-template--22802680283369__main" class="tea-tiers__buy" type="button" disabled>Add to cart â <span data-total>$76.50</span> <s data-compare>$90.00</s></button> 2486 </div> 2487 <p class="tea-tiers__terms" data-terms>Change, skip or cancel anytime</p>
2488 <p data-cart-status role="status" aria-live="polite" hidden></p> 2489 <p class="tea-tiers__sr" data-announcement aria-live="polite" aria-atomic="true"></p> 2490 </tea-tier-buybox> 2491 2492<br/><br/> 2493<p 2494 class="product__text inline-richtext product__unit-qty" 2495 2496 > 2497 <span class="product__text-bg">30 sachets per box</span> 2498 </p><p 2499 class="product__text inline-richtext product__description" 2500 2501 > 2502 <span class="product__text-bg">Order 2 boxes and reset with 2 cups daily for the first 30 days.</span> 2503 </p><br/><br/> 2504<div class="product__accordion accordion quick-add-hidden" > 2505 <details id="Details-collapsible_tab_gtPXDb-template--22802680283369__main" open> 2506 <summary> 2507 <div class="summary__title"> 2508 2509 <h2 class="h4 accordion__title inline-richtext"> 2510 HOW IT WORKS 2511 </h2> 2512 </div> 2513 <svg 2514 xmlns="http://www.w3.org/2000/svg" 2515 aria-hidden="true" 2516 focusable="false" 2517 class="icon icon-plus" 2518 fill="none" 2519 viewBox="0 0 10 10" 2520> 2521 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 2522</svg> 2523 2524 </summary> 2525 <div class="accordion__content rte" id="ProductAccordion-collapsible_tab_gtPXDb-template--22802680283369__main"> 2526 <div class="metafield-rich_text_field"><p>Rest + Digest is a warming formula that softly eases digestive tension by naturally stimulating the production of digestive enzymes to strengthen digestion while easing bloat, reducing gas and minimizing stomach sensitivities. </p><p>We recommend sipping Rest + Digest after meals or in times of stress, in order to quickly and gently, bring your body back into balance.</p></div> 2527 2528</div> 2529 </details> 2530 </div><div class="product__accordion accordion quick-add-hidden" > 2531 <details id="Details-collapsible_tab_gtPXDb-5-template--22802680283369__main"> 2532 <summary> 2533 <div class="summary__title"> 2534 2535 <h2 class="h4 accordion__title inline-richtext"> 2536 BENEFITS 2537 </h2> 2538 </div> 2539 <svg 2540 xmlns="http://www.w3.org/2000/svg" 2541 aria-hidden="true" 2542 focusable="false" 2543 class="icon icon-plus" 2544 fill="none" 2545 viewBox="0 0 10 10" 2546> 2547 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 2548</svg> 2549 2550 </summary> 2551 <div class="accordion__content rte" id="ProductAccordion-collapsible_tab_gtPXDb-5-template--22802680283369__main"> 2552 <div class="metafield-rich_text_field"><p><strong>Reduces bloat </strong>â Supports digestive enzyme production to ease discomfort after meals</p><p><strong>Supports fat digestion </strong>â Increases bile production so your body can process heavier meals more efficiently</p><p><strong>Boost metabolism </strong>â Warming herbs delivered in a hot tea gently support metabolic and digestive activity</p></div> 2553 2554</div> 2555 </details> 2556 </div><div class="product__accordion accordion quick-add-hidden" > 2557 <details id="Details-collapsible_tab_gtPXDb-1-template--22802680283369__main"> 2558 <summary> 2559 <div class="summary__title"> 2560 2561 <h2 class="h4 accordion__title inline-richtext"> 2562 Ingredients 2563 </h2> 2564 </div> 2565 <svg 2566 xmlns="http://www.w3.org/2000/svg" 2567 aria-hidden="true" 2568 focusable="false" 2569 class="icon icon-plus" 2570 fill="none" 2571 viewBox="0 0 10 10" 2572> 2573 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 2574</svg> 2575 2576 </summary> 2577 <div class="accordion__content rte" id="ProductAccordion-collapsible_tab_gtPXDb-1-template--22802680283369__main"> 2578 <div class="metafield-rich_text_field"><p>Organic Coriander; Organic Cumin </p><p>Our sachets are NeoSoilon® â made from eco-friendly, non-GMO sugarcane and are free of toxins, micro-plastics, and petroleum-based materials.</p></div> 2579 2580</div> 2581 </details> 2582 </div><div class="product__accordion accordion quick-add-hidden" > 2583 <details id="Details-collapsible_tab_gtPXDb-2-template--22802680283369__main"> 2584 <summary> 2585 <div class="summary__title"> 2586 2587 <h2 class="h4 accordion__title inline-richtext"> 2588 Doctor Stolberg Recommends 2589 </h2> 2590 </div> 2591 <svg 2592 xmlns="http://www.w3.org/2000/svg" 2593 aria-hidden="true" 2594 focusable="false" 2595 class="icon icon-plus" 2596 fill="none" 2597 viewBox="0 0 10 10" 2598> 2599 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 2600</svg> 2601 2602 </summary> 2603 <div class="accordion__content rte" id="ProductAccordion-collapsible_tab_gtPXDb-2-template--22802680283369__main"> 2604 <div class="metafield-rich_text_field"><p>Drinking Rest + Digest nightly as part of your evening routine to supp
2604ort digestion or after meals to alleviate bloating in as little as an hour. </p><p>Bloat a few times a week?<strong><br /> 2605</strong>Order 2 boxes and<strong> </strong>reset with 2 cups daily for the first 30 days. </p><p>Bloat most days?<br /> 2606Order 4 boxes and reset with 2 cups daily for the first 60 days. </p></div> 2607 2608</div> 2609 </details> 2610 </div><div class="product__accordion accordion quick-add-hidden" > 2611 <details id="Details-collapsible_tab_gtPXDb-3-template--22802680283369__main"> 2612 <summary> 2613 <div class="summary__title"> 2614 2615 <h2 class="h4 accordion__title inline-richtext"> 2616 Supply 2617 </h2> 2618 </div> 2619 <svg 2620 xmlns="http://www.w3.org/2000/svg" 2621 aria-hidden="true" 2622 focusable="false" 2623 class="icon icon-plus" 2624 fill="none" 2625 viewBox="0 0 10 10" 2626> 2627 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 2628</svg> 2629 2630 </summary> 2631 <div class="accordion__content rte" id="ProductAccordion-collapsible_tab_gtPXDb-3-template--22802680283369__main"> 2632 <div class="metafield-rich_text_field"><p>30 compostable sachets</p><p>Our sachets are NeoSoilon® â made from eco-friendly, non-GMO sugarcane, and are free of toxins, microplastics, and petroleum-based materials.</p></div> 2633 2634</div> 2635 </details> 2636 </div><div class="product__accordion accordion quick-add-hidden" > 2637 <details id="Details-collapsible_tab_gtPXDb-4-template--22802680283369__main"> 2638 <summary> 2639 <div class="summary__title"> 2640 2641 <h2 class="h4 accordion__title inline-richtext"> 2642 Directions 2643 </h2> 2644 </div> 2645 <svg 2646 xmlns="http://www.w3.org/2000/svg" 2647 aria-hidden="true" 2648 focusable="false" 2649 class="icon icon-plus" 2650 fill="none" 2651 viewBox="0 0 10 10" 2652> 2653 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 2654</svg> 2655 2656 </summary> 2657 <div class="accordion__content rte" id="ProductAccordion-collapsible_tab_gtPXDb-4-template--22802680283369__main"> 2658 <div class="metafield-rich_text_field"><p>Steep 1 sachet in hot water for 8 minutes.</p><p>Best enjoyed after meals or before bed as part of a nightly routine.</p></div> 2659 2660</div> 2661 </details> 2662 </div> 2663 2664 <a href="/products/rest-digest-tea" class="link product__view-details animate-arrow"> 2665 View full details 2666 <svg 2667 viewBox="0 0 14 10" 2668 fill="none" 2669 aria-hidden="true" 2670 focusable="false" 2671 class="icon icon-arrow" 2672 xmlns="http://www.w3.org/2000/svg" 2673> 2674 <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"> 2675</svg> 2676 2677 </a> 2678 </product-info> 2679 </div> 2680 <div class="grid__item product__media-wrapper small-hide"> 2681 2682<media-gallery 2683 id="MediaGallery-template--22802680283369__main-duplicate" 2684 role="region" 2685 2686 class="product__column-sticky" 2687 2688 aria-label="Gallery Viewer" 2689 data-desktop-layout="stacked" 2690> 2691 <div id="GalleryStatus-template--22802680283369__main" class="visually-hidden" role="status"></div> 2692 <slider-component id="GalleryViewer-template--22802680283369__main-duplicate" class="slider-mobile-gutter"><ul 2693 id="Slider-Gallery-template--22802680283369__main-duplicate" 2694 class="product__media-list contains-media grid grid--peek list-unstyled slider slider--mobile" 2695 role="list" 2696 ><li 2697 id="Slide-template--22802680283369__main-37255658799337-duplicate" 2698 class="product__media-item grid__item slider__slide is-active scroll-tr
2698igger animate--fade-in" 2699 data-media-id="template--22802680283369__main-37255658799337" 2700 > 2701 2702<div 2703 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2704 style="--ratio: 0.8; --preview-ratio: 0.8;" 2705> 2706 <noscript><div class="product__media media"> 2707 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946" alt="Rest + Digest Tea box on a yellow background" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946 1946w" width="1946" height="2433" sizes="(min-width: 990px) 50vw, 100vw"> 2708 </div></noscript> 2709 2710 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2711 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2712 aria-hidden="true" 2713 focusable="false" 2714 class="icon icon-plus" 2715 width="19" 2716 height="19" 2717 viewBox="0 0 19 19" 2718 fill="none" 2719 xmlns="http://www.w3.org/2000/svg" 2720> 2721 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2722 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2723 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2724</svg> 2725</span> 2726 2727<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2728 2729<div class="loading__spinner hidden"> 2730 <svg 2731 aria-hidden="true" 2732 focusable="false" 2733 class="spinner" 2734 viewBox="0 0 66 66" 2735 xmlns="http://www.w3.org/2000/svg" 2736 > 2737 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2738 </svg> 2739</div> 2740<div class="product__media media media--transparent"> 2741 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946" alt="Rest + Digest Tea box on a yellow background" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1946 1946w" width="1946" height="2433" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2742 </div> 2743 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="37255658799337">
2744 <span class="visually-hidden"> 2745 Open media 1 in modal 2746 </span> 2747 </button> 2748 </modal-opener></div> 2749 2750 </li><li 2751 id="Slide-template--22802680283369__main-39134129291497-duplicate" 2752 class="product__media-item grid__item slider__slide scroll-trigger animate--fade-in" 2753 data-media-id="template--22802680283369__main-39134129291497" 2754 > 2755 2756<div 2757 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2758 style="--ratio: 0.7993421052631579; --preview-ratio: 0.7993421052631579;" 2759> 2760 <noscript><div class="product__media media"> 2761 <img src="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946 1946w" width="1946" height="2435" loading="lazy" sizes="(min-width: 990px) 50vw, 100vw"> 2762 </div></noscript> 2763 2764 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2765 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2766 aria-hidden="true" 2767 focusable="false" 2768 class="icon icon-plus" 2769 width="19" 2770 height="19" 2771 viewBox="0 0 19 19" 2772 fill="none" 2773 xmlns="http://www.w3.org/2000/svg" 2774> 2775 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2776 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2777 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2778</svg> 2779</span> 2780 2781<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2782 2783<div class="loading__spinner hidden"> 2784 <svg 2785 aria-hidden="true" 2786 focusable="false" 2787 class="spinner" 2788 viewBox="0 0 66 66" 2789 xmlns="http://www.w3.org/2000/svg" 2790 > 2791 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2792 </svg> 2793</div> 2794<div class="product__media media media--transparent"> 2795 <img src="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1946 1946w" width="1946" height="2435" loading="lazy" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2796 </div> 2797 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="39134129291497">
2798 <span class="visually-hidden"> 2799 Open media 2 in modal 2800 </span> 2801 </button> 2802 </modal-opener></div> 2803 2804 </li><li 2805 id="Slide-template--22802680283369__main-37255673872617-duplicate" 2806 class="product__media-item grid__item slider__slide scroll-trigger animate--fade-in" 2807 data-media-id="template--22802680283369__main-37255673872617" 2808 > 2809 2810<div 2811 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2812 style="--ratio: 0.8; --preview-ratio: 0.8;" 2813> 2814 <noscript><div class="product__media media"> 2815 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946" alt="Open Rest + Digest Tea box with sachets inside" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" sizes="(min-width: 990px) 50vw, 100vw"> 2816 </div></noscript> 2817 2818 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2819 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2820 aria-hidden="true" 2821 focusable="false" 2822 class="icon icon-plus" 2823 width="19" 2824 height="19" 2825 viewBox="0 0 19 19" 2826 fill="none" 2827 xmlns="http://www.w3.org/2000/svg" 2828> 2829 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2830 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2831 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2832</svg> 2833</span> 2834 2835<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2836 2837<div class="loading__spinner hidden"> 2838 <svg 2839 aria-hidden="true" 2840 focusable="false" 2841 class="spinner"
2842 viewBox="0 0 66 66" 2843 xmlns="http://www.w3.org/2000/svg" 2844 > 2845 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2846 </svg> 2847</div> 2848<div class="product__media media media--transparent"> 2849 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946" alt="Open Rest + Digest Tea box with sachets inside" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2850 </div> 2851 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="37255673872617"> 2852 <span class="visually-hidden"> 2853 Open media 3 in modal 2854 </span> 2855 </button> 2856 </modal-opener></div> 2857 2858 </li><li 2859 id="Slide-template--22802680283369__main-37255643300073-duplicate" 2860 class="product__media-item grid__item slider__slide scroll-trigger animate--fade-in" 2861 data-media-id="template--22802680283369__main-37255643300073" 2862 > 2863 2864<div 2865 class="product-media-container media-type-image media-fit-cover global-media-settings gradient" 2866 style="--ratio: 0.8; --preview-ratio: 0.8;" 2867> 2868 <noscript><div class="product__media media"> 2869 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946" alt="Rest + Digest Tea steeping in stacked glass tea cups" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" sizes="(min-width: 990px) 50vw, 100vw"> 2870 </div></noscript> 2871 2872 <modal-opener class="product__modal-opener product__modal-opener--image no-js-hidden" data-modal="#ProductModal-template--22802680283369__main"> 2873 <span class="product__media-icon motion-reduce quick-add-hidden product__media-icon--none" aria-hidden="true"><svg 2874 aria-hidden="true" 2875 focusable="false" 2876 class="icon icon-plus" 2877 width="19" 2878 height="19" 2879 viewBox="0 0 19 19" 2880 fill="none" 2881 xmlns="http://www.w3.org/2000/svg" 2882> 2883 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z" fill="currentColor"/> 2884 <path fill-rule="evenodd" clip-rule="evenodd" d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.
28841983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z" fill="currentColor"/> 2885 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z" fill="currentColor"/> 2886</svg> 2887</span> 2888 2889<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-loading-spinner.css?v=116724955567955766481788989894" rel="stylesheet" type="text/css" media="all" /> 2890 2891<div class="loading__spinner hidden"> 2892 <svg 2893 aria-hidden="true" 2894 focusable="false" 2895 class="spinner" 2896 viewBox="0 0 66 66" 2897 xmlns="http://www.w3.org/2000/svg" 2898 > 2899 <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> 2900 </svg> 2901</div> 2902<div class="product__media media media--transparent"> 2903 <img src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946" alt="Rest + Digest Tea steeping in stacked glass tea cups" srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1946 1946w" width="1946" height="2433" loading="lazy" class="image-magnify-none" sizes="(min-width: 990px) 50vw, 100vw"> 2904 </div> 2905 <button class="product__media-toggle quick-add-hidden product__media-zoom-none" type="button" aria-haspopup="dialog" data-media-id="37255643300073"> 2906 <span class="visually-hidden"> 2907 Open media 4 in modal 2908 </span> 2909 </button> 2910 </modal-opener></div> 2911 2912 </li></ul></slider-component></media-gallery> 2913 2914 </div> <div class="product-tea--sidebar"> 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 <div class="sidebar-content-wrapper"> 2926 <div class="sidebar_text"> 2927 2928 <div> 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947</div> 2948 2949 </div> 2950 2951 </div> 2952 </div> 2953 2954 </div><div 2955 id="TeaProductStickyCta-template--22802680283369__main" 2956 class="tea-product-sticky-cta" 2957 aria-hidden="true" 2958 > 2959 <div class="tea-product-sticky-cta__inner"> 2960 <button 2961 type="button" 2962 class="tea-product-sticky-cta__button button button--full-width button--primary" 2963 aria-label="Add to cart" 2964 data-tea-sticky-submit="template--22802680283369__main" 2965 2966 >
2967 <span>Add to cart</span> 2968 </button> 2969 </div> 2970 </div> 2971
2971<script> 2972 (function() { 2973 var sectionId = 'template--22802680283369__main'; 2974 var stickyEl = document.getElementById('TeaProductStickyCta-' + sectionId); 2975 var submitBtn = document.getElementById('ProductSubmitButton-' + sectionId); 2976 if (!stickyEl || !submitBtn) return; 2977 var stickyButton = stickyEl.querySelector('[data-tea-sticky-submit="' + sectionId + '"]'); 2978 if (!stickyButton) return; 2979 function syncStickyCta() { 2980 // Keep the original translated Add to cart / Pre-order / Sold out label. 2981 // The tier buy box's first span is a price, not its button label. 2982 var isDisabled = submitBtn.hasAttribute('disabled') || submitBtn.getAttribute('aria-disabled') === 'true'; 2983 2984 if (isDisabled) { 2985 stickyButton.setAttribute('disabled', ''); 2986 } else { 2987 stickyButton.removeAttribute('disabled'); 2988 } 2989 } 2990 2991 stickyButton.addEventListener('click', function() { 2992 if (stickyButton.hasAttribute('disabled')) return; 2993 submitBtn.click(); 2994 }); 2995 2996 syncStickyCta(); 2997 2998 var mo = new MutationObserver(syncStickyCta); 2999 mo.observe(submitBtn, { 3000 attributes: true, 3001 attributeFilter: ['disabled', 'aria-disabled'], 3002 childList: true, 3003 subtree: true, 3004 characterData: true 3005 }); 3006 3007 var io = new IntersectionObserver(function(entries) { 3008 entries.forEach(function(entry) { 3009 var rect = entry.boundingClientRect; 3010 var isAboveViewport = rect.bottom <= 0; 3011 if (entry.isIntersecting || !isAboveViewport) { 3012 stickyEl.classList.remove('tea-product-sticky-cta--visible'); 3013 stickyEl.setAttribute('aria-hidden', 'true'); 3014 } else { 3015 stickyEl.classList.add('tea-product-sticky-cta--visible'); 3016 stickyEl.setAttribute('aria-hidden', 'false'); 3017 } 3018 }); 3019 }, { root: null, rootMargin: '0px', threshold: 0 }); 3020 io.observe(submitBtn); 3021 })(); 3022 </script>
3022 3023 3024<product-modal id="ProductModal-template--22802680283369__main" class="product-media-modal media-modal"> 3025 <div 3026 class="product-media-modal__dialog color-background-2 gradient" 3027 role="dialog" 3028 aria-label="Media gallery" 3029 aria-modal="true" 3030 tabindex="-1" 3031 > 3032 <button 3033 id="ModalClose-template--22802680283369__main" 3034 type="button" 3035 class="product-media-modal__toggle" 3036 aria-label="Close" 3037 > 3038 <svg 3039 xmlns="http://www.w3.org/2000/svg" 3040 aria-hidden="true" 3041 focusable="false" 3042 class="icon icon-close" 3043 fill="none" 3044 viewBox="0 0 18 17" 3045> 3046 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 3047</svg> 3048 3049 </button><div 3050 class="product-media-modal__content color-background-2 gradient" 3051 role="document" 3052 aria-label="Media gallery" 3053 tabindex="0" 3054 3055 > 3056<img 3057 class="global-media-settings global-media-settings--no-shadow" 3058 srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=550 550w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1100 1100w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1445 1445w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1680 1680w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=2048 2048w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=2200 2200w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=2890 2890w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025 4000w" 3059 sizes="(min-width: 750px) calc(100vw - 22rem), 1100px" 3060 src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&width=1445" 3061 alt="Rest + Digest Tea box on a yellow background" 3062 loading="lazy" 3063 width="1100" 3064 height="1375" 3065 data-media-id="37255658799337" 3066 > 3067<img 3068 class="global-media-settings global-media-settings--no-shadow" 3069 srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=550 550w,//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618 972w" 3070 sizes="(min-width: 750px) calc(100vw - 22rem), 1100px" 3071 src="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&width=1445" 3072 alt="Rest + Digest Tea" 3073 loading="lazy" 3074 width="1100" 3075 height="1377" 3076 data-media-id="39134129291497" 3077 > 3078<img 3079 class="global-media-settings global-media-settings--no-shadow" 3080 srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=550 550w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1100 1100w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1445 1445w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1680 1680w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=2048 2048w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=2200 2200w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=2890 2890w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618 4000w" 3081 sizes="(min-width: 750px) calc(100vw - 22rem), 1100px" 3082 src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&width=1445" 3083 alt="Open Rest + Digest Tea box with sachets inside" 3084 loading="lazy" 3085 width="1100" 3086 height="1375" 3087 data-media-id="37255673872617" 3088 > 3089<img 3090 class="global-media-settings global-media-settings--no-shadow" 3091 srcset="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=550 550w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1100 1100w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1445 1445w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1680 1680w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=2048 2048w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=2200 2200w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=2890 2890w,//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618 4000w" 3092 sizes="(min-width: 750px) calc(100vw - 22rem), 1100px" 3093 src="//doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&width=1445" 3094 alt="Rest + Digest Tea steeping in stacked glass tea cups" 3095 loading="lazy" 3096 width="1100" 3097 height="1375" 3098 data-media-id="37255643300073" 3099 ></div> 3100 </div> 3101</product-modal> 3102 3103 3104
3105<script src="//doctorstolberg.com/cdn/shop/t/46/assets/product-modal.js?v=116616134454508949461788989887" defer="defer"></script>
3105 3106
3106<script src="//doctorstolberg.com/cdn/shop/t/46/assets/media-gallery.js?v=154903906722396691211788989888" defer="defer"></script>
3106<script> 3107 document.addEventListener('DOMContentLoaded', function () { 3108 function isIE() { 3109 const ua = window.navigator.userAgent; 3110 const msie = ua.indexOf('MSIE '); 3111 const trident = ua.indexOf('Trident/'); 3112 3113 return msie > 0 || trident > 0; 3114 } 3115 3116 if (!isIE()) return; 3117 const hiddenInput = document.querySelector('#product-form-template--22802680283369__main input[name="id"]'); 3118 const noScriptInputWrapper = document.createElement('div'); 3119 const variantSwitcher = 3120 document.querySelector('variant-radios[data-section="template--22802680283369__main"]') || 3121 document.querySelector('variant-selects[data-section="template--22802680283369__main"]'); 3122 noScriptInputWrapper.innerHTML = document.querySelector( 3123 '.product-form__noscript-wrapper-template--22802680283369__main' 3124 ).textContent; 3125 variantSwitcher.outerHTML = noScriptInputWrapper.outerHTML; 3126 3127 document.querySelector('#Variants-template--22802680283369__main').addEventListener('change', function (event) { 3128 hiddenInput.value = event.currentTarget.value; 3129 }); 3130 }); 3131 </script>
3131<script type="application/ld+json"> 3132 { 3133 "@context": "http://schema.org/", 3134 "@type": "Product", 3135 "name": "Rest + Digest Tea", 3136 "url": "https:\/\/doctorstolberg.com\/products\/rest-digest-tea", 3137 "image": [ 3138 "https:\/\/doctorstolberg.com\/cdn\/shop\/files\/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025\u0026width=1920" 3139 ], 3140 "description": "A daily soothing, streamlined formula to support digestion and eliminate bloat.\nBloat a few times a week? Order 2 boxes and reset with 2 cups daily for the first 30 days. \nBloat most days? Order 4 boxes and reset with 2 cups daily for the first 60 days.", 3141 "sku": "TEA-REST-ORG-30-KIT-EA1", 3142 "brand": { 3143 "@type": "Brand", 3144 "name": "DR. STOLBERG'S HERBAL TEA" 3145 }, 3146 "offers": [{ 3147 "@type" : "Offer","sku": "TEA-REST-ORG-30-KIT-EA1","gtin12": 198168717509,"availability" : "http://schema.org/InStock", 3148 "price" : 45.0, 3149 "priceCurrency" : "USD", 3150 "url" : "https:\/\/doctorstolberg.com\/products\/rest-digest-tea?variant=50889447407849" 3151 } 3152] 3153 } 3154 </script>
3154 3155</section> 3156 3157 3158</section><div id="shopify-section-template--22802680283369__before_after_stats_rRqXfN" class="shopify-section section"><style data-shopify> 3159 .before-after-stats.section-template--22802680283369__before_after_stats_rRqXfN { 3160 padding-top: 27px; 3161 padding-bottom: 39px; 3162 } 3163 @media screen and (min-width: 750px) { 3164 .before-after-stats.section-template--22802680283369__before_after_stats_rRqXfN { 3165 padding-top: 36px; 3166 padding-bottom: 52px; 3167 } 3168 } 3169 3170 .before-after-stats__inner { 3171 display: flex; 3172 flex-direction: column; 3173 } 3174 @media screen and (min-width: 750px) { 3175 .before-after-stats__inner { 3176 flex-direction: row-reverse; 3177 align-items: stretch; 3178 gap: 0; 3179 } 3180 .before-after-stats__content { 3181 flex: 1; 3182 min-width: 0; 3183 display: flex; 3184 flex-direction: column; 3185 justify-content: center; 3186 padding-left: var(--gutter-multiplied); 3187 padding-right: 0; 3188 } 3189 .before-after-stats__media-wrap { 3190 flex: 0 0 22%; 3191 max-width: 22%; 3192 } 3193 } 3194 3195 .before-after-stats__heading { 3196 font-family: 'ABC Oracle Plus Variable', var(--font-heading-family); 3197 font-size: var(--font-heading-size); 3198 font-weight: var(--font-heading-weight); 3199 line-height: var(--font-heading-line-height); 3200 letter-spacing: var(--font-heading-letter-spacing); 3201 text-transform: uppercase; 3202 color: var(--text); 3203 margin: 0 0 1.25rem; 3204 word-break: keep-all; 3205 overflow-wrap: break-word; 3206 } 3207 @media screen and (max-width: 749px) { 3208 .before-after-stats__heading { 3209 text-align: center; 3210 } 3211 } 3212 3213 .before-after-stats__intro { 3214 font-family: var(--font-body-family); 3215 font-weight: var(--font-body-weight); 3216 font-size: 1.125rem; 3217 line-height: var(--font-body-line-height); 3218 letter-spacing: var(--font-body-letter-spacing); 3219 color: var(--text); 3220 margin: 0 0 1rem; 3221 } 3222 3223 .before-after-stats__stats { 3224 list-style: none; 3225 margin: 0 0 1rem; 3226 padding: 0; 3227 } 3228 .before-after-stats__stat { 3229 font-family: var(--font-body-family); 3230 font-weight: var(--font-body-weight); 3231 font-size: 1.125rem; 3232 line-height: var(--font-body-line-height); 3233 letter-spacing: var(--font-body-letter-spacing); 3234 color: var(--text); 3235 margin-bottom: 0.5rem; 3236 } 3237 .before-after-stats__stat:last-child { 3238 margin-bottom: 0; 3239 } 3240 .before-after-stats__stat strong { 3241 display: inline-block; 3242 width: 4rem; 3243 box-sizing: border-box; 3244 text-align: center; 3245 background: var(--accent); 3246 padding: 0.1em 0.35em 0.1em 0.25em; 3247 font-weight: var(--font-body-weight-med); 3248 font-size: 1.375rem; 3249 } 3250 3251 .before-after-stats__disclaimer { 3252 font-family: var(--font-body-family); 3253 font-weight: var(--font-body-weight); 3254 font-size: 0.6875rem; 3255 line-height: 1.4; 3256 letter-spacing: var(--font-body-letter-spacing); 3257 color: var(--text); 3258 font-style: italic; 3259 margin: 0; 3260 } 3261 3262 .before-after-stats__media-wrap { 3263 position: relative; 3264 width: 100%; 3265 margin-top: 1.5rem; 3266 } 3267 @media screen and (min-width: 750px) { 3268 .before-after-stats__media-wrap { 3269 margin-top: 0; 3270 } 3271 } 3272 .before-after-stats__media { 3273 position: relative; 3274 width: 100%; 3275 overflow: hidden; 3276 } 3277 .before-after-stats__media.adapt img { 3278 position: absolute; 3279 top: 0; 3280 left: 0; 3281 width: 100%; 3282 height: 100%; 3283 object-fit: cover; 3284 } 3285 3286 .before-after-stats.section-template--22802680283369__before_after_stats_rRqXfN .before-after-stats__media.adapt { 3287 padding-bottom: 149.41406250000003%; 3288 } 3289 3290 .before-after-stats__media:not(.adapt) img { 3291 width: 100%; 3292 height: auto; 3293 display: block; 3294 vertical-align: middle; 3295 } 3296 .before-after-stats__overlay { 3297 position: absolute; 3298 top: 0; 3299 left: 0; 3300 padding: 0.75rem 1rem; 3301 background: rgba(0, 0, 0, 0.6); 3302 color: #fff; 3303 font-family: var(--font-heading-family); 3304 font-weight: var(--font-cta-weight); 3305 font-size: var(--font-cta-size); 3306 line-height: var(--font-cta-line-height); 3307 letter-spacing: var(--font-cta-letter-spacing); 3308 text-transform: uppercase; 3309 } 3310 .before-after-stats__caption { 3311 font-family: var(--font-body-family); 3312 font-weight: var(--font-body-weight); 3313 font-size: 0.75rem; 3314 line-height: 1.4; 3315 letter-spacing: var(--font-body-letter-spacing); 3316 color: var(--text); 3317 font-style: italic; 3318 margin: 0.75rem 0 0; 3319 } 3320</style> 3321 3322<section class="before-after-stats section-template--22802680283369__before_after_stats_rRqXfN" id="section-template--22802680283369__before_after_stats_rRqXfN"> 3323 <div class="page-width"> 3324 <div class="before-after-stats__inner"> 3325 <div class="before-after-stats__content"> 3326 3327 <h2 class="before-after-stats__heading h2">Eat the foods you love without the fear of bloating.</h2> 3328 3329 3330 <p class="before-after-stats__intro">Among regular Rest + Digest users:</p> 3331 3332 <ul class="before-after-stats__stats"> 3333 3334 <li class="before-after-stats__stat"> 3335 <strong>89%</strong> 3336 report improved digestion 3337 </li> 3338 3339 3340 <li class="before-after-stats__stat"> 3341 <strong>81%</strong> 3342 experience less bloating 3343 </li> 3344 3345 3346 <li class="before-after-stats__stat"> 3347 <strong>
334776%</strong> 3348 feel relief within a few hours 3349 </li> 3350 3351 </ul> 3352 3353 <p class="before-after-stats__disclaimer">*Based on a survey of 73 consistent Rest + Digest users. Individual results may vary.</p> 3354 3355 </div> 3356 <div class="before-after-stats__media-wrap"> 3357 <div class="before-after-stats__media adapt"> 3358 3359<img src="//doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&width=1500" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&width=375 375w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&width=550 550w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&width=750 750w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&width=1500 1500w" width="1500" height="2241" loading="lazy" sizes="(min-width: 750px) 22vw, 100vw"> 3360 3361 3362 </div> 3363 3364 <p class="before-after-stats__caption">Dr. Stolberg drinks two cups of Rest + Digest to ease post-meal bloating. Results shown above are within 45 minutes.</p> 3365 3366 </div> 3367 </div> 3368 </div> 3369</section> 3370 3371 3372</div><div id="shopify-section-template--22802680283369__message_testimonials_4p7DU8" class="shopify-section"><style data-shopify> 3373 /* 3374 * Prefixed by https://autoprefixer.github.io 3375 * PostCSS: v8.4.14, 3376 * Autoprefixer: v10.4.7 3377 * Browsers: last 4 version 3378 */ 3379 3380 /* Wrapper */ 3381 .message-testimonial { 3382 margin-bottom: calc(var(--gutter)*2); 3383 height: 0; 3384 } 3385 @media screen and (min-width: 750px) { 3386 .message-testimonials__wrapper { 3387 padding-left: calc(var(--gutter)*1.33) !important; 3388 padding-right: calc(var(--gutter)*1.33) !important; 3389 } 3390 } 3391 @media screen and (min-width: 990px) { 3392 .message-testimonials__wrapper { 3393 padding-left: 0 !important; 3394 padding-right: 0 !important; 3395 } 3396 } 3397 3398 /* Heading */ 3399 .message-testimonials__heading { 3400 text-align: center; 3401 margin-bottom: calc(var(--gutter)*2); 3402 } 3403 3404 /* Attribution */ 3405 .message-testimonial__attribution { 3406 margin-bottom: calc(var(--gutter)/2); 3407 } 3408 3409 /* Text */ 3410 .message-testimonial__text { 3411 background-color: var(--bg-grey); 3412 border-radius: 30px 30px 30px 10px; 3413 padding: var(--gutter); 3414 position: relative; 3415 } 3416 .message-testimonial__text:after { 3417 content: ''; 3418 display: block; 3419 width: 15px; 3420 height: 30px; 3421 background-image: url('https://cdn.shopify.com/s/files/1/0636/7513/8281/files/message.svg?v=1747891980'); 3422 background-repeat: no-repeat; 3423 background-size: contain; 3424 position: absolute; 3425 bottom: -3px; 3426 left: 0; 3427 -webkit-transform: translateX(-65%); 3428 -ms-transform: translateX(-65%); 3429 transform: translateX(-65%); 3430 z-index: -1; 3431 } 3432 .message-testimonial__text p { 3433 margin-top: 0 !important; 3434 margin-bottom: var(--gutter) !important; 3435 } 3436 .message-testimonial__text p:last-of-type { 3437 margin-bottom: 0 !important; 3438 } 3439 3440 /* Typing Indicator */ 3441 .typing-indicator { 3442 position: relative; 3443 display: -webkit-box; 3444 display: -ms-flexbox; 3445 display: flex; 3446 gap: 4px; 3447 -webkit-box-pack: start; 3448 -ms-flex-pack: start; 3449 justify-content: flex-start; 3450 padding: var(--gutter); 3451 border-radius: 18px; 3452 background: var(--bg-grey); 3453 width: -webkit-fit-content; 3454 width: -moz-fit-content; 3455 width: fit-content; 3456 margin-bottom: var(--gutter); 3457 } 3458 .typing-indicator:after { 3459 content: ''; 3460 display: block; 3461 width: 15px; 3462 height: 30px; 3463 background-image: url('https://cdn.shopify.com/s/files/1/0636/7513/8281/files/message.svg?v=1747891980'); 3464 background-repeat: no-repeat; 3465 background-size: contain; 3466 position: absolute; 3467 bottom: -3px; 3468 left: 0; 3469 -webkit-transform: translateX(-65%); 3470 -ms-transform: translateX(-65%); 3471 transform: translateX(-65%); 3472 z-index: -1; 3473 } 3474 .typing-indicator span { 3475 width: 8px; 3476 height: 8px; 3477 background: #888; 3478 border-radius: 50%; 3479 -webkit-animation: bounce 1s infinite ease-in-out; 3480 animation: bounce 1s infinite ease-in-out; 3481 } 3482 .typing-indicator span:nth-child(2) { 3483 -webkit-animation-delay: 0.2s; 3484 animation-delay: 0.2s; 3485 } 3486 .typing-indicator span:nth-child(3) { 3487 -webkit-animation-delay: 0.4s; 3488 animation-delay: 0.4s; 3489 } 3490 @-webkit-keyframes bounce { 3491 0%, 80%, 100% { -webkit-transform: scale(0); transform: scale(0); } 3492 40% { -webkit-transform: scale(1); transform: scale(1); } 3493 } 3494 @keyframes bounce { 3495 0%, 80%, 100% { -webkit-transform: scale(0); transform: scale(0); } 3496 40% { -webkit-transform: scale(1); transform: scale(1); } 3497 } 3498 3499 /* Message Reaction */ 3500 .message-testimonial__reaction { 3501 display: -webkit-box; 3502 display: -ms-flexbox; 3503 display: flex; 3504 -webkit-box-pack: center; 3505 -ms-flex-pack: center; 3506 justify-content: center; 3507 -webkit-box-align: center; 3508 -ms-flex-align: center; 3509 align-items: center; 3510 opacity: 0; 3511 -webkit-transform: scale(0); 3512 -ms-transform: scale(0); 3513 transform: scale(0); 3514 margin-left: 0.4em; 3515 -webkit-transition: opacity 0.2s ease, -webkit-transform 0.3s ease; 3516 transition: opacity 0.2s ease, -webkit-transform 0.3s ease; 3517 -o-transition: opacity 0.2s ease, transform 0.3s ease; 3518 transition: opacity 0.2s ease, transform 0.3s ease; 3519 transition: opacity 0.2s ease, transform 0.3s ease, -webkit-transform 0.3s ease; 3520 position: absolute; 3521 top: -0.75rem; 3522 right: -0.75rem; 3523 background-color: var(--blue); 3524 padding: calc(var(--gutter)/2); 3525 border-radius: 100%; 3526 width: 2rem; 3527 height: 2rem; 3528 text-align: center; 3529 line-height: 1rem; 3530 } 3531 .message-testimonial__reaction svg { 3532 /* width: 18px; */ 3533 } 3534 .message-testimonial__reaction:after { 3535 content: ''; 3536 display: block; 3537 width: 10px; 3538 height: 10px; 3539 border-radius: 100%; 3540 background-color: var(--blue); 3541 position: absolute; 3542 bottom: 0; 3543 right: 0; 3544 z-index: -1; 3545 } 3546</style> 3547
3548<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js" async></script>
vendor: 1 bytes, line 3548
3548
3549<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js" async></script>
3549 3550
3551<script src="//doctorstolberg.com/cdn/shop/t/46/assets/message.js?v=164734766324743239531788989888" defer="defer"></script>
3551 3552 3553<section class="message-testimonials"> 3554 <div class="message-testimonials__wrapper grid--12-col"> 3555 3556 <!-- Heading --> 3557 3558 3559 <div class="message-testimonials__heading h2 grid--12-col__item"> 3560 <h2>Real people,<br/>real results.</h2> 3561 </div> 3562 3563 3564 <!-- Testimonial Messages --> 3565 3566 <div class="message-testimonials__wrapper grid--12-col__item"> 3567 3568 3569 <div class="message-testimonial-sequence" > 3570 <div class="typing-indicator" style="opacity: 0"> 3571 <span></span><span></span><span></span> 3572 </div> 3573 <div class="message-testimonial" style="opacity: 0"> 3574 <div class="message-testimonial__attribution">Elinor S.</div> 3575 <div class="message-testimonial__text"> 3576 <p><div class="metafield-rich_text_field"><p>I did the 30 day rest digest and reset and I feel so much lighter! I'm having fewer issues with bloating and pain after meals. This tea has now become a staple in our house!</p></div></p> 3577 <span class="message-testimonial__reaction" aria-hidden="true" style="opacity: 0"> 3578 <svg width="22" height="19" viewBox="0 0 22 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 3579 <path d="M19.8401 1.61012C19.3294 1.09912 18.7229 0.693763 18.0555 0.417201C17.388 0.140638 16.6726 -0.00170898 15.9501 -0.00170898C15.2276 -0.00170898 14.5122 0.140638 13.8448 0.417201C13.1773 0.693763 12.5709 1.09912 12.0601 1.61012L11.0001 2.67012L9.94012 1.61012C8.90843 0.578425 7.50915 -0.00117422 6.05012 -0.00117421C4.59109 -0.0011742 3.19181 0.578425 2.16012 1.61012C1.12843 2.64181 0.548828 4.04108 0.548828 5.50012C0.548828 6.95915 1.12843 8.35842 2.16012 9.39012L3.22012 10.4501L11.0001 18.2301L18.7801 10.4501L19.8401 9.39012C20.3511 8.87936 20.7565 8.27293 21.033 7.60547C21.3096 6.93801 21.4519 6.2226 21.4519 5.50012C21.4519 4.77763 21.3096 4.06222 21.033 3.39476C20.7565 2.7273 20.3511 2.12087 19.8401 1.61012Z" fill="#FFFF00"/> 3580 </svg> 3581 </span> 3582 </div> 3583 </div> 3584 </div> 3585 3586 3587 3588 <div class="message-testimonial-sequence" > 3589 <div class="typing-indicator" style="opacity: 0"> 3590 <span></span><span></span><span></span> 3591 </div> 3592 <div class="message-testimonial" style="opacity: 0"> 3593 <div class="message-testimonial__attribution">Mollie M.</div> 3594 <div class="message-testimonial__text"> 3595 <p><div class="metafield-rich_text_field"><p>Itâs so so good. Iâm 7 days into making it my new bedtime routine and Iâm never going back to the old teas I used to use. Iâm addicted! Waking up feeling less bloating / discomfort. Love this tea!</p></div></p> 3596 <span class="message-testimonial__reaction" aria-hidden="true" style="opacity: 0"> 3597 <svg width="22" height="19" viewBox="0 0 22 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 3598 <path d="M19.8401 1.61012C19.3294 1.09912 18.7229 0.693763 18.0555 0.417201C17.388 0.140638 16.6726 -0.00170898 15.9501 -0.00170898C15.2276 -0.00170898 14.5122 0.140638 13.8448 0.417201C13.1773 0.693763 12.5709 1.09912 12.0601 1.61012L11.0001 2.67012L9.94012 1.61012C8.90843 0.578425 7.50915 -0.00117422 6.05012 -0.00117421C4.59109 -0.0011742 3.19181 0.578425 2.16012 1.61012C1.12843 2.64181 0.548828 4.04108 0.548828 5.50012C0.548828 6.95915 1.12843 8.35842 2.16012 9.39012L3.22012 10.4501L11.0001 18.2301L18.7801 10.4501L19.8401 9.39012C20.3511 8.87936 20.7565 8.27293 21.033 7.60547C21.3096 6.93801 21.4519 6.2226 21.4519 5.50012C21.4519 4.77763 21.3096 4.06222 21.033 3.39476C20.7565 2.7273 20.3511 2.12087 19.8401 1.61012Z" fill="#FFFF00"/> 3599 </svg> 3600 </span> 3601 </div> 3602 </div> 3603 </div> 3604 3605 3606 3607 <div class="message-testimonial-sequence" > 3608 <div class="typing-indicator" style="opacity: 0">
3609 <span></span><span></span><span></span> 3610 </div> 3611 <div class="message-testimonial" style="opacity: 0"> 3612 <div class="message-testimonial__attribution">Samantha H.</div> 3613 <div class="message-testimonial__text"> 3614 <p><div class="metafield-rich_text_field"><p>For years I struggled with bloating almost daily. I tried cutting out a bunch of foods, but nothing worked. I finally found Rest + Digest and it truly changed everything for me. I did the 30 day reset, and since then have been able to eat ANYTHING and not bloat. I now drink the tea as needed- after eating out, drinking alcohol, etc.</p></div></p> 3615 <span class="message-testimonial__reaction" aria-hidden="true" style="opacity: 0"> 3616 <svg width="22" height="19" viewBox="0 0 22 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 3617 <path d="M19.8401 1.61012C19.3294 1.09912 18.7229 0.693763 18.0555 0.417201C17.388 0.140638 16.6726 -0.00170898 15.9501 -0.00170898C15.2276 -0.00170898 14.5122 0.140638 13.8448 0.417201C13.1773 0.693763 12.5709 1.09912 12.0601 1.61012L11.0001 2.67012L9.94012 1.61012C8.90843 0.578425 7.50915 -0.00117422 6.05012 -0.00117421C4.59109 -0.0011742 3.19181 0.578425 2.16012 1.61012C1.12843 2.64181 0.548828 4.04108 0.548828 5.50012C0.548828 6.95915 1.12843 8.35842 2.16012 9.39012L3.22012 10.4501L11.0001 18.2301L18.7801 10.4501L19.8401 9.39012C20.3511 8.87936 20.7565 8.27293 21.033 7.60547C21.3096 6.93801 21.4519 6.2226 21.4519 5.50012C21.4519 4.77763 21.3096 4.06222 21.033 3.39476C20.7565 2.7273 20.3511 2.12087 19.8401 1.61012Z" fill="#FFFF00"/> 3618 </svg> 3619 </span> 3620 </div> 3621 </div> 3622 </div> 3623 3624 3625 3626 </div> 3627 3628 </div> 3629</section> 3630 3631 3632 3633 3634</div><section id="shopify-section-template--22802680283369__collapsible_content_a9pPgn" class="shopify-section section"><link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-accordion.css?v=180964204318874863811788989886" rel="stylesheet" type="text/css" media="all" /> 3635<link href="//doctorstolberg.com/cdn/shop/t/46/assets/collapsible-content.css?v=42068948719489434321788989890" rel="stylesheet" type="text/css" media="all" /> 3636<style data-shopify>.section-template--22802680283369__collapsible_content_a9pPgn-padding { 3637 padding-top: 75px; 3638 padding-bottom: 0px; 3639 } 3640 3641 @media screen and (min-width: 750px) { 3642 .section-template--22802680283369__collapsible_content_a9pPgn-padding { 3643 padding-top: 100px; 3644 padding-bottom: 0px; 3645 } 3646 }</style><div class="color-background-1 gradient"> 3647 <div class="collapsible-content collapsible-none-layout isolate content-container content-container--full-width"> 3648 <div class="collapsible-content__wrapper grid--12-col section-template--22802680283369__collapsible_content_a9pPgn-padding"> 3649 <div class="collapsible-content-wrapper-narrow grid--12-col__item"> 3650 <div 3651 class="collapsible-content__header scroll-trigger animate--slide-in" 3652 style="text-align: center;" 3653 > 3654<h2 class="collapsible-content__heading inline-richtext h1"> 3655 Product FAQs 3656 </h2> 3657 </div> 3658 <div class="grid grid--1-col grid--2-col-tablet collapsible-content__grid collapsible-content__grid--reverse scroll-trigger animate--slide-in"> 3659 <div class="grid__item"> 3660<div 3661 class="accordion" 3662 3663 > 3664 <details 3665 id="Details-collapsible_row_FEfE9B-template--22802680283369__collapsible_content_a9pPgn" 3666 3667 open 3668 3669 > 3670 <summary id="Summary-collapsible_row_FEfE9B-template--22802680283369__collapsible_content_a9pPgn"> 3671 3672 <h3 class="accordion__title inline-richtext h4"> 3673 Which Rest + Digest protocol â¨is right for me? 3674 </h3> 3675 <svg 3676 xmlns="http://www.w3.org/2000/svg" 3677 aria-hidden="true" 3678 focusable="false" 3679 class="icon icon-plus" 3680 fill="none" 3681 viewBox="0 0 10 10" 3682> 3683 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 3684</svg> 3685 3686 </summary> 3687 <div 3688 class="accordion__content rte" 3689 id="CollapsibleAccordion-collapsible_row_FEfE9B-template--22802680283369__collapsible_content_a9pPgn" 3690 role="region" 3691 aria-labelledby="Summary-collapsible_row_FEfE9B-template--22802680283369__collapsible_content_a9pPgn" 3692 > 3693 <div class="metafield-rich_text_field"><p>If you experience bloating a few times a week, order 2 boxes and reset by drinking 2 cups per day for the first 30 days. Continue with one cup daily after your reset. </p><p>If you experience bloating most days of the week, order 4 boxes and reset by drinking 2 cups per day for the first 60 days. Continue with one cup daily after your reset. </p><p>Need more guidance deciding?</p><p><a href="/pages/quiz">Ask Doctor Stolberg!</a></p></div> 3694 3695 </div> 3696 </details> 3697 </div><div 3698 class="accordion" 3699 3700 > 3701 <details 3702 id="Details-collapsible_row_FEfE9B-1-template--22802680283369__collapsible_content_a9pPgn" 3703 3704 > 3705 <summary id="Summary-collapsible_row_FEfE9B-1-template--22802680283369__collapsible_content_a9pPgn"> 3706 3707 <h3 class="accordion__title inline-richtext h4"> 3708 Does Rest + Digest contain any laxative herbs? 3709 </h3> 3710 <svg 3711 xmlns="http://www.w3.org/2000/svg" 3712 aria-hidden="true" 3713 focusable="false" 3714 class="icon icon-plus" 3715 fill="none" 3716 viewBox="0 0 10 10" 3717> 3718 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 3719</svg> 3720 3721 </summary> 3722 <div 3723 class="accordion__content rte" 3724 id="CollapsibleAccordion-collapsible_row_FEfE9B-1-template--22802680283369__collapsible_content_a9pPgn" 3725 role="region" 3726 aria-labelledby="Summary-collapsible_row_FEfE9B-1-template--22802680283369__collapsible_content_a9pPgn" 3727 > 3728 <div class="metafield-rich_text_field"><p>Rest + Digest does not contain any laxative herbs. However, some find it helps to gently regulate constipation.</p></div> 3729 3730 </div> 3731 </details> 3732 </div><div 3733 class="accordion" 3734 3735 > 3736 <details 3737 id="Details-collapsible_row_FEfE9B-2-template--22802680283369__collapsible_content_a9pPgn" 3738 3739 > 3740 <summary id="Summary-collapsible_row_FEfE9B-2-template--22802680283369__collapsible_content_a9pPgn"> 3741 3742 <h3 class="accordion__title inline-richtext h4"> 3743 How quickly does Rest + Digest work? 3744 </h3> 3745 <svg 3746 xmlns="http://www.w3.org/2000/svg" 3747 aria-hidden="true" 3748 focusable="false" 3749 class="icon icon-plus" 3750 fill="none" 3751 viewBox="0 0 10 10" 3752> 3753 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 3754</svg> 3755 3756 </summary> 3757 <div 3758 class="accordion__content rte" 3759 id="CollapsibleAccordion-collapsible_row_FEfE9B-2-template--22802680283369__collapsible_content_a9pPgn" 3760 role="region" 3761 aria-labelledby="Summary-collapsible_row_FEfE9B-2-template--22802680283369__collapsible_content_a9pPgn" 3762 > 3763 <div class="metafield-rich_text_field"><p>Rest + Digest can offer relief from bloating in as little as an hour however, it is best used consistently as part of a daily routine to strengthen digestion.</p><p><strong>Bloat a few times a week?<br /> 3764</strong>Order 2 boxes and<strong> </strong>reset with 2 cups daily for the first 30 days. </p><p><strong>Bloat most days?<br /> 3765</strong>Order 4 boxes and reset with 2 cups daily for the first 60 days.
3765</p></div> 3766 3767 </div> 3768 </details> 3769 </div><div 3770 class="accordion" 3771 3772 > 3773 <details 3774 id="Details-collapsible_row_FEfE9B-3-template--22802680283369__collapsible_content_a9pPgn" 3775 3776 > 3777 <summary id="Summary-collapsible_row_FEfE9B-3-template--22802680283369__collapsible_content_a9pPgn"> 3778 3779 <h3 class="accordion__title inline-richtext h4"> 3780 Can I drink Rest + Digest Long Term? 3781 </h3> 3782 <svg 3783 xmlns="http://www.w3.org/2000/svg" 3784 aria-hidden="true" 3785 focusable="false" 3786 class="icon icon-plus" 3787 fill="none" 3788 viewBox="0 0 10 10" 3789> 3790 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"> 3791</svg> 3792 3793 </summary> 3794 <div 3795 class="accordion__content rte" 3796 id="CollapsibleAccordion-collapsible_row_FEfE9B-3-template--22802680283369__collapsible_content_a9pPgn" 3797 role="region" 3798 aria-labelledby="Summary-collapsible_row_FEfE9B-3-template--22802680283369__collapsible_content_a9pPgn" 3799 > 3800 <div class="metafield-rich_text_field"><p>Yes! Rest + Digest is formulated for daily drinking. Sip after meals or when under stress to balance the stomach and ease bloating. For those who experience bloating often we recommend drinking 2 cups daily for 30-60 days as a gentle reset. </p></div> 3801 3802 </div> 3803 </details> 3804 </div> 3805 </div> 3806 </div> 3807 </div> 3808 </div> 3809 </div> 3810</div> 3811 3812 3813</section><section id="shopify-section-template--22802680283369__17437329545471ae15" class="shopify-section section"><div class="page-width scroll-trigger animate--slide-in"><div id="shopify-block-AUk94RkpuYk15bm1TU__junip_junip_product_review_QKRXLn" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: junip-product-review --><span 3814 class="junip-product-review" 3815 data-product-id="8254808785129" 3816 data-title="" 3817 data-title-alignment="" 3818 data-sort-order="mostRecent"> 3819</span> 3820<!-- END app snippet --> 3821 3822 3823</div> 3824</div> 3825 3826 3827<style> #shopify-section-template--22802680283369__17437329545471ae15 button[class*="junip"] {text-transform: uppercase !important;} </style></section> 3828 </main> 3829
3829<script id="rebuy-recommended-template" type="text/template"> 3830<div class="rebuy-widget" 3831v-cloak 3832v-on:click="stopPropagation($event)" 3833v-bind:id="'rebuy-widget-' + id" 3834v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]"> 3835 <div 3836 class="rebuy-widget-container" 3837 v-cloak 3838 v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]" 3839 v-on:click.self="config.display_type == 'popup' && hide()"> 3840 3841 <div class="rebuy-widget-content"> 3842 <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal"> 3843 <rebuy-icon name="x"></rebuy-icon> 3844 </div> 3845 3846 <div class="rebuy-timer" v-if="hasTimer()"> 3847 <p class="rebuy-timer-title" v-if="config.language.timer_title"> 3848 <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span> 3849 </p> 3850 </div> 3851 3852 <h3 class="super-title" v-if="config.language.super_title != ''" v-html="config.language.super_title"></h3> 3853 3854 <h4 class="primary-title" v-if="config.language.title != ''" v-html="config.language.title"></h4> 3855 3856 <div class="description" v-if="config.language.description != ''" v-html="config.language.description"></div> 3857 3858 <div class="rebuy-product-grid" v-bind:class="layoutClasses" role="list"> 3859 3860 <div 3861 v-for="(product, product_index) in products" 3862 v-bind:class="[ 3863 product.handle, 3864 'product-id-' + product.id, 3865 cartHasProduct(product) ? 'cart-has-item' : '', 3866 productTagClasses(product), 3867 hasSplideCarousel ? 'splide__slide' : '', 3868 ]" 3869 aria-label="product" 3870 class="rebuy-product-block" 3871 role="listitem" 3872 > 3873 3874 <div class="rebuy-product-media"> 3875 <a 3876 v-if="!(hasProductQuickViewEnabled() && hasQuickViewPhotoTrigger())" 3877 class="rebuy-product-image" 3878 tabindex="-1" 3879 v-bind:href="learnMoreURL(product)" 3880 v-bind:style="imageStyles" 3881 v-on:click="learnMore(product, $event);" 3882 v-bind:class="[hasLearnMore() ? 'clickable' : '']" 3883 rel="nofollow" 3884 > 3885 <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '800x800')" v-bind:alt="itemImageAlt(product, product.selected_variant)"> 3886 </a> 3887 <button 3888 v-if="hasProductQuickViewEnabled() && hasQuickViewPhotoTrigger()" 3889 class="rebuy-product-image-trigger" 3890 v-bind:style="imageStyles" 3891 v-on:click="openQuickViewVariantModal(product)" 3892 v-bind:aria-label="'Quick view ' + product.title" 3893 type="button" 3894 > 3895 <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)"> 3896 </button> 3897 </div> 3898 <div class="rebuy-product-info"> 3899 <h5 3900 class="rebuy-product-title" 3901 v-bind:class="[hasLearnMore() ? 'clickable' : '']"> 3902 <a 3903 v-bind:href="learnMoreURL(product)" 3904 class="rebuy-product-title-link" 3905 v-on:click="learnMore(product, $event);" 3906 v-html="product.title" 3907 v-bind:class="[hasLearnMore() ? 'clickable' : '']" 3908 v-bind:aria-label="'View ' + product.title" 3909 rel="nofollow" 3910 ></a> 3911 </h5> 3912 <div 3913 class="rebuy-product-vendor-container" 3914 v-if="showProductVendor(product.vendor)" 3915 > 3916 <a 3917 class="rebuy-product-vendor" 3918 v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']" 3919 v-html="product.vendor" 3920 v-bind:href="vendorURL(product.vendor)" 3921 v-bind:aria-label="'View ' + product.vendor + ' products'" 3922 rel="nofollow" 3923 ></a> 3924 </div> 3925 <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div> 3926 <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
3927 <span class="rebuy-star-rating"> 3928 <span 3929 v-if="product.reviews.star_rating" 3930 class="rebuy-star-rating-value sr-only" 3931 v-html="product.reviews.star_rating + ' stars out of 5 stars'" 3932 > 3933 </span> 3934 <span class="rebuy-star-rating-background"></span> 3935 <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span> 3936 </span> 3937 <span class="rebuy-review-count" v-html="productReviewCount(product)"></span> 3938 </div> 3939 3940 <div class="rebuy-product-price"> 3941 <div v-if="variantOnSale(product, product.selected_variant)"> 3942 <span class="rebuy-money sale"> 3943 <span class="sr-only">Sale price</span> 3944 <span v-html="formatMoney(variantPrice(product, product.selected_variant))"></span> 3945 </span> 3946 <span class="rebuy-money compare-at"> 3947 <span class="sr-only">Original price</span> 3948 <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span> 3949 </span> 3950 </div> 3951 <div v-if="!(variantOnSale(product, product.selected_variant))"> 3952 <span class="rebuy-money"> 3953 <span class="sr-only">Price</span> 3954 <span v-html="formatMoney(variantPrice(product, product.selected_variant))"></span> 3955 </span> 3956 </div> 3957 </div> 3958 <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div> 3959 </div> 3960 <div class="rebuy-product-options" v-if="showVariantSelect(product)"> 3961 <select 3962 title="Select product variant" 3963 :id="id + '-' + 'select' + '-' + product_index" 3964 :class="{ hide : config.view_options.variant_selector === 'buttons' }" 3965 class="rebuy-select" 3966 v-bind:aria-label="'variant of ' + product.title" 3967 v-model="product.selected_variant_id" 3968 v-on:change="selectVariant(product)"> 3969 <option 3970 v-for="variant in product.variants" 3971 class="rebuy-product-options__option" 3972 :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }" 3973 v-bind:value="variant.id" 3974 :disabled="!variantAvailable(variant)" 3975 v-html="formatVariantOptionTitle(variant)"> 3976 </option> 3977 </select> 3978 3979 <div 3980 class="rebuy-product-options__button-swatches-container" 3981 :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }" 3982 > 3983 <div 3984 v-for="option in product.options" 3985 :key="'option-' + product.id + '-' + option.name" 3986 class="rebuy-product-options__button-swatches rebuy-size-swatches" 3987 > 3988 <div 3989 v-for="(value, value_index) in filterOOSOptions(option, product)" 3990 :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index" 3991 > 3992 <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch"> 3993 <input 3994 :name="id + '-color-' + product_index" 3995 :id="id + '-color-' + product_index + '-' + value + '-' + value_index" 3996 :checked="hasSwatchOptionSelected(product, value, value_index, 'color')" 3997 :value="value" 3998 type="radio" 3999 class="rebuy-color-input hide" 4000 v-on:change="selectVariantByOption(product, option.name, value)" 4001 :disabled="isDisabledOptionValue(product, option.name, value)" 4002 /> 4003 4004 <label 4005 :for="id + '-color-' + product_index + '-' + value + '-' + value_index" 4006 :style="getMerchantThemeColorAssetStyle(value)" 4007 :title="value" 4008 class="rebuy-color-label" 4009 :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }" 4010 > 4011 </label> 4012 </div> 4013 4014 <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch"> 4015 <input 4016 :name="id + '-' + option.name + '-' + product_index" 4017 :id="id + '-' + option.name + '-' + product_index + '-' + value" 4018 :checked="hasSwatchOptionSelected(product, value, value_index, option.name)" 4019 :value="value" 4020 type="radio" 4021 class="rebuy-size-input hide" 4022 v-on:change="selectVariantByOption(product, option.name, value)" 4023 :disabled="isDisabledOptionValue(product, option.name, value)" 4024 /> 4025 4026 <label 4027 :for="id + '-' + option.name + '-' + product_index + '-' + value" 4028 class="rebuy-size-label" 4029 :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }" 4030 > 4031 4032 </label> 4033 </div> 4034 </div> 4035 </div> 4036 </div> 4037 </div> 4038 4039 <div class="rebuy-product-actions"> 4040 <button 4041 v-if="hasProductQuickViewEnabled() && hasQuickViewButtonTrigger()" 4042 class="product-quick-view-button rebuy-button outline" 4043 v-on:click="openQuickViewVariantModal(product)" 4044 v-bind:aria-label="'Quick view ' + product.title" 4045 type="button">
4046 <span v-html="getQuickViewButtonText()"></span> 4047 </button> 4048 4049 <div class="subscription-checkbox" v-if="showSubscriptionOptions(product)"> 4050 <label class="rebuy-checkbox-label"> 4051 <input 4052 class="checkbox-input rebuy-checkbox" 4053 v-model="product.subscription" 4054 v-on:change="toggleSubscription(product)" 4055 type="checkbox" 4056 :aria-label="upgradeToSubscriptionAriaLabel(product)" 4057 /> 4058 <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span> 4059 </label> 4060 </div> 4061 4062 <div class="subscription-frequency" v-if="showSubscriptionFrequency(product)"> 4063 <select 4064 class="rebuy-select" 4065 aria-label="subscription frequency" 4066 v-model="product.subscription_frequency" 4067 v-on:change="updateSubscriptionFrequency(product)"> 4068 <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency"></option> 4069 </select> 4070 </div> 4071 4072 <div class="product-quantity" v-if="hasQuantityInputEnabled()"> 4073 <div class="rebuy-select-wrapper"> 4074 <label class="rebuy-label">Quantity</label> 4075 <select 4076 class="rebuy-select" 4077 aria-label="product quantity" 4078 v-model="product.quantity"> 4079 <option v-for="n in maxQuantityInputValue()" v-bind:value="n"></option> 4080 </select> 4081 </div> 4082 </div> 4083 4084 <button 4085 class="rebuy-button" 4086 v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }" 4087 v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')" 4088 v-bind:aria-label="buttonAriaLabel(product)" 4089 v-on:click="addToCart(product)" 4090 type="button"> 4091 <span v-html="buttonLabel(product)"></span> 4092 </button> 4093 </div> 4094 </div> 4095 4096 </div> 4097 4098 <div class="rebuy-modal-actions" v-if="showContinueButton()"> 4099 <button 4100 class="rebuy-button decline" 4101 v-on:click="hide()" 4102 type="button"> 4103 <span v-html="continueLabel()"></span> 4104 </button> 4105 </div> 4106 4107 4108 </div> 4109 4110 </div> 4111</div> 4112</script>
4112 4113 4114 <!-- BEGIN sections: footer-group --> 4115<div id="shopify-section-sections--22802679103721__footer" class="shopify-section shopify-section-group-footer-group"> 4116<link href="//doctorstolberg.com/cdn/shop/t/46/assets/section-footer.css?v=125160298726032154631788989887" rel="stylesheet" type="text/css" media="all" /> 4117<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-newsletter.css?v=4727253280200485261788989887" rel="stylesheet" type="text/css" media="all" /> 4118<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-list-menu.css?v=151968516119678728991788989892" rel="stylesheet" type="text/css" media="all" /> 4119<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-list-payment.css?v=69253961410771838501788989893" rel="stylesheet" type="text/css" media="all" /> 4120<link href="//doctorstolberg.com/cdn/shop/t/46/assets/component-list-social.css?v=35792976012981934991788989893" rel="stylesheet" type="text/css" media="all" /> 4121<style data-shopify>.footer { 4122 margin-top: 0px; 4123 } 4124 4125 .section-sections--22802679103721__footer-padding { 4126 padding-top: 21px; 4127 padding-bottom: 0px; 4128 } 4129 4130 @media screen and (min-width: 750px) { 4131 .footer { 4132 margin-top: 0px; 4133 } 4134 4135 .section-sections--22802679103721__footer-padding { 4136 padding-top: 28px; 4137 padding-bottom: 0px; 4138 } 4139 }</style><footer class="footer color-inverse gradient section-sections--22802679103721__footer-padding"><div class="footer__content-top page-width grid--12-col"><div 4140 class="footer-block--newsletter scroll-trigger animate--slide-in grid--12-col__item padding--tablet" 4141 4142 data-cascade 4143 4144 ><div class="footer-block__newsletter"><h2 class="footer-block__heading inline-richtext">Sign up for our newsletter and get 10% off your first order.</h2><form method="post" action="/contact#ContactFooter" id="ContactFooter" accept-charset="UTF-8" class="footer__newsletter newsletter-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="contact[tags]" value="newsletter"> 4145 <div class="newsletter-form__field-wrapper"> 4146 <div class="field"> 4147 <input 4148 id="NewsletterForm--sections--22802679103721__footer" 4149 type="email" 4150 name="contact[email]" 4151 class="field__input" 4152 value="" 4153 aria-required="true" 4154 autocorrect="off" 4155 autocapitalize="off" 4156 autocomplete="email" 4157 4158 placeholder="Email" 4159 required 4160 > 4161 <label class="field__label" for="NewsletterForm--sections--22802679103721__footer"> 4162 Email 4163 </label> 4164 <button 4165 type="submit" 4166 class="newsletter-form__button field__button" 4167 name="commit" 4168 id="Subscribe" 4169 aria-label="Subscribe" 4170 > 4171 â 4172 </button> 4173 </div></div></form></div></div> 4174 4175 <div 4176 class="footer__blocks-wrapper grid--12-col__item padding--tablet scroll-tr
4176igger animate--slide-in" 4177 4178 data-cascade 4179 4180 ><div 4181 class="footer-block footer-block--menu scroll-trigger animate--slide-in" 4182 4183 4184 data-cascade 4185 style="--animation-order: 1;" 4186 4187 ><h2 class="footer-block__heading inline-richtext">Shop</h2><ul class="footer-block__details-content list-unstyled"><li> 4188 <a 4189 href="/products/rest-digest-tea" 4190 class="link link--text list-menu__item list-menu__item--link list-menu__item--active" 4191 > 4192 Shop Rest + Digest 4193 </a> 4194 </li><li> 4195 <a 4196 href="/pages/quiz" 4197 class="link link--text list-menu__item list-menu__item--link" 4198 > 4199 Ask Doctor Stolberg 4200 </a> 4201 </li><li> 4202 <a 4203 href="/apps/account/" 4204 class="link link--text list-menu__item list-menu__item--link" 4205 > 4206 Login 4207 </a> 4208 </li></ul></div><div 4209 class="footer-block footer-block--menu scroll-trigger animate--slide-in" 4210 4211 4212 data-cascade 4213 style="--animation-order: 2;" 4214 4215 ><h2 class="footer-block__heading inline-richtext">About</h2><ul class="footer-block__details-content list-unstyled"><li> 4216 <a 4217 href="/pages/about" 4218 class="link link--text list-menu__item list-menu__item--link" 4219 > 4220 Meet Doctor Stolberg 4221 </a> 4222 </li><li> 4223 <a 4224 href="https://drnataziazustolberg.substack.com/" 4225 class="link link--text list-menu__item list-menu__item--link" 4226 > 4227 Well Being Substack 4228 </a> 4229 </li><li> 4230 <a 4231 href="https://www.instagram.com/doctorstolberg" 4232 class="link link--text list-menu__item list-menu__item--link" 4233 > 4234 Instagram 4235 </a> 4236 </li></ul></div><div 4237 class="footer-block footer-block--menu scroll-trigger animate--slide-in" 4238 4239 4240 data-cascade 4241 style="--animation-order: 3;" 4242 4243 ><h2 class="footer-block__heading inline-richtext">Support</h2><ul class="footer-block__details-content list-unstyled"><li> 4244 <a 4245 href="/pages/faq" 4246 class="link link--text list-menu__item list-menu__item--link" 4247 > 4248 FAQs 4249 </a> 4250 </li><li> 4251 <a 4252 href="/pages/contact" 4253 class="link link--text list-menu__item list-menu__item--link" 4254 > 4255 Contact 4256 </a> 4257 </li></ul></div><div 4258 class="footer-block footer-block--menu scroll-trigger animate--slide-in" 4259 4260 4261 data-cascade 4262 style="--animation-order: 4;" 4263 4264 ><h2 class="footer-block__heading inline-richtext">Legal</h2><ul class="footer-block__details-content list-unstyled"><li> 4265 <a 4266 href="/policies/privacy-policy" 4267 class="link link--text list-menu__item list-menu__item--link" 4268 > 4269 Privacy Policy 4270 </a> 4271 </li><li> 4272 <a 4273 href="/policies/terms-of-service" 4274 class="link link--text list-menu__item list-menu__item--link" 4275 > 4276 Terms & Conditions 4277 </a> 4278 </li></ul></div></div></div><div
4279 class="footer__content-bottom bottom-align scroll-trigger animate--slide-in grid--12-col" 4280 4281 data-cascade 4282 4283 > 4284 <div class="footer__content-bottom-wrapper page-width grid--12-col__item padding--tablet"> 4285 <div class="footer__column footer__localization isolate"></div> 4286 <div class="footer__column footer__column--info"></div> 4287 </div> 4288 <div class="footer__content-bottom-wrapper grid--12-col__item padding--tablet footer__content-bottom-wrapper--center"> 4289 <div class="footer__copyright caption"> 4290 <small class="copyright__content" 4291 >© 2026, <a href="/" title="">DOCTOR STOLBERG</a></small><small class="copyright__content"><span> | </span><a href="/pages/site-credits">Site Credits</a></small> 4292 4293</div> 4294 </div> 4295 </div> 4296</footer> 4297 4298 4299</div> 4300<!-- END sections: footer-group --> 4301 <div id="shopify-section-color-swatches" class="shopify-section"> 4302 4303<style> 4304.product-swatches-label { 4305 font-size: 30px !important; 4306 width: 1em; 4307 height: 1em; 4308 position: relative; 4309 padding: 0 !important; 4310 border: 0 !important; 4311 color: #000 !important; 4312 background-size: cover; 4313 margin-right: calc(0.2rem + 4px) !important; 4314} 4315 4316.product-swatches-label span { 4317 font-size: 0 !important; 4318} 4319 4320.product-swatches-label::before { 4321 content: ""; 4322 border: var(--variant-pills-border-width) solid rgba(var(--color-foreground),var(--variant-pills-border-opacity)); 4323 width: 1.2em; 4324 height: 1.2em; 4325 display: block; 4326 position: absolute; 4327 top: -0.1em !important; 4328 left: -0.1em !important; 4329 transition: border var(--duration-short) ease; 4330} 4331 4332input:checked + .product-swatches-label::before, 4333.product-swatches-label:hover::before, 4334.product-swatches-label:focus::before { 4335 border-color: var(--color-foreground); 4336} 4337 4338/* Tooltip */ 4339.product-swatches-label__tooltip { 4340 display: block; 4341 4342 left: 50%; 4343 bottom: 100%; 4344 margin-top: 0; 4345 margin-bottom: 0.428em; 4346 transform: translate(-50%, 8px); 4347 box-sizing: border-box; 4348 position: absolute; 4349 z-index: 100; 4350 padding: 0.7em 1em; 4351 white-space: nowrap; 4352 background-color: rgba(var(--color-foreground)); 4353 color: rgb(var(--color-background)); 4354 border-radius: var(--variant-pills-radius); 4355 font-size: 14px; 4356 line-height: 1; 4357 -webkit-backface-visibility: hidden; 4358 backface-visibility: hidden; 4359 opacity: 0; 4360 visibility: visible; 4361 pointer-events: none; 4362 transition: opacity 0.25s ease-out, visibility 0.25s ease-out, transform 0.25s ease-out; 4363} 4364 4365/* Tooltip Arrow */ 4366.product-swatches-label__tooltip::before { 4367 content: ''; 4368 top: 100%; 4369 bottom: auto; 4370 position: absolute; 4371 width: 0; 4372 height: 0; 4373 left: 50%; 4374 transform: translateX(-50%); 4375 border-top: 0.428em solid rgba(var(--color-foreground)); 4376 border-right: 0.428em solid transparent; 4377 border-left: 0.428em solid transparent; 4378 border-bottom: none; 4379} 4380 4381/* Show Tooltip */ 4382.product-swatches-label:hover .product-swatches-label__tooltip { 4383 transform: translate(-50%, -6px); 4384 opacity: 1; 4385 visibility: visible; 4386} 4387</style> 4388
4389<script> 4390function productOptionsSwatches() { 4391 let optionNames = 'Color'; 4392 optionNames = optionNames.replace(/ /g, '').split(','); 4393 4394 4395 const filesURL = "//doctorstolberg.com/cdn/shop/files"; 4396 4397 function isColor(strColor) { 4398 const style = new Option().style; 4399 style.color = strColor; 4400 return style.color !== ''; 4401 } 4402 4403 optionNames.forEach(optionNamesHandler); 4404 4405 function optionNamesHandler(option) { 4406 const radioInputs = document.querySelectorAll(`input[type="radio"][name="${option}"]:not(.product-swatches-input)`); 4407 4408 if (radioInputs.length > 0) { 4409 const label = radioInputs[0].previousElementSibling; 4410 const value = document.querySelector(`[name="${option}"]:checked`).value; 4411 if (label) label.innerHTML = `${option}: <b>${value}</b>`; 4412 } 4413 4414 radioInputs.forEach(function(input){ 4415 input.classList.add('product-swatches-input'); 4416 const label = input.nextElementSibling; 4417 label.classList.add('product-swatches-label'); 4418 label.style.backgroundColor = input.value; 4419 label.innerHTML = `<span>${input.value}</span>` 4420 4421 if (!isColor(input.value)) { 4422 label.style.backgroundImage = `url(${filesURL}/swatch-${input.value.replaceAll(' ', '-').toLowerCase()}.png)`; 4423 } 4424 4425 // Tooltip 4426 const tooltip = document.createElement('span'); 4427 tooltip.textContent = input.value; 4428 tooltip.className = 'product-swatches-label__tooltip'; 4429 label.appendChild(tooltip); 4430 }); 4431 4432 document.querySelectorAll(`[name="${option}"]`).forEach(function(input) { 4433 input.addEventListener('change', function() { 4434 const label = radioInputs[0].previousElementSibling; 4435 const value = document.querySelector(`[name="${option}"]:checked`).value; 4436 if (label) label.innerHTML = `${option}: <b>${value}</b>`; 4437 }); 4438 }); 4439 } 4440} 4441window.addEventListener('DOMContentLoaded', productOptionsSwatches); 4442</script>
vendor: 1 bytes, line 4442
4442
4443<script src="https://cdn.jsdelivr.net/npm/@ryanmorr/[email protected]/dist/ready.umd.min.js"></script>
vendor: 1 bytes, line 4443
4443
4444<script>ready('.quick-add-modal .product', function(product) { 4445 productOptionsSwatches() 4446}); 4447</script>
4447 4448 4449 4450 4451</div> 4452 4453 <ul hidden> 4454 <li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li> 4455 <li id="a11y-new-window-message">Opens in a new window.</li> 4456 </ul> 4457 4458
4458<script> 4459 window.shopUrl = 'https://doctorstolberg.com'; 4460 window.routes = { 4461 cart_add_url: '/cart/add', 4462 cart_change_url: '/cart/change', 4463 cart_update_url: '/cart/update', 4464 cart_url: '/cart', 4465 predictive_search_url: '/search/suggest', 4466 }; 4467 4468 window.cartStrings = { 4469 error: `There was an error while updating your cart. Please try again.`, 4470 quantityError: `You can only add [quantity] of this item to your cart.`, 4471 }; 4472 4473 window.variantStrings = { 4474 addToCart: `Add to cart`, 4475 soldOut: `Sold out`, 4476 unavailable: `Unavailable`, 4477 unavailable_with_option: `[value] â Sold Out`, 4478 }; 4479 4480 window.quickOrderListStrings = { 4481 itemsAdded: `[quantity] items added`, 4482 itemAdded: `[quantity] item added`, 4483 itemsRemoved: `[quantity] items removed`, 4484 itemRemoved: `[quantity] item removed`, 4485 viewCart: `View cart`, 4486 each: `[money]/ea`, 4487 }; 4488 4489 window.accessibilityStrings = { 4490 imageAvailable: `Image [index] is now available in gallery view`, 4491 shareSuccess: `Link copied to clipboard`, 4492 pauseSlideshow: `Pause slideshow`, 4493 playSlideshow: `Play slideshow`, 4494 recipientFormExpanded: `Gift card recipient form expanded`, 4495 recipientFormCollapsed: `Gift card recipient form collapsed`, 4496 }; 4497 </script>
4497<script src="//doctorstolberg.com/cdn/shop/t/46/assets/predictive-search.js?v=162273246065392412141788989890" defer="defer"></script>
4497<script src="//doctorstolberg.com/cdn/shop/t/46/assets/macy.js?v=30838474009100424301788989886" defer></script>
4497 4498
4498<script src="//doctorstolberg.com/cdn/shop/t/46/assets/macy-init.js?v=7287410744166734751788989890" defer></script>
4498 4499
4499<script src="//doctorstolberg.com/cdn/shop/t/46/assets/klaviyo-scroll.js?v=136077335425189358881788989889" defer></script>
4499 4500 4501
4501<script defer src="https://static.shopmy.us/Affiliates/sms_aff_clicktrack.js"></script>
4501 4502 <div id="shopify-block-AYU1uNGdwRjVma1l1U__16017602894386113438" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: junip-store-key --><span 4503 class="junip-store-key" 4504 data-supports-theme-extensions="true" 4505 data-shopify-preview-mode="true" 4506 data-store-key="QxUdQ2puvX9gFxFDwnheFXkN" 4507 data-onsite-enabled="true" 4508 data-review-count-enabled="true" 4509 data-star-color="#121212" 4510 data-star-template-url="https://api.juniphq.com/images/star_options/2/template"> 4511</span> 4512<!-- END app snippet -->
4513<script src="https://widgets.juniphq.com/v1/junip_shopify.js" async></script>
4513 4514</div>
4514<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4514 4515</body> 4516</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.