PageSourceSearch

https://doctorstolberg.com/products/rest-digest-tea

html doctorstolberg.com collected 2026-10-08 05:49:08 UTC 403,722 bytes, 4,516 lines download raw bytes

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 &ndash; 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&amp;context/payment/0/handler=dev.shopify.shop_pay" payment="dev.shopify.shop_pay com.google.pay dev.shopify.card"><link rel="alternate" type="application/json+oembed" href="https://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&region_country=US?return_url=%2F%23k-hub",
638    register: "https://account.doctorstolberg.com?locale=en&region_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&region_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&region_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&amp;width=600" alt="DOCTOR STOLBERG" srcset="//doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&amp;width=170 170w, //doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&amp;width=255 255w, //doctorstolberg.com/cdn/shop/files/Doctor-Stolberg-logo.png?v=1744483211&amp;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&region_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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;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&amp;width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;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&amp;width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;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 &amp; 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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-box.jpg?v=1749183025&amp;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&amp;width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;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&amp;width=1946" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/Group_10_2.png?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_rest_Digest-Tea-box-with-sachets.jpg?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;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&amp;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&amp;width=246 246w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=493 493w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=600 600w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=713 713w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=823 823w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=990 990w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1206 1206w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1346 1346w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1426 1426w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;width=1646 1646w, //doctorstolberg.com/cdn/shop/files/DoctorStolberg_Rest_Digest-Tea-steeping-in-tea-cups.jpg?v=1773325618&amp;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&amp;width=1500" alt="" srcset="//doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&amp;width=375 375w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&amp;width=550 550w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&amp;width=750 750w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&amp;width=1100 1100w, //doctorstolberg.com/cdn/shop/files/Before_After_1.png?v=1773278510&amp;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&#39;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          >&copy; 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.