1<!DOCTYPE HTML> 2<html class="js-unavailable" lang="en"> 3 <head> 4 5 6 7<!-- Start of Shoplift scripts --> 8<!-- 2026-05-07T22:04:25.2573778Z --> 9<style>.shoplift-hide { opacity: 0 !important; }</style> 10<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
11<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-06-01T13:45:00.7221233Z */(function(){"use strict";var tt=document.createElement("style");tt.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(tt);var ht=" daum[ /]| deusu/| yadirectfetcher|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!(?: ya| yandex|^job|inapp;) ?)search|(?<!(?:lib))http|(?<![hg]m)score|@[a-z][\\w-]+\\.|\\(\\)|\\.com|\\b\\d{13}\\b|^<|^[\\w \\.\\-\\(?:\\):]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[^ ]{50,}$|^\\d+\\b|^\\w+/[\\w\\(\\)]*$|^active|^ad muncher|^amaya|^avsdevicesdk/|^biglotron|^bot|^bw/|^clamav[ /]|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d \\(compatible;?\\)$|^mozilla/\\d\\.\\d \\w*$|^navermailapp|^netsurf|^offline|^owler|^postman|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^valid|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|^{{.*}}$|admin|analyzer|archive|ask jeeves/teoma|bit\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check|chrome-lighthouse|chromeframe|classifier|clean|cloud|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|evc-batch/|feed|firep
11hp|gomezagent|headless|httrack|hubspot marketing grader|hydra|ibisbrowser|images|insight|inspect|iplabel|ips-agent|java(?!;)|library|mail\\.ru/|manager|measure|neustar wpm|node|nutch|offbyone|optimize|pageburst|pagespeed|parser|perl|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\d|reputation|resolver|retriever|rexx;|rigor|rss\\b|scan|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|synapse|synthetic|tools|torrent|trace|transcoder|url|virtuoso|wappalyzer|watch|webglance|webkit2png|whatcms/|zgrab",ft=/bot|spider|crawl|http|lighthouse/i,z;function gt(){if(z instanceof RegExp)return z;try{z=new RegExp(ht,"i")}catch{z=ft}return z}function mt(a){return!!a&>().test(a)}class Q{timestamp;constructor(){this.timestamp=new Date}}class yt extends Q{type;testId;hypothesisId;constructor(t,e,i){super(),this.type=3,this.testId=t,this.hypothesisId=e,this.timestamp=i}}class vt extends Q{type;path;constructor(t){super(),this.type=4,this.path=t}}class wt extends Q{type;cart;constructor(t){super(),this.type=5,this.cart=t}}class et extends Error{isBot;constructor(){super(),this.isBot=!0}}function bt(a,t,e){for(const i of t.selectors){const s=a.querySelectorAll(i.cssSelector);for(let r=0;r<s.length;r++)e(t.testId,t.hypothesisId)}st(a,t,(i,s,r,n,o)=>o(s,r),e)}function U(a,t,e){for(const i of t.selectors)rt(a,t.testId,t.hypothesisId,i,e??(()=>{}));st(a,t,rt,e??(()=>{}))}function it(a){return a.urlPatterns.reduce((t,e)=>{switch(e.operator){case"contains":return t+`.*${e}.*`;case"endsWith":return t+`.*${e}`;case"startsWith":return t+`${e}.*`}},"")}function st(a,t,e,i){new MutationObserver(()=>{for(const r of t.selectors)e(a,t.testId,t.hypothesisId,r,i)}).observe(a.documentElement,{childList:!0,subtree:!0})}function rt(a,t,e,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(kt))o=St(a,i.cssSelector,o,l)}}return r.length>0&&s?(s(t,e),!0):!1}function St(a,t,e,i){switch(i.type){case"innerHtml":e.innerHTML=i.value;break;case"attribute":Ct(e,i.scope,i.value);break;case"css":Tt(a,t,i.value);break;case"js":It(a,e,i);break;case"copy":return Pt(e);case"remove":At(e);break;case"move":Et(e,parseInt(i.value));break}return e}function Ct(a,t,e){a.setAttribute(t,e)}function Tt(a,t,e){const i=a.createElement("style");i.innerHTML=`${t} { ${e} }`,a.getElementsByTagName("head")[0]?.appendChild(i)}function It(a,t,e){Function("document","element",`"use strict"; ${e.value}`)(a,t)}function Pt(a){const t=a.cloneNode(!0);if(!a.parentNode)throw"Can't copy node outside of DOM";return a.parentNode.insertBefore(t,a.nextSibling),t}function At(a){a.remove()}function Et(a,t){if(t===0)return;const e=Array.prototype.slice.call(a.parentElement.children).indexOf(a),i=Math.min(Math.max(e+t,0),a.parentElement.children.length-1);a.parentElement.children.item(i).insertAdjacentElement(t>0?"afterend":"beforebegin",a)}function kt(a,t){return nt(a)-nt(t)}function nt(a){return a.type==="copy"||a.type==="remove"?0:1}var M=(a=>(a[a.Template=0]="Template",a[a.Theme=1]="Theme",a[a.UrlRedirect=2]="UrlRedirect",a[a.Script=3]="Script",a[a.Dom=4]="Dom",a[a.Price=5]="Price",a))(M||{});const xt="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",_t="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%200L
117.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 Rt(a){let t=a.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";const e=atob(t),i=Uint8Array.from(e,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,t){return typeof t=="string"&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+(?:Z|[+-]\d+)/.test(t)?new Date(t):t}function X(a,t){return t}function q(a,t=!1,e=!1,i=","){const s=a/100;if(e){const n=Math.round(s).toLocaleString("en-US");return i!==","?n.replace(/,/g,i):n}else{const r=t?",":".",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}`:t?`${c.replace(/,/g,".")}${r}${l}`:`${c}${r}${l}`}}function H(a,t,e,i){const s=t.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} ${e}`:s}function ot(a){return a.replace(/[^\d.,\s-]/g,"").trim()}function j(a){const t=new Map;for(const[e,i,s]of a.variants)t.set(e,{priceInCents:i,compareAtPriceInCents:s});return t}function Dt(a,t,e,i){const{priceInCents:s,compareAtPriceInCents:r}=e,{moneyFormat:n,currency:o,currencyCodeEnabled:l}=i;if(a.getAttribute("data-sl-attribute-p")===t)a.innerHTML=H(s,n,o,l);else if(a.getAttribute("data-sl-attribute-cap")===t)r<=0||r<=s?a.remove():a.innerHTML=H(r,n,o,l);else if(a.getAttribute("data-sl-attribute-discount")===t&&!(r<=0||r<=s)){const d=Math.round((r-s)/r*100),p=ot(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 Ot(a){const t=[],e={id:"url-pattern",operator:"contains",value:"/"};for(const[i,s,r]of a.variants){t.push({id:`p-${i}`,cssSelector:`[data-sl-attribute-p="${i}"]`,urlPatterns:[e],actions:[{id:`p-action-${i}`,type:"innerHtml",scope:"price",value:H(s,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]});const n=r<=0||r<=s;if(t.push({id:`cap-${i}`,cssSelector:`[data-sl-attribute-cap="${i}"]`,urlPatterns:[e],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=ot(H(r-s,a.moneyFormat,a.currency,!1));t.push({id:`d-${i}`,cssSelector:`[data-sl-attribute-discount="${i}"]`,urlPatterns:[e],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 t}const Jt="modulepreload",Yt=function(a){return"/"+a},Zt={}
11,Vt=function(t,e,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 t().catch(r)})};function at(a,t,e){const i=e?a.plans.filter(c=>!c.variantId||c.variantId===e):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=t?s:r,o=t?r:s;if(e)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 lt(a,t,e){const i=t?a.plans.find(r=>r.variantId===t):void 0;if(i)return i.direction;if(e){const r=a.plans.find(n=>n.productId===e);if(r)return r.direction}return a.plans.find(r=>!r.variantId)?.direction??null}function K(a,t){const e=t?a.plans.filter(r=>!r.productId||r.productId===t):a.plans,i={};for(const r of e)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 t=document.querySelector('form[action*="/cart/add"] input[name="product-id"]')?.value;if(t)return t;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 e=window,i=e.ShopifyAnalytics?.meta?.product?.id??e.meta?.product?.id;return i!=null?String(i):null}function D(a,t){return a.widget.selectors[t]??[]}function N(a,t){return a.replace(/[\d.]+%/,`${t}%`)}function $(a,t){const e=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);let i=e.nextNode();for(;i;){if(i.nodeValue!==null){const s=t(i.nodeValue);if(s!==i.nodeValue){i.nodeValue=s;return}}i=e.nextNode()}}function ct(a,t){return a===null?!1:a==="decrease"?!t:t}async function Lt(a){if(a.subscriptionSwapDone)return;const t=a.getActiveAssignment();if(!t)return;const e=a.getHypothesis(t.hypothesisId);if(!e?.subscriptionData)return;a.subscriptionSwapDone=!0;const i=e.subscriptionData,s=e.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}=at(i,s,d);a.swapMap=u;const b=D(i,"widgetParent"),k=D(i,"subscriptionPlans"),S=D(i,"subscriptionInput");if(!b.length||!k.length||!S.length)return;const P=document.querySelector(b[0].selector);if(!P?.shadowRoot)return;const _=P.shadowRoot.querySelector(k[0].selector);if(!_?.shadowRoot)return;const C=S[0].selector;let m=null;if(i.widget.widgetType==="buttons"||i.widget.widgetType==="radio"){const y=Array.from(_.shadowRoot.querySelectorAll(C));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),T=y.some(v=>h.includes(v.value)&&v.checked);if((w||T)&&(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(T=>p.includes(T.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}}}
11if(a.subscriptionHideWrongPlans=c,a.swapMap=at(i,s).swapMap,c(),n){const d=document.querySelector("select[name='id'], input[name='id']");d&&d.addEventListener("change",c)}}function B(a){const t=D(a,"widgetParent");return t.length?document.querySelector(t[0].selector)?.shadowRoot??null:null}function J(a,t){const e=D(a,"subscriptionPlans");return e.length?t.querySelector(e[0].selector)?.shadowRoot??null:null}function Y(a,t){const e=new URLSearchParams(window.location.search).get("variant");if(e)return e;{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 G(a,t){return H(a,t.moneyFormat,t.currency,t.currencyCodeEnabled)}function $t({originalFetch:a,swapMap:t,slptValue:e,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 t[l]??l}return t[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==="")&&e&&l.body.set("properties[_slpt]",e)}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&&e&&(p.properties||(p.properties={}),p.properties._slpt=e)}else if(d.id){const p=String(d.selling_plan??"");p?d.selling_plan=r(p):!d.selling_plan&&e&&(d.properties||(d.properties={}),d.properties._slpt=e)}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 Mt({log:a}){if(window.fetch.__shoplift_intercepted)return a("[SUB-PREVIEW-BLOCK] already installed â skipping"),()=>{};const t=window.fetch,e=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"}}))):t.call(window,i,s)};return e.__shoplift_intercepted=!0,window.fetch=e,function(){window.fetch===e&&(window.fetch=t)}}function dt({data:a,runUpdates:t,debounceMs:e=150}){let i=null;function s(){i&&clearTimeout(i),t(),i=setTimeout(t,e)}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(),t(),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 qt(a){if(a.subscriptionPriceDone)return;const t=a.getActiveAssignment(),e=t?a.getHypothesis(t.hypothesisId):void 0,i=e?.subscriptionData?null:a.findActiveSubscriptionTestControl(),s=e?.subscriptionData?e:i?.hypothesis;if(!s?.subscriptionData)return;const r=e?.subscriptionData?t.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=K(n,d),h=p.discountMap,u=p.maxDiscount;function b(){const g=W(l);g!==d&&(d=g,p=K(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}
11`),a.updatePriceTestHiddenInputs(r,o?"control":"variant",!1);function k(){if(!l)return null;const g=j(l),I=Y(g),A=lt(n,I,d);if(!ct(A,o))return null;const E=I?g.get(I):void 0;return E?{formattedVariantPrice:G(E.priceInCents,l),formattedDiscounted:G(E.priceInCents*(1-u/100),l)}:null}$t({originalFetch:a.fetch,swapMap:a.swapMap??{},slptValue:a.slptValue??void 0,log:a.log,getSelectedPlanId:()=>{const g=B(n);if(!g)return null;const I=J(n,g);if(!I)return null;const A=D(n,"subscriptionInput"),E=A.length?A[0].selector:'input[name="rc_plan"]';return I.querySelector(`${E}:checked`)?.value??null}});function S(g){const I=D(n,"subscriptionDiscount");for(const A of I)if(A.selector.includes("badge")||A.selector.includes("__badge")){const E=g.querySelector(A.selector);E?.textContent&&!E.textContent.includes(`${u}%`)&&$(E,x=>N(x,u))}}function P(g){const I=k();if(!I)return;const A=D(n,"subscriptionCompareAt");for(const E of A){const x=g.querySelector(E.selector)||g.querySelector(`[part~="${E.selector}"]`);x?.textContent&&!x.textContent.includes(I.formattedVariantPrice)&&$(x,R=>/\d/.test(R)?I.formattedVariantPrice:R)}}function _(g,I){const A=D(n,"subscriptionCompareAt"),E=I===0?"none":"";for(const x of A){const R=g.querySelector(x.selector)||g.querySelector(`[part~="${x.selector}"]`);R&&(E==="none"?R.style.display!=="none"&&(R.style.display="none"):R.style.display==="none"&&(R.style.display=""))}}function C(g){const I=D(n,"subscriptionInput"),A=I.length?I[0].selector:'input[name="rc_plan"]',E=D(n,"subscriptionPlanDiscount"),x=E.length?E[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 Z=O.textContent.match(/[\d.]+%/)?.[0];Z&&Z!==`${L}%`&&$(O,Kt=>N(Kt,L))}}}}}function m(g){const I=g.querySelector("select");if(I)for(const A of Array.from(I.options)){const E=h[A.value];if(E!==void 0&&A.textContent){const x=A.textContent.match(/[\d.]+%/)?.[0];x&&x!==`${E}%`&&(A.textContent=N(A.textContent,E))}}}function y(g,I){const E=D(n,"subscriptionDiscount").filter(x=>x.selector.includes("benefit")||x.selector==="rc-benefits");for(const x of E){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(I===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!==`${I}%`&&$(V,Z=>N(Z,I))}}}}}let w=!1;function T(){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&&P(g);const I=J(n,g);let A=u;if(I){const E=D(n,"subscriptionInput"),x=E.length?E[0].selector:'input[name="rc_plan"]',R=I.querySelector(`${x}:checked`);if(R){const V=h[R.value];V!==void 0&&(A=V)}c==="buttons"||c==="radio"?C(I):m(I)}_(g,A),y(g,A)}finally{w=!1}}}function f(){const g=k();if(!g)return;const I=B(n);if(!I)return;const A=D(n,"onetimeToggle"),E=A.length?A[0].selector:'input[value="onetime"]';if(!I.querySelector(E)?.checked)return;const R=D(n,"subscriptionPrice");for(const V of R){const O=I.querySelector(V.selector)||I.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(),T(),a.subscriptionUpdateOneTime&&a.subscriptionUpdateOneTime(),f()}dt({data:n,runUpdates:v})}async function Ht(a){if(a.subscriptionOneTimeDone)return;const t=a.getActiveAssignment(),e=t?a.getHypothesis(t.hypothesisId):void 0,i=!!(e?.subscriptionData&&e.priceData),s=i?null:a.findActiveSubscriptionTestControl(),r=i?e:s?.hypothesis;if(!r?.subscriptionData||!r.priceData)return;const n=i?t.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}
11:f`,a.updatePriceTestHiddenInputs(n,p,!1);function h(){const u=B(o);if(!u)return;const b=Y(c);if(!b)return;const k=W(l),S=lt(o,b,k);if(!ct(S,d))return;const P=c.get(b);if(!P)return;const _=H(P.priceInCents,l.moneyFormat,l.currency,l.currencyCodeEnabled),C=D(o,"onetimePrice");if(!C.length)return;const m=D(o,"onetimeContainer"),y=m.length?m[0].selector:'[part~="rc-purchase-option__onetime"]',T=u.querySelector(y)??u;for(const f of C){let v=null;try{v=T.querySelector(f.selector)}catch{v=null}v??=T.querySelector(`[part~="${f.selector}"]`),v&&v.textContent&&!v.textContent.includes(_)&&$(v,g=>/\d/.test(g)?_:g)}}a.subscriptionUpdateOneTime=h,h()}async function Nt(a,t){const{subscriptionPreviewRender:e}=await Vt(async()=>{const{subscriptionPreviewRender:i}=await Promise.resolve().then(()=>jt);return{subscriptionPreviewRender:i}},void 0);return e(a.subscriptionData,a.priceData,a.isControl,t)}function Ut(a,t){const e=a.widget.selectors.widgetParent??[],i=a.widget.selectors.subscriptionPlans??[],s=a.widget.selectors.subscriptionInput??[];if(!e.length||!i.length||!s.length){t("[SUB-GLOBAL-HIDE] Missing required selectors â skipping");return}const r=e[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 P=document.querySelector(r);if(!P?.shadowRoot)return;const _=P.shadowRoot.querySelector(n);if(!_?.shadowRoot)return;_.shadowRoot!==c&&(c=_.shadowRoot,l=!1);let C=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",C++)}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})),t(`[SUB-GLOBAL-HIDE] Preselected first visible plan input=${f.value}`)}const T=y.find(f=>f.checked)??y[0];if(T){const f=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const v of f)v.value!==T.value&&(v.value=T.value,t(`[SUB-GLOBAL-HIDE] Mirrored plan id ${T.value} to form selling_plan input`))}}else if(a.widget.widgetType==="dropdown"){const m=_.shadowRoot.querySelector("select");if(!m)return;for(const T of Array.from(m.options))a.planIds.includes(T.value)&&(T.style.display!=="none"&&(T.style.display="none"),T.disabled||(T.disabled=!0),C++);const y=Array.from(m.options).filter(T=>!a.planIds.includes(T.value)),w=y.some(T=>T.value===m.value);y.length>0&&!w&&!l&&(l=!0,m.value=y[0].value,m.dispatchEvent(new Event("change",{bubbles:!0})),t(`[SUB-GLOBAL-HIDE] Preselected first visible option=${y[0].value}`))}C>0&&t(`[SUB-GLOBAL-HIDE] Hidden ${C} B-side plan buttons`)}const u={childList:!0,subtree:!0,characterData:!0};let b=null;function k(P){b?.disconnect(),b=new MutationObserver(()=>p()),b.observe(P,u)}function S(){const P=document.querySelector(r);if(!P?.shadowRoot)return!1;p(),new MutationObserver(()=>{p();const m=P.shadowRoot.querySelector(n);m?.shadowRoot&&k(m.shadowRoot)}).observe(P.shadowRoot,u);const C=P.shadowRoot.querySelector(n);return C?.shadowRoot&&k(C.shadowRoot),!0}if(!S()){t("[SUB-GLOBAL-HIDE] Widget not in DOM yet â waiting via MutationObserver");const P=new MutationObserver(()=>{S()&&P.disconnect()});P.observe(document.body??document.documentElement,{childList:!0,subtree:!0})}}const ut="Limited preview",Ft="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.",Bt=5e3;function zt(){const a=document.createElement("div");a.id="shoplift-preview-subscription-warning";const t=document.createElement("span");t.id="shoplift-preview-subscription-warning__icon",t.setAttribute("aria-hidden","true"),t.textContent="!";const e=document.createElement("span");e.id="shoplift-preview-subscription-warning__label",e.textContent=ut;const i=document.createElement("div");i.id="shoplift-preview-subscription-warning__tooltip",i.setAttribute("role","tooltip"),i.textContent=Ft,a.appendChild(t),a.appendChild(e),a.appendChild(i),a.setAttribute("tabindex","0"),a.setAttribute("aria-describedby",i.id),a.setAttribute("aria-label",ut);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},Bt)}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{}}
11document.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 pt=!1;class Wt{constructor(t,e,i,s,r,n,o,l,c,d,p,h,u){this.shop=t,this.host=e,this.eventHost=i,this.disableReferrerOverride=l,this.logHistory=[],this.legacySessionKey=`SHOPLIFT_SESSION_${this.shop}`,this.cssHideClass=s?"shoplift-hide":"",this.testConfigs=p.map(k=>({...k,startAt:new Date(k.startAt),statusHistory:k.statusHistory.map(S=>({...S,createdAt:new Date(S.createdAt)}))})),this.inactiveTestConfigs=h,this.hiddenSubscriptionPlans=u,this.sendPageView=!!r,this.shopliftDebug=n===!0,this.telemetryEnabled=c===!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 b=this.getDeviceType();this.device=b!=="tablet"?b:"mobile",this.state=this.loadState(),this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.testsFilteredByAudience=p.filter(k=>
11k.status=="active"),this.getCountryTimeout=d===1000?1e3:d,this.log("State Loaded",JSON.stringify(this.state))}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";legacySessionKey;cssHideClass;testConfigs;inactiveTestConfigs;hiddenSubscriptionPlans;testsFilteredByAudience;sendPageView;shopliftDebug;gaConfig;telemetryEnabled;getCountryTimeout;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;deriveCategoryFromExistingTests(){if(!this.state.temporary.testCategory&&this.state.essential.visitorTests.length>0){const t=this.state.essential.visitorTests.some(e=>{if(!e.hypothesisId)return!1;const i=this.getHypothesis(e.hypothesisId);return i&&["theme","basicScript","price"].includes(i.type)});this.state.temporary.testCategory=t?"global":"conditional",this.persistTemporaryState(),this.log("Derived test category from existing visitorTests: %s",this.state.temporary.testCategory)}}
11async 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 s=this.urlParams.get("isShopliftMerchant")==="true";this.log("Setting merchant session to %s",s),this.state.temporary.isMerchant=s,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,mt(navigator.userAgent))return;const t=this.state.essential.visitorTests.filter(s=>s.hypothesisId&&+s.createdAt>Date.now()-6e4);if(t.length===0)this.sendDiagnosticTelemetry("page-landed",null);else for(const s of t)this.sendDiagnosticTelemetry("page-landed",s.testId,{hypothesisId:s.hypothesisId,isControl:s.assignedTo==="control",testType:s.testType??"unknown"});if(navigator.userAgent.includes("Chrome/118")){this.log("Random: %o",[Math.random(),Math.random(),Math.random()]);const s=await this.makeRequest({url:`${this.eventHost}/api/v0/events/ip`,method:"get"}).then(r=>r?.json());this.log(`IP: ${s}`),this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify(this.debugState(),X)}).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 s=this.state.temporary.originalReferrer;delete this.state.temporary.originalReferrer,this.persistTemporaryState(),Object.defineProperty(document,"referrer",{get:()=>s,enumerable:!0,configurable:!0})}if(await this.refreshVisitor(this.shopifyAnalyticsId),await this.handleVisitorTest()){this.log("Redirecting for visitor test");return}this.setShoplift(),this.showPage(),this.ensureCartAttributesForExistingPriceTests(!1);const i=this.state.essential.visitorTests.some(s=>(s.hypothesisId?this.getHypothesis(s.hypothesisId):void 0)?.subscriptionData!=null)||Object.values(this.state.temporary.testReservations??{}).some(s=>this.getHypothesis(s.hypothesisId)?.subscriptionData!=null);this.hiddenSubscriptionPlans&&!i&&(this.log(`[SUB-GLOBAL] Visitor not in subscription test â hiding ${this.hiddenSubscriptionPlans.planIds.length} B-side plans`),Ut(this.hiddenSubscriptionPlans,s=>this.log(s))),await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange(),await this.finalize(),console.log("SHOPLIFT SCRIPT INITIALIZED!")}catch(t){if(t instanceof et)return;throw t}finally{typeof window.shoplift!="object"&&this.setShopliftStub()}}getVariantColor(t){switch(t){case"a":return{text:"#141414",bg:"#E2E2E2"};case"b":return{text:"rgba(255, 255, 255, 1)",bg:"rgba(37, 99, 235, 1)"}}}getDefaultVariantTitle(t){return t.title?t.title:t.type==="price"?t.isControl?"Original prices":"Variant prices":t.isControl?"Original":"Untitled variant "+t.label.toUpperCase()}async initPreview(){const t=this.urlParams.get("previewConfig");if(t){this.state.temporary.previewConfig=void 0,this.log("Setting up the preview"),this.log("Found preview config, writing to temporary state");const e=await Rt(t);if(this.state.temporary.previewConfig=e,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));
11if(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 e=this.state.temporary.previewConfig;if(e.testTypeCategory===M.Template&&this.handleTemplatePreview(e)&&this.initPreviewControls(e),e.testTypeCategory===M.UrlRedirect&&this.handleUrlPreview(e)&&this.initPreviewControls(e),e.testTypeCategory===M.Script&&this.handleScriptPreview(e)&&this.initPreviewControls(e),e.testTypeCategory===M.Price){const i=await this.handlePricePreview(e);e.isDraft?await this.handleSubscriptionPricePreview(e):await this.handleSubscriptionLivePreview(e),i&&this.initPreviewControls(e)}}}initPreviewControls(t){document.addEventListener("DOMContentLoaded",()=>{const e=t.variants.find(b=>b.id===t.currentVariant),i=e?.label||"a",s=t.variants,r=document.createElement("div");r.id="shoplift-preview-control";const n=document.createElement("div"),o=document.createElement("img");o.src=_t,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=e?this.getDefaultVariantTitle(e):"Untitled variant "+i.toUpperCase(),c.appendChild(p),s.length>1){const b=document.createElement("img");b.src=xt,b.width=12,b.height=12,b.style.height="12px",b.style.width="12px",c.appendChild(b);const k=document.createElement("div");k.className="preview-variant-menu";for(const S of t.variants.filter(P=>P.id!==t.currentVariant)){const P=document.createElement("div");P.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(),P.appendChild(_);const C=document.createElement("span");C.innerText=this.getDefaultVariantTitle(S),P.appendChild(C),P.addEventListener("click",()=>{this.pickVariant(S.id)}),k.appendChild(P)}l.appendChild(k),c.addEventListener("click",()=>{k.className!=="preview-variant-menu preview-variant-menu__visible"?k.classList.add("preview-variant-menu__visible"):k.classList.remove("preview-variant-menu__visible")}),document.addEventListener("click",S=>{S.target instanceof Element&&!c.contains(S.target)&&k.className==="preview-variant-menu preview-variant-menu__visible"&&k.classList.remove("preview-variant-menu__visible")})}else c.style.pointerEvents="none",d.style.margin="0";if(l.appendChild(c),r.appendChild(l),t.hasSubscription){this.subscriptionPreviewWarningCleanup?.();const b=zt();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(t){if(this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig,i=new URL(window.location.toString());if(e.testTypeCategory===M.UrlRedirect){const s=e.variants.find(r=>r.id===e.currentVariant)?.redirectUrl;if(i.pathname===s){const r=e.variants.find(n=>n.id===t)?.redirectUrl;r&&(i.pathname=r)}}if(e.testTypeCategory===M.Template){const s=e.variants.find(r=>r.id===e.currentVariant)?.pathName;if(s&&i.pathname===s){const r=e.variants.find(n=>n.id===t)?.pathName;r&&r!==s&&(i.pathname=r)}}e.currentVariant=t,this.persistTemporaryState(),this.queueRedirect(i)}}exitPreview(){const t=new URL(window.location.toString());if(this.state.temporary.previewConfig?.testTypeCategory===M.Template&&t.searchParams.delete("view"),this.state.temporary.previewConfig?.testTypeCategory===M.Script&&t.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(t.pathname)&&s&&(t.pathname=s)}this.state.temporary.isMerchant=!1,t.searchParams.delete("isShopliftMerchant"),this.state.temporary.previewConfig=void 0,this.persistTemporaryState(),this.subscriptionPreviewWarningCleanup?.(),this.subscriptionPreviewWarningCleanup=null,this.hidePage(),this.queueRedirect(t)}handleTemplatePreview(t){const e=t.currentVariant,i=t.variants.find(l=>l.id===e);if(!i)return!1;const s=t.variants.find(l=>l.isControl);if(!s)return!1;this.log("Setting up template preview for type",s.type);
11const 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(t){const e=t.currentVariant,i=t.variants.find(n=>n.id===e),s=t.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(t){const e=t.currentVariant,i=t.variants.find(n=>n.id===e);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(t){const e=t.currentVariant,i=t.variants.find(s=>s.id===e);return i?(this.log("Setting up price preview"),i.domSelectors&&i.domSelectors.length>0&&(U(document,{testId:t.testId,hypothesisId:i.id,selectors:i.domSelectors}),this.ensureCartAttributesForExistingPriceTests(!0)),!0):!1}async handleSubscriptionPricePreview(t){const e=t.variants.find(i=>i.id===t.currentVariant);e?.subscriptionData&&(this.log("Setting up subscription price preview"),await Nt({id:e.id,isControl:e.isControl,subscriptionData:e.subscriptionData,priceData:e.priceData},(i,...s)=>this.log(i,...s)))}async handleSubscriptionLivePreview(t){this.testConfigs.find(s=>s.id===t.testId)?.hypotheses.find(s=>s.id===t.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 t=await this.getCartState();t!==null&&this.queueCartUpdate(t),this.pruneStateAndSave(),await this.syncAllEvents()}setShoplift(){this.log("Setting up public API");const e=this.urlParams.get("slVariant")==="true",i=e?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:async s=>{if(this.log("Script checking variant for hypothesis '%s'",s),e)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 e=this.urlParams.get("slVariant")==="true",i=e?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:s=>Promise.resolve(e||s===i),setAnalyticsConsent:()=>Promise.resolve(),getVisitorData:()=>({visitor:null,visitorTests:[]})}}async manuallySplitVisitor(t){this.log("Starting manual split for test '%s'",t.id),await this.handleVisitorTest([t]);const e=this.getReservationForTest(t.id);e&&!e.isRealized&&e.entryCriteriaKey&&(this.log("Realizing manual API reservation for test '%s'",t.id),this.realizeReservationForCriteria(e.entryCriteriaKey)),this.saveState(),this.syncAllEvents()}async handleVisitorTest(t){await this.filterTestsByAudience(this.testConfigs,this.state.analytics.visitor??this.buildBaseVisitor(),this.state.essential.visitorTests),this.pruneStaleVisitorTests(),this.deriveC
11ategoryFromExistingTests(),this.clearStaleReservations();let e=t?t.filter(i=>this.testsFilteredByAudience.some(s=>s.id===i.id)):[...this.testsForUrl(this.testsFilteredByAudience),...this.domTestsForUrl(this.testsFilteredByAudience)];try{if(e.length===0)return this.log("No tests found"),!1;this.log("Checking for existing visitor test on page");const i=this.getCurrentVisitorHypothesis(e);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");e=e.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");e=e.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}if(e.length===0)return this.log("No tests remaining after category filter"),!1;this.createReservations(e);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 t=this.getDomTestsForCurrentUrl(),e=this.getVisitorDomHypothesis(t);for(const i of t){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=e.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")}
11),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 k=this.getReservationForTest(b);k&&!k.isRealized&&k.entryCriteriaKey?this.realizeReservationForCriteria(k.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(t){if(this.log("Considering redirect for hypothesis '%s'",t.id),t.isControl)return this.log("Skipping redirect for control"),!1;if(t.type==="basicScript"||t.type==="manualScript")return this.log("Skipping redirect for script test"),!1;const e=this.state.essential.visitorTests.find(n=>n.hypothesisId===t.id),i=new URL(window.location.toString()),r=new URLSearchParams(window.location.search).get("view");if(t.type==="theme"){if(!(t.themeId===themeId)){if(this.log("Theme id '%s' is not hypothesis theme ID '%s'",t.themeId,themeId),this.isAppProxyPath())return this.log("On App Proxy path, skipping theme redirect to avoid infinite loop"),!1;if(e&&e.themeId!==t.themeId&&(e.themeId===themeId||!this.isThemePreview()))this.log("On old theme, redirecting and updating local visitor"),e.themeId=t.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(t.type!=="dom"&&t.type!=="price"&&t.affix!==template.suffix&&t.affix!==r||t.redirectPath&&!i.pathname.endsWith(t.redirectPath))return this.log("Hiding page to redirect for template test"),this.hidePage(),!0;return this.log("Not redirecting"),!1}redirect(t){if(this.log("Redirecting to hypothesis '%s'",t.id),t.isControl)return;const e=new URL(window.location.toString());if(e.searchParams.delete("view"),t.redirectPath){const i=RegExp("^(/w{2}-w{2})/").exec(e.pathname);if(i&&i.length>1){const s=i[1];e.pathname=`${s}${t.redirectPath}`}else e.pathname=t.redirectPath}else t.type==="theme"?(e.searchParams.set("_ab","0"),e.searchParams.set("_fd","0"),e.searchParams.set("_sc","1"),e.searchParams.set("preview_theme_id",t.themeId.toString())):t.type!=="urlRedirect"&&e.searchParams.set("view",t.affix);this.queueRedirect(e)}async refreshVisitor(t){if(t===null||!this.state.essential.isFirstLoad||!this.testConfigs.some(i=>i.visitorOption!=="all"))return;this.log("Refreshing visitor"),this.hidePage();const e=await this.getVisitor(t);e&&e.id&&this.updateLocalVisitor(e)}buildBaseVisitor(){return{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.device,country:null,...this.state.essential.initialState}}getInitialState(){const t=this.getUTMValue("utm_source")??"",e=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:t,utmMedium:e,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(t=>t.isThemeTest&&t.hypothesisId!=null&&this.getHypothesis(t.hypothesisId)&&t.themeId===themeId)?(this.log("On active theme test, remov
11ing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):this.state.essential.visitorTests.some(t=>t.isThemeTest&&t.hypothesisId!=null&&!this.getHypothesis(t.hypothesisId)&&t.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(t=>t.hypotheses.some(e=>e.themeId===themeId))?(this.log("Current theme is an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.testConfigs.some(t=>t.hypotheses.some(e=>e.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 t=new URL(window.location.toString());t.searchParams.set("preview_theme_id",""),this.queueRedirect(t)}testsForUrl(t){const e=new URL(window.location.href),i=this.typeFromTemplate();return t.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&&e.pathname.endsWith(r.redirectPath)||r.type==="basicScript"))&&(s.ignoreTestViewParameterEnforcement||!e.searchParams.has("view")||s.hypotheses.map(r=>r.affix).includes(e.searchParams.get("view")??"")))}domTestsForUrl(t){const e=new URL(window.location.href);return t.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(it(r)).test(e.toString()))))}async filterTestsByAudience(t,e,i){const s=[];let r=e.country;!r&&t.some(n=>n.requiresCountry&&!i.some(o=>o.testId===n.id))&&(this.log("Hiding page to check geoip"),this.hidePage(),r=await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/get-country`,signal:AbortSignal.timeout(this.getCountryTimeout)}).catch(n=>(this.log("Error getting country",n),null)));for(const n of t){if(this.log("Checking audience for test '%s'",n.id),this.state.essential.visitorTests.some(c=>c.testId===n.id&&c.hypothesisId==null)){console.log(`Skipping blocked test '${n.id}'`);continue}const o=this.visitorCreatedDuringTestActive(n.statusHistory);(i.some(c=>c.testId===n.id&&(n.device==="all"||n.device===e.device&&n.device===this.device))||this.isTargetAudience(n,e,o,r))&&(this.log("Visitor is in audience for test '%s'",n.id),s.push(n))}this.testsFilteredByAudience=s}isTargetAudience(t,e,i,s){const r=this.getChannel(e);return(t.device==="all"||t.device===e.device&&t.device===this.device)&&(t.visitorOption==="all"||t.visitorOption==="new"&&i||t.visitorOption==="returning"&&!i)&&(t.targetAudiences.length===0||t.targetAudiences.reduce((n,o)=>n||o.reduce((l,c)=>l&&c(e,i,r,s),!0),!1))}visitorCreatedDuringTestActive(t){let e="";for(const i of t){if(this.state.analytics.visitor!==null&&this.state.analytics.visitor.createdAt<i.createdAt||this.state.essential.initialState.createdAt<i.createdAt)break;e=i.status}return e==="active"}getDomTestsForCurrentUrl(){return this.domTestsForUrl(this.testsFilteredByAudience)}getCurrentVisitorHypothesis(t){return t.flatMap(e=>e.hypotheses).find(e=>e.type!=="dom"&&e.type!=="price"&&this.state.essential.visitorTests.some(i=>i.hypothesisId===e.id))}getVisitorDomHypothesis(t){return t.flatMap(e=>e.hypotheses).filter(e=>(e.type==="dom"||e.type==="price")&&this.state.essential.visitorTests.some(i=>i.hypothesisId===e.id))}getHypothesis(t){return this.testConfigs.filter(e=>e.hypotheses.some(i=>i.id===t)).map(e=>e.hypotheses.find(i=>i.id===t))[0]}getActiveAssignment(){if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig;return e.currentVariant&&e.testId?{testId:e.testId,hypothesisId:e.currentVariant}:null}const t=this.state.essential.visitorTests.find(e=>e.hypothesisId);return t?.hypothesisId?{testId:t.testId,hypothesisId:t.hypothesisId}:null}findActiveSubscriptionTestControl(){for(const t of this.testConfigs){const e=t.hypotheses.find(i=>i.isControl);if(e?.subscriptionData)return{testId:t.id,hypothesis:e}}return null}getDomSelectorsForHypothesis(t){if(!t)return[];if(t.domSelectors&&t.domSelectors.length>0)return t.domSelectors;if(t.priceData){const e=`${this.priceSelectorsSessionKey}_${t.id}`;try{const s=sessionStorage.getItem(e);if(s){const r=JSON.parse(s);return t.domSelectors=r,this.log("Loaded %d price selectors from cache for hypothesis '%s'",r.length,t.id),r}}catch{}const i=Ot(t.priceData);t.domSelectors=i;try{sessionStorage.setItem(e,JSON.stringify(i)),this.log("Generated and cached %d price selectors for hypothesis '%s'",i.length,t.id)}catch{this.log("Generated %d price selectors for hypothesis '%s' (cache unavailable)",i.length,t.id)}return i}return[]}hasThemeTest(t){return t.some(e=>e.hypotheses.some(i=>i.type==="theme"))}hasTestThatIsNotThemeTest(t){return t.some(e=>e.hypotheses.some(i=>i.type!=="theme"&&i.type!=="dom"&&i.type!=="price"))}hasThemeAndOtherTestTypes(t){return this.hasThemeTest(t)&&this.hasTestThatIsNotThemeTest(t)}testIsPaused(t){return t.status==="paused"||t.status==="incompatible"||t.status==="suspended"}visitorActiveTestType(){const t=this.state.essential.visitorTests.filter(e=>this.testConfigs.some(i=>i.hypotheses.some(s=>s.id==e.hypothesisId)));return t.length===0?null:t.some(e=>e.isThemeTest)?"theme":"templateOrUrlRedirect"}getReservationType(t){return t==="price"||this.isTemplateTestType(t)?"deferred":"immediate"}isTemplateTestType(t){return["product","collection","landing","index","cart","search","blog","article","collectionList"].includes(t)}getEntryCriteriaKey(t){const e=t.hypotheses.find(i=>i.isControl);if(!e)return`unknown:${t.id}`;switch(e.type){case"theme":return"global:theme";case"basicScript":return"global:autoApi";case"price":return"global:price";case"manualScript":return`conditional:manualApi:${t.id}`;case"urlRedirect":return`conditional:url:${e.redirectPath||"unknown"}`;default:return`conditional:template:${e.type}`}}isGlobalEntryCriteria(t){return t.startsWith("global:")}groupTestsByEntryCriteria(t){const e=new Map;for(const i of t){const s=this.getEntryCriteriaKey(i),r=e.get(s)||[];r.push(i),e.set(s,r)}return e}doesCurrentPageMatchEntryCriteria(t){if(this.isGlobalEntryCriteria(t))return!0;
11if(t==="conditional:manualApi")return!1;if(t.startsWith("conditional:url:")){const e=t.replace("conditional:url:","");return window.location.pathname.endsWith(e)}if(t.startsWith("conditional:template:")){const e=t.replace("conditional:template:","");return this.typeFromTemplate()===e}return!1}hasActiveReservation(){const t=this.getActiveReservations();return Object.values(t).some(e=>!e.isRealized)}getActiveReservation(){const t=this.getActiveReservations();return Object.values(t).find(e=>!e.isRealized)??null}clearStaleReservations(){const t=this.state.temporary.testReservations;if(!t)return;let e=!1;for(const[i,s]of Object.entries(t)){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 t[i],e=!0;continue}if(r.status!=="active"){this.log("Test '%s' status is '%s', clearing reservation for criteria '%s'",s.testId,r.status,i),delete t[i],e=!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 t[i],e=!0)}e&&this.persistTemporaryState()}createReservations(t){if(this.state.temporary.testReservations||(this.state.temporary.testReservations={}),this.state.temporary.rolledEntryCriteria||(this.state.temporary.rolledEntryCriteria=[]),this.state.temporary.testCategory==="global"){this.createSingleReservation(t,"global");return}const i=t.filter(o=>this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(o))),s=t.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(P=>P.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,P)=>S.id.localeCompare(P.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),k={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]=k,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(t,e){if(this.state.temporary.rolledEntryCriteria.includes(e)){this.log("Already rolled for pool '%s', skipping",e);return}if(t.some(p=>this.state.essential.visitorTests.some(h=>h.testId===p.id&&!h.isInvalid))){this.log("Visitor already has VT for pool '%s', skipping",e),this.state.temporary.rolledEntryCriteria.push(e);return}if(t.length===0){this.log("No tests in pool '%s'",e);return}const s=[...t].sort((p,h)=>p.id.localeCompare(h.id));this.log("Test dice roll for pool '%s' - available tests: %o",e,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,t.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(e),this.log("Created %s reservation for test '%s' from pool '%s' (criteria: %s)",l,n.id,e,c);for(const p of t)p.id!==n.id&&this.markTestAsBlocked(p,`pool:${e}`);this.persistTemporaryState()}markTestAsBlocked(t,e){this.state.essential.visitorTests.some(i=>i.testId===t.id)||(this.log("Blocking visitor from test '%s' (reason: %s)",t.id,e),this.state.essential.visitorTests.push({createdAt:new Date,testId:t.id,hypothesisId:null,isThemeTest:t.hypotheses.some(i=>
11i.type==="theme"),shouldSendToGa:!1,isSaved:!0,isInvalid:!0,themeId:void 0}))}realizeReservationForCriteria(t){const e=this.state.temporary.testReservations?.[t];if(!e)return this.log("No reservation found for criteria '%s'",t),!1;if(e.isRealized)return this.log("Reservation already realized for criteria '%s'",t),!1;if(this.state.essential.visitorTests.some(s=>s.testId===e.testId&&!s.isInvalid))return this.log("Visitor already assigned to test '%s'",e.testId),!1;const i=this.getHypothesis(e.hypothesisId);return i?(e.isRealized=!0,this.persistTemporaryState(),this.queueAddVisitorToTest(e.testId,i),this.saveState(),this.log("Realized reservation for test '%s' (criteria: %s)",e.testId,t),!0):(this.log("Hypothesis '%s' not found",e.hypothesisId),!1)}getActiveReservations(){return this.state.temporary.testReservations??{}}getReservationForCurrentPage(){const t=this.getActiveReservations();for(const[e,i]of Object.entries(t)){if(i.isRealized)continue;const s=this.testConfigs.find(r=>r.id===i.testId);if(!(!s||s.status!=="active")&&this.doesCurrentPageMatchEntryCriteria(e))return i}return null}getReservationForTest(t){const e=this.getActiveReservations();return Object.values(e).find(i=>i.testId===t)??null}getReservationTestType(){const t=this.getActiveReservations(),e=Object.values(t);if(e.length===0)return null;for(const i of e)if(i.isThemeTest)return"theme";for(const i of e)if(i.testType==="price")return"price";return e.some(i=>!i.isRealized)?"templateOrUrlRedirect":null}hasPriceTests(t){return t.some(e=>e.hypotheses.some(i=>i.type==="price"))}_priceTestProductIds=null;getPriceTestProductIds(){if(this._priceTestProductIds)return this._priceTestProductIds;const t=new Set;for(const e of this.testConfigs)for(const i of e.hypotheses)if(i.type==="price"){for(const s of i.domSelectors||[]){const r=s.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);r?.[1]&&t.add(r[1])}if(i.priceData?.variants)for(const[s]of i.priceData.variants)t.add(s)}return this._priceTestProductIds=t,this.log("Built price test product ID cache with %d products",t.size),t}isProductInAnyPriceTest(t){return this.getPriceTestProductIds().has(t)}visitorActiveTestTypeWithReservations(){const t=this.getActiveReservations();for(const r of Object.values(t)){if(r.isThemeTest)return"theme";if(r.testType==="price")return"price"}if(Object.values(t).some(r=>!r.isRealized)){if(this.state.temporary.testCategory==="global")for(const n of Object.values(t)){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 t=this.testConfigs.filter(s=>s.status==="active"&&s.hypotheses.some(r=>r.type==="price"));if(t.length===0)return;const e=this.testsFilteredByAudience.filter(s=>s.hypotheses.some(r=>r.type==="price")),i=t.filter(s=>!e.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(it(c)).test(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(t){let e=Math.random();const i=t.hypotheses.reduce((r,n)=>r+n.visitorCount,0);return t.hypotheses.sort((r,n)=>r.isControl?n.isControl?0:-1:n.isControl?1:0).reduce((r,n)=>{if(r!==null)return r;const l=t.hypotheses.reduce((c,d)=>c&&d.visitorCount>20,!0)?n.visitorCount/i-n.trafficPercentage:0;return e<=n.trafficPercentage-l?n:(e-=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(t){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(t),0),window.setTimeout(()=>{this.syncAllEvents()},2e3)}scheduleRetrySync(){this.clientIdRetryCount>=5||(this.clientIdRetryCount++,window.setTimeout(()=>{this.syncAllEvents()},500))}async syncAllEvents(){const t=async()=>
11{if(this.isSyncing){window.setTimeout(()=>{(async()=>await t())()},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 t()}async syncEvents(){if(!this.state.essential.consentApproved||!this.shopifyAnalyticsId||this.state.analytics.queue.length===0)return;const t=this.state.analytics.queue.length,e=this.state.analytics.queue.splice(0,t);this.log("Syncing %s events",t);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 yt(r.testId,r.hypothesisId,r.createdAt)).concat(e)};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,...e)}finally{this.saveState()}}syncGAEvents(){if(!this.gaConfig.sendEvents){if(pt)return;pt=!0,this.log("UseGtag is false â skipping GA Events");return}if(this.isSyncingGA){this.log("Already syncing GA - skipping GA events");return}const t=this.state.essential.visitorTests.filter(e=>e.shouldSendToGa);t.length!==0&&(this.isSyncingGA=!0,this.log("Syncing %s GA Events",t.length),Promise.allSettled(t.map(e=>this.sendGAEvent(e))).then(()=>this.log("All gtag events sent")).finally(()=>this.isSyncingGA=!1))}sendGAEvent(t){return new Promise(e=>{this.log("Sending GA Event for test %s, hypothesis %s",t.testId,t.hypothesisId);const i=()=>{this.log("GA acknowledged event for hypothesis %s",t.hypothesisId),t.shouldSendToGa=!1,this.persistEssentialState(),e()},s={exp_variant_string:`SL-${t.testId}-${t.hypothesisId}`};
11this.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(t){let e;({visitorTests:e,...this.state.analytics.visitor}=t),this.log("updateLocalVisitor - server returned %d tests: %o",e.length,e.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)&&!e.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 e){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(t){try{return await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/by-key/${this.shop}/${t}`})}catch{return null}}async sendEvents(t){await this.makeRequest({method:"post",url:`${this.eventHost}/api/v0/events`,data:JSON.stringify(t)})}sendDiagnosticTelemetry(t,e,i){if(!this.telemetryEnabled||!navigator.sendBeacon)return;const s=this.state.essential.consentApproved,r=JSON.stringify({shop:this.shop,testId:e,checkpoint:t,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(t){const i=decodeURIComponent(window.location.search.substring(1)).split("&");for(let s=0;s<i.length;s++){const r=i[s].split("=");if(r[0]===t)return r[1]||null}return null}hidePage(t){this.log("Hiding page"),this.cssHideClass&&!window.document.documentElement.classList.contains(this.cssHideClass)&&(window.document.documentElement.classList.add(this.cssHideClass),t||setTimeout(this.removeAsyncHide(this.cssHideClass),2e3))}showPage(){this.cssHideClass&&this.removeAsyncHide(this.cssHideClass)()}getDeviceType(){function t(){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 )|
11sy(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 e(){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 t()?"mobile":e()?"tablet":"desktop"}removeAsyncHide(t){return()=>{t&&window.document.documentElement.classList.remove(t)}}async getCartState(){try{let t=await this.makeJsonRequest({method:"get",url:`${window.location.origin}/cart.js`});return t===null||(t.note===null&&(t=await this.makeJsonRequest({method:"post",url:`${window.location.origin}/cart/update.js`,data:JSON.stringify({note:""})})),t==null)?null:{token:t.token,total_price:t.total_price,total_discount:t.total_discount,currency:t.currency,items_subtotal_price:t.items_subtotal_price,items:t.items.map(e=>({quantity:e.quantity,variant_id:e.variant_id,key:e.key,price:e.price,final_line_price:e.final_line_price,sku:e.sku,product_id:e.product_id}))}}catch(t){return this.log("Error sending cart info",t),null}}ensureCartAttributesForExistingPriceTests(t){try{if(this.log("Checking visitor assignments for active price tests"),t&&this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig;this.log("Using preview config for merchant:",e.testId);let i="variant";if(e.variants&&e.variants.length>0){const s=e.variants.find(r=>r.id===e.currentVariant);s&&s.isControl&&(i="control")}this.log("Merchant preview - updating hidden inputs:",e.testId,i),this.updatePriceTestHiddenInputs(e.testId,i,!0);return}for(const e of this.state.essential.visitorTests){const i=this.testConfigs.find(n=>n.id===e.testId);if(!i){this.log("Test config not found:",e.testId);continue}const s=i.hypotheses.find(n=>n.id===e.hypothesisId);if(!s||s.type!=="price")continue;const r=s.isControl?"control":"variant";this.log("Updating hidden inputs for price test:",e.testId,r),this.updatePriceTestHiddenInputs(e.testId,r,t)}}catch(e){this.log("Error ensuring cart attributes for existing price tests:",e)}}subscriptionSwapDone=!1;subscriptionHideWrongPlans=null;subscriptionPriceDone=!1;subscriptionUpdateOneTime=null;subscriptionOneTimeDone=!1;swapMap=null;slptValue=null;async subscriptionSwap(){await Lt(this)}async subscriptionPriceChange(){await qt(this)}async subscriptionOneTimePrice(){await Ht(this)}
11updatePriceTestHiddenInputs(t,e,i){try{this.cleanupPriceTestObservers();const s=`${t}:${e}:${i?"t":"f"}`,r=C=>{const m=C.getAttribute("data-sl-pid");if(!m)return!0;if(i&&this.state.temporary.previewConfig){const w=this.state.temporary.previewConfig,T=e==="control"?"a":"b",f=w.variants.find(v=>v.label===T);if(!f)return!1;for(const v of f.domSelectors||[]){const g=v.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(g){const I=g[1];if(this.log(`Extracted ID from selector: ${I}, comparing to: ${m}`),I===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:",T),!1}const y=this.testConfigs.find(w=>w.id===t);if(!y)return this.log("Test config not found for testId:",t),!1;for(const w of y.hypotheses||[]){for(const T of w.domSelectors||[]){const f=T.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:",t),!0}if(w.priceData?.variants){for(const T of w.priceData.variants)if(T[0]===m)return this.log("Product ID match found in priceData:",m,"for test:",t),!0}}return this.log("No product ID match for:",m,"in test:",t),!1},n=new Set;let o=!1,l=null;const c=(C,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{C.observe(w,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(T){this.log(`Failed to observe element (${m}):`,T)}}),document.body&&document.body.isConnected)try{C.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=(C,m,y,w)=>{const T=C.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: ${C.length}, filtered: ${T.length}`),T.length>0&&U(document,{testId:t,hypothesisId:m,selectors:T})},p=(C,m)=>{this.log(`Applying DOM selector changes for product ID: ${C}`),m.disconnect(),o=!0;try{if(i&&this.state.temporary.previewConfig){const y=e==="control"?"a":"b",w=this.state.temporary.previewConfig.variants.find(T=>T.label===y);if(!w?.domSelectors){this.log(`No DOM selectors found for preview variant: ${y}`);return}d(w.domSelectors,w.id,"preview config",C)}else{const y=this.testConfigs.find(T=>T.id===t);if(!y){this.log(`No test config found for testId: ${t}`);return}const w=y.hypotheses.find(T=>e==="control"?T.isControl:!T.isControl);if(!w?.domSelectors){this.log(`No DOM selectors found for assignment: ${e}`);return}d(w.domSelectors,w.id,"live config",C)}}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(C=>{if(!o)for(const m of C){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,T=w.getAttribute("data-sl-attribute-p");for(;!T&&w.parentElement;)w=w.parentElement,T=w.getAttribute("data-sl-attribute-p");if(!T)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="${T}"`),v&&this.log(`Previous content: "${v}"`),this.log(`Current content: "${f}"`),p(T,h)}});c(h,"initial setup"),n.add(h);const u=new MutationObserver(C=>{C.forEach(m=>{m.addedNodes.forEach(y=>{if(y.nodeType===Node.ELEMENT_NODE){const w=y;k(w);const T=w.matches('input[name="properties[_slpt]"]')?[w]:w.querySelectorAll('input[name="properties[_slpt]"]');T.length>0&&this.log(`MutationObserver found ${T.length} new hidden input(s)`),T.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(C=>
11{C.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,T=m.oldValue,f=w.getAttribute("data-sl-pid");this.log(`data-sl-pid changed from "${T}" 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"),k(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 k=C=>{C.tagName==="SHOPIFY-PAYMENT-TERMS"&&(this.log("MutationObserver found new shopify-payment-terms element"),this.updateShopifyPaymentTerms(t,e));const m=C.querySelectorAll("shopify-payment-terms");m.length>0&&(this.log(`MutationObserver found ${m.length} shopify-payment-terms in added node`),this.updateShopifyPaymentTerms(t,e)),C.tagName==="AFTERPAY-PLACEMENT"&&(this.log("MutationObserver found new afterpay-placement element"),this.updateAfterpayPlacements(t,e,"afterpay"));const y=C.querySelectorAll("afterpay-placement");y.length>0&&(this.log(`MutationObserver found ${y.length} afterpay-placement in added node`),this.updateAfterpayPlacements(t,e,"afterpay")),C.tagName==="SQUARE-PLACEMENT"&&(this.log("MutationObserver found new square-placement element"),this.updateAfterpayPlacements(t,e,"square"));const w=C.querySelectorAll("square-placement");w.length>0&&(this.log(`MutationObserver found ${w.length} square-placement in added node`),this.updateAfterpayPlacements(t,e,"square")),C.tagName==="KLARNA-PLACEMENT"&&(this.log("MutationObserver found new klarna-placement element"),this.updateKlarnaPlacements(t,e));const T=C.querySelectorAll("klarna-placement");T.length>0&&(this.log(`MutationObserver found ${T.length} klarna-placement in added node`),this.updateKlarnaPlacements(t,e))},S=C=>{b.observe(C,{attributes:!0,attributeFilter:["data-sl-pid"],attributeOldValue:!0,subtree:!1});const m=C.getAttribute("data-sl-pid");this.log(`Started AttributeObserver on specific input with data-sl-pid="${m}"`)},P=()=>{const C=document.querySelectorAll('input[name="properties[_slpt]"]');this.log(`Found ${C.length} existing hidden inputs to check`),C.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"),P(),k(document.body)):document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.body&&(u.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver after DOMContentLoaded"),P(),k(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(t,e){this.updatePlacementElements(t,e,"klarna-placement",(i,s)=>{i.setAttribute("data-purchase-amount",s.toString())})}cleanupPriceTestObservers(){const t=window.__shopliftPriceTestObservers;t&&(t.forEach(e=>{e.disconnect()}),t.clear(),this.log("Cleaned up existing price test observers")),delete window.__shopliftPriceTestObservers,delete window.__shopliftPriceTestValue}updateAfterpayPlacements(t,e,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(t,e,s,(n,o)=>
11{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(t,e,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=e==="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===t);if(!l){this.log(`No testConfig found for id: ${t} - early return`);return}const c=l.hypotheses.find(d=>e==="control"?d.isControl:!d.isControl);if(!c?.domSelectors){this.log(`No hypothesis or domSelectors found for assignment: ${e} - 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 P=S.cssSelector.match(o);return P&&P[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 k=Math.round(b*100);s(l,k)}),this.log(`updatePlacementElements completed for ${i}`)}updateShopifyPaymentTerms(t,e){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=e==="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===t);if(!n)return;const o=n.hypotheses.find(l=>e==="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(t){const e=await this.makeRequest(t);return e===null?null:JSON.parse(await e.text(),F)}async makeRequest(t){const{url:e,method:i,headers:s,data:r,signal:n}=t,o=new Headers;if(s)for(const c in s)o.append(c,s[c]);(!s||!s.Accept)&&o.append("Accept","application/json"),(!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(e,{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 et}throw new Error(`Error sending shoplift request ${l.status}`)}return l}queueAddVisitorToTest(t,e){if(this.state.essential.visitorTests.some(s=>s.testId===t))return;const i=this.testConfigs.find(s=>s.id===t);if(this.state.essential.visitorTests.push({createdAt:new Date,testId:t,hypothesisId:e.id,isThemeTest:e.type==="theme",themeId:e.themeId,isSaved:!1,isInvalid:!1,shouldSe
11ndToGa:!0,testType:e.type,assignedTo:e.isControl?"control":"variant",testTitle:i?.title}),e.type==="price"){const s=e.isControl?"control":"variant";this.log("Price test assignment detected, updating cart attributes:",t,s),this.updatePriceTestHiddenInputs(t,s,!1)}}queueCartUpdate(t){this.queueEvent(new wt(t))}queuePageView(t){this.queueEvent(new vt(t))}queueEvent(t){!this.state.essential.consentApproved&&this.state.essential.hasConsentInteraction||this.state.analytics.queue.length>10||this.state.analytics.queue.push(t)}legacyGetLocalStorageVisitor(){const t=this.localStorageGet(this.legacySessionKey);if(t)try{return JSON.parse(t,F)}catch{}return null}pruneStaleVisitorTests(){this.state.essential.visitorTests=this.state.essential.visitorTests.filter(t=>this.testConfigs.some(e=>e.id==t.testId)||this.inactiveTestConfigs.filter(e=>this.testIsPaused(e)).some(e=>e.id===t.testId))}pruneStateAndSave(){this.pruneStaleVisitorTests(),this.saveState()}saveState(){this.persistEssentialState(),this.persistAnalyticsState()}loadState(){const t=this.loadAnalyticsState(),e={analytics:t,essential:this.loadEssentialState(t),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 e.analytics.visitor===null&&r&&({visitorTests:e.essential.visitorTests,...e.analytics.visitor}=r,e.essential.isFirstLoad=!1,e.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)),!e.essential.consentApproved&&e.essential.hasConsentInteraction&&this.deleteLocalStorage(this.analyticsSessionKey),e}loadEssentialState(t){const e=this.loadLocalStorage(this.essentialSessionKey),i=this.loadCookie(this.essentialSessionKey),s=this.getInitialState();t.visitor?.device&&(s.device=t.visitor.device);const r={timestamp:new Date,consentApproved:!1,hasConsentInteraction:!1,debugMode:!1,initialState:s,visitorTests:[],isFirstLoad:!0},n=[e,i].filter(o=>o!==null).sort((o,l)=>+l.timestamp-+o.timestamp)[0]??r;return n.initialState||(t.visitor!==null?n.initialState=t.visitor:(n.initialState=s,n.initialState.createdAt=n.timestamp)),n}loadAnalyticsState(){const t=this.loadLocalStorage(this.analyticsSessionKey),e=this.loadCookie(this.analyticsSessionKey),i={timestamp:new Date,visitor:null,queue:[]},s=[t,e].filter(r=>r!==null).sort((r,n)=>+n.timestamp-+r.timestamp)[0]??i;return s.queue.length===0&&t&&t.queue.length>1&&(s.queue=t.queue),s}loadTemporaryState(){const t=this.sessionStorageGet(this.temporarySessionKey),e=t?JSON.parse(t,F):null,i=this.loadCookie(this.temporarySessionKey);return e??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.persistCookieState(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(t){const e=this.localStorageGet(t);if(e===null)return null;try{return JSON.parse(e,F)}catch{return null}}loadCookie(t){const e=this.getCookie(t);if(e===null)return null;try{return JSON.parse(e,F)}catch{return null}}persistLocalStorageState(t,e){this.localStorageSet(t,JSON.stringify(e))}persistCookieState(t,e,i=!1){const s=JSON.stringify(e),r=i?"":`expires=${new Date(new Date().getTime()+864e5*365).toUTCString()};`;document.cookie=`${t}=${s};domain=.${window.location.hostname};path=/;SameSite=Strict;${r}`}deleteCookie(t){const e=new Date(0).toUTCString();document.cookie=`${t}=;domain=.${window.location.hostname};path=/;expires=${e};`}deleteLocalStorage(t){window.localStorage.removeItem(t)}getChannel(t){return[{"name":"cross-network","test":(v) => new RegExp(".*cross-network.*", "i").test(v.utmCampaign)}
11,{"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|yandex\.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|k
11akao|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("^(.*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) =>
11 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)},{"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
11akao|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
11andex\.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(t))?.name??"other"}getShopifyAnalyticsId(){const t=this.getCookie("_shopify_y");if(t)return t;try{const e=this.localStorageGet("Shoplift_ClientId");if(e)return e}catch{}return null}legacyGetCookieVisitor(){const t=this.getCookie("SHOPLIFT");return t===null?null:JSON.parse(t,F)}getCookie(t){const e=this.cookie.split("; ").filter(i=>i.split("=").at(0)===t).at(0);return e===void 0?null:e.split("=").slice(1).join("=")}monitorConsentChange(){document.addEventListener("visitorConsentCollected",t=>{(async()=>await this.onConsentChange(t.detail.analyticsAllowed,!0))()}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.loadShopifyConsentApiWithRetry()):this.loadShopifyConsentApiWithRetry()}loadShopifyConsentApiWithRetry(){let t=0;const e=()=>{this.loadShopifyConsentApi()||t++<10&&window.setTimeout(e,100)};e()}loadShopifyConsentApi(){if(window.Shopify){this.log("Loading Shopify features");const t=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"),e=window.setTimeout(()=>{(async()=>await t())()},1e3);return}const i=window.Shopify.customerPrivacy.getTrackingConsent();await this.onConsentChange(window.Shopify.customerPrivacy.analyticsProcessingAllowed(),i==="yes")};let e=window.setTimeout(()=>{(async()=>await t())()},5e3);return window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],i=>{(async()=>{if(window.clearTimeout(e),i){this.log("Error loading consent tracking",i);return}await t()})()}),!0}return!1}async onConsentChange(t,e){try{if(this.log("Consent change detected",t,e),this.state.essential.consentApproved=t,this.state.essential.hasConsentInteraction=e,!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();for(const i of this.state.analytics.queue.filter(s=>s.type===1||s.type===2)){const s=i;s.shopifyAnalyticsId=this.shopifyAnalyticsId}this.saveState(),await this.syncAllEvents()}catch(i){this.log("Error syncing on consent change",i)}}isThemePreview(){return isThemePreview||themeRole!=="main"}isAppProxyPath(){const t=["/apps/","/tools/","/a/"],e=window.location.pathname;return t.some(i=>e.startsWith(i))}clearThemeBar(t,e,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"),e&&(this.log("Removing theme bar"),n.remove()),t?this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify({...this.debugState(),stateAtEvaluation:s},X)}):Promise.resolve(null)))).catch(r=>console.error(r))}waitForElement(t,e){return new Promise(i=>{const s=document.querySelector(e);if(s){i(s);return}const r=new MutationObserver(n=>{const o=document.querySelector(e);if(o){r.disconnect(),i(o);return}});r.observe(t??document.documentElement,{childList:!0})})}setDebug(t){this.state.essential.debugMode=t,this.saveState()}log(t,...e){let i=0;const s=t.replace(/%[sdoOfF]/g,r=>{if(i>=e.length)return r;const n=e[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] ${t}`,...e)}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
11:this.getCookie("is_shopify_merchant"),themeId,url:window.location.href,isThemePreview,themeRole,gaConfig:this.gaConfig},logHistory:this.logHistory}}createViewportObserver(t,e={}){const{threshold:i=this.VIEWPORT_TRACK_THRESHOLD,triggerOnce:s=!0}=e,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&&(t(c,l),s&&r.add(l))}})},{threshold:i})}applyChangesWithViewport(t,e,i,s){const r=e.selectorsForViewportTracking??e.selectors,n=o=>{if(this.state.essential.visitorTests.some(h=>h.testId===o)||this.activeViewportObservers.has(o))return;const l=[];if(r.forEach(h=>{t.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,k=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&&k>0&&S>0&&k>=u.height*b&&(this.log(`Price element already visible in viewport for test ${o}:`,h),d())})},100)};e.selectors.length>0&&U(t,e,()=>{}),bt(t,{testId:e.testId,hypothesisId:e.hypothesisId,selectors:r},o=>{n(o)})}applyPriceTestWithMapLookup(t,e,i,s){if(!e.priceData){this.log("No price data for hypothesis '%s'",e.id);return}this.log("Hypothesis '%s' isControl=%s, priceData has %d variants",e.id,e.isControl,e.priceData.variants.length);const r=e.priceData.variants.slice(0,3);for(const[S,P,_]of r)this.log(" Sample priceData: variant=%s, price=%d, compareAt=%d",S,P,_);const n=j(e.priceData),o=new Set;for(const S of i)if(S.priceData)for(const[P]of S.priceData.variants)o.add(P);this.log("Price test Map lookup: %d products in hypothesis, %d total products to track",n.size,o.size);const l=e.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 P=S.getAttribute("data-sl-attribute-p"),_=S.getAttribute("data-sl-attribute-cap"),C=S.getAttribute("data-sl-attribute-discount"),m=P||_||C;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),Dt(S,m,y,l),this.log("Applied price to element for product %s",m)),!d&&!this.state.essential.visitorTests.some(w=>w.testId===t)&&(S.setAttribute(this.DATA_SL_TEST_ID,String(t)),this.setupElementViewportTracking(S,t,()=>{d||(d=!0,s(t))}))},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 P of S)P.type==="childList"&&P.addedNodes.forEach(_=>{if(_.nodeType===Node.ELEMENT_NODE){const C=_;(C.hasAttribute("data-sl-attribute-p")||C.hasAttribute("data-sl-attribute-cap")||C.hasAttribute("data-sl-attribute-discount"))&&h(C),C.querySelectorAll(p).forEach(h)}}),P.type==="attributes"&&P.target instanceof Element&&h(P.target)}),k=document.body||document.documentElement;b.observe(k,{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(t,e,i){const s=this.VIEWPORT_TRACK_THRESHOLD,r=t.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",e),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",e),c.disconnect(),i();break}},{threshold:s});c.observe(t)}debug(){const t=this.debugState();console.log(JSON.stringify(t,X,2))}}(async function(){window.shopliftInstance||(window.shopliftInstance=new Wt("roseskinco.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",false,false,false,{"sendEvents":false,"mode":"gtag"},false,false,1000,[],[{"id":"019df374-5e8e-77c1-9d44-49dfee496773","bayesianRevision":5,"status":"incompatible","hypotheses":[{"id":"019df35b-460a-787e-ac1b-fcba48c4b3ba","type":"product","themeId":189977231541,"affix":"lumi","isControl":true,"redirectPath":null},{"id":"019df35b-ea50-7d49-b1ef-5de05ce4b23d","type":"product","themeId":189977231541,"affix":"sl-AFABD240","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false}],null),await window.shopliftInstance.init())})();async function Gt(a,t,e,i){const s=Mt({log:i});if(e)return i("[SUB-PREVIEW] A side â no overlay applied; widget renders naturally"),s;const r=a.widget.widgetType,n=t?j(t):null;let o=W(t),l=K(a,o),c=l.discountMap,d=l.maxDiscount;function p(){const f=W(t);f!==o&&(o=f,l=K(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(!t||!n)return null;const v=Y(n),g=v?n.get(v):void 0;return g?{formattedVariantPrice:G(g.priceInCents,t),formattedDiscounted:G(g.priceInCents*(1-f/100),t)}:null}function u(f){const v=J(a,f);if(!v)return d;const g=D(a,"subscriptionInput"),I=g.length?g[0].selector:'input[name="rc_plan"]',A=v.querySelector(`${I}:checked`);if(A){const E=c[A.value];if(E!==void 0)return E}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 I=f.querySelector(g.selector);I?.textContent&&!I.textContent.includes(`${d}%`)&&$(I,A=>N(A,d))}}function k(f,v){const g=h(v);if(!g)return;const I=D(a,"subscriptionCompareAt");for(const A of I){const E=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);E?.textContent&&!E.textContent.includes(g.formattedVariantPrice)&&$(E,x=>/\d/.test(x)?g.formattedVariantPrice:x)}}function S(f,v){const g=h(v);if(!g)return;const I=D(a,"subscriptionPrice");for(const A of I){const E=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);E?.textContent&&!E.textContent.includes(g.formattedDiscounted)&&$(E,x=>/\d/.test(x)?g.formattedDiscounted:x)}}function P(f){const v=D(a,"subscriptionInput"),g=v.length?v[0].selector:'input[name="rc_plan"]',I=D(a,"subscriptionPlanDiscount"),A=I.length?I[0].selector:".rc-plans-button__discount";for(const E of Array.from(f.querySelectorAll("label"))){const x=E.querySelector(g),R=E.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 I=c[g.value];if(I!==void 0&&g.textContent){const A=g.textContent.match(/[\d.]+%/)?.[0];A&&A!==`${I}%`&&(g.textContent=N(g.textContent,I))}}}function C(f){const v=D(a,"onetimePrice");if(!v.length||!t||!n)return;const g=Y(n),I=g?n.get(g):void 0;if(!I)return;const A=G(I.priceInCents,t),E=D(a,"onetimeContainer"),x=E.length?E[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 I=D(a,"subscriptionDiscount").filter(A=>A.selector.includes("benefit")||A.selector==="rc-benefits");for(const A of I){const E=f.querySelector(A.selector);if(E?.shadowRoot){for(const x of Array.from(E.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),k(f,v),S(f,v),C(f);const g=J(a,f);g&&(r==="buttons"||r==="radio"?P(g):_(g)),m(f,v)}finally{y=!1}}}const T=dt({data:a,runUpdates:w});return function(){T(),s()}}const jt=Object.freeze(Object.defineProperty({__proto__:null,subscriptionPreviewRender:Gt},Symbol.toStringTag,{value:"Module"}))})(); })("/", { suffix: "", type: "search" }, "main", 193204912309, false)</script>
11 12<!-- End of Shoplift scripts --> 13 <link rel="preconnect" href="https://cdn.shopify.com" crossorigin> 14 <link rel='preconnect dns-prefetch' href='https://api.config-security.com/' crossorigin /> 15 <link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin /> 16 17 <link href="//roseskinco.com/cdn/shop/t/797/assets/Gilroy-Bold.woff2?v=21569078222817410371788119646" as="font" crossorigin="anonymous" rel="preload"> 18 <link href="//roseskinco.com/cdn/shop/t/797/assets/Gilroy-BoldItalic.woff2?v=23748708746583369371788119647" as="font" crossorigin="anonymous" rel="preload"> 19 <link href="//roseskinco.com/cdn/shop/t/797/assets/Gilroy-Extrabold.woff2?v=15802685512686714131788119649" as="font" crossorigin="anonymous" rel="preload"> 20 <link href="//roseskinco.com/cdn/shop/t/797/assets/Gilroy-Medium.woff2?v=55627608203960875051788119651" as="font" crossorigin="anonymous" rel="preload"> 21 <link href="//roseskinco.com/cdn/shop/t/797/assets/Gilroy-Semibold.woff2?v=103842378369895428241788119652" as="font" crossorigin="anonymous" rel="preload"> 22 23 24 25 26 27 28 29 30 31 32<!-- 33 Copyright 2026 Process Creative 34 35 Visit Us: 36 Web - https://processcreative.com.au 37 Instagram - https://instagram.com/process_creative 38 Shopify - https://experts.shopify.com/process 39--> 40<meta charset="utf-8" /> 41<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 42<meta name="viewport" content="width=device-width, initial-scale=1.0" /> 43<meta name="yandex-verification" content="b716a8db8ae0f315" /> 44<meta name="google-site-verification" content="JBfFY9DYbl5HKFrqxueEfPgYwcVZkMBAfMgrnGsG3ks" /> 45<meta name="google-site-verification" content="_ApYKYlOmdyXjC8ThGT71uZ78-SLEUxrXKB-UMmzoRo" /> 46<meta name="google-site-verification" content="nVREwA2laxzapxJAY3i2sD13Q_iJphW4bmKz-_m5x-w" /> 47 48<meta name="msvalidate.01" content="6BD6F26AD4B3A3517E0F4F66F101E095" /> 49<meta name="p:domain_verify" content="0898117983b25c9d93137197a57e25be" /> 50<meta name="p:domain_verify" content="3746925c6df03e44ccfa045817985ce2" /> 51<meta name="google-site-verification" content="v2OoXKyjc4r5gQUh0EPel4eVHkSpNI5MSz2DoCTSkGM" /> 52<!-- /snippets/social-meta-tags.liquid --> 53 54 55 56 57<meta property="og:site_name" content="RoseSkinCo."> 58<meta property="og:url" content="https://roseskinco.com/search"> 59<meta property="og:title" content="Search"> 60<meta property="og:type" content="website"> 61<meta property="og:description" content="Shop professional at-home beauty devices & skincare from RoseSkinCo. Easy-to-use IPL devices & beautifully designed products. Free shipping. Love the skin you're in."> 62 63 64 65 66 67<meta name="twitter:card" content="summary_large_image"> 68<meta name="twitter:title" content="Search"> 69<meta name="twitter:description" content="Shop professional at-home beauty devices & skincare from RoseSkinCo. Easy-to-use IPL devices & beautifully designed products. Free shipping. Love the skin you're in.">
70<script src="https://code.jquery.com/jquery-3.6.0.min.js" async></script>
70<link rel="dns-prefetch" href="//monorail-edge.shopifysvc.com" /><link rel="dns-prefetch" href="//cdn.shopify.com" /><link rel="dns-prefetch" href="//cdnjs.cloudflare.com" /><link rel="canonical" href="roseskinco.com/search">
71<script 72 async 73 type="text/javascript" 74 id="stamped-script-widget" 75 data-api-key="pubkey-dChOv47b2V8KFN853TE6iFi1tbD1z9" 76 src="https://cdn1.stamped.io/files/widget.min.js"></script>
76<link href="//roseskinco.com/cdn/shop/t/797/assets/layouts.critical.css?v=68455728573897419231788119676" rel="stylesheet" type="text/css" media="all" /> 77<link href="//roseskinco.com/cdn/shop/t/797/assets/layouts.theme.css?v=65612535958638233131788119680" rel="stylesheet" type="text/css" media="all" /> 78<title>Search 79 80 81 82 – RoseSkinCo.</title><meta name="description" content="Shop professional at-home beauty devices & skincare from RoseSkinCo. Easy-to-use IPL devices & beautifully designed products. Free shipping. Love the skin you're in." /><link 83 rel="shortcut icon" 84 href="//roseskinco.com/cdn/shop/files/RSC_RosePinkBrandmark_12.31.21_V1_1_2_e1c4545c-e1f8-4e72-af0f-52c61781e50c_32x32.png?v=1726687602" 85 type="image/png" />
85<script type="text/javascript"> 86 window.Shop = "row"; 87 window.Asset = "\/\/roseskinco.com\/cdn\/shop\/t\/797\/assets\/layout.theme.js?v=96376"; 88 window.Customer =null; 89 window.Language = window.Language || {}; 90 window.Language.strings = window.Language.strings || {}; 91 window.Cart = window.Cart || {}; 92 window.Cart.data = window.Cart.data || 93{"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0,"items_with_product": []}; 94 window.Currency = window.Currency || {}; 95 window.Currency.currency = "USD"; 96 window.Currency.format = "${{ amount_no_decimals }}"; 97 window.Currency.convertedFormat = null; 98</script>
98 99 100 101 102 103 104 105 106 107 108 109 110 111
112<script type="text/javascript" data-language-strings> 113 var a = function(k,v) {((window.Language=window.Language||{}).strings=window.Language.strings||{})[k]=v;};a("products.product.view_product","View {{productName}}");a("products.product.free","Translation missing: en.products.product.free");a("products.product.add_to_cart","Add to Cart");a("products.product.adding","Adding");a("products.product.add_to_cart_template","Translation missing: en.products.product.add_to_cart_template");a("products.product.cart_pending","Translation missing: en.products.product.cart_pending");a("products.product.all_in_cart","All in Cart");a("products.product.added_to_cart","Added to Cart");a("products.product.quick_add","Quick Add");a("products.product.preorder","Preorder");a("products.product.sold_out","Out of Stock");a("products.product.error","Translation missing: en.products.product.error");a("products.product.on_sale","on sale,on sale,on sale");a("products.product.error_add_cart","There was an error adding the item to your cart. Please try again.");a("collections.collection.sort_label","Sort by");a("collections.collection.category","Category");a("general.cart.add","Quick add");a("general.cart.adding","Adding!");a("rewards.points_count","Translation missing: en.rewards.points_count");a("rewards.copy_code","Translation missing: en.rewards.copy_code");a("rewards.copy","Translation missing: en.rewards.copy");a("rewards.copied","Translation missing: en.rewards.copied");a("rewards.unlock","Translation missing: en.rewards.unlock");a("rewards.reveal","Translation missing: en.rewards.reveal");a("rewards.redeemed","Translation missing: en.rewards.redeemed");a("rewards.activity","Translation missing: en.rewards.activity");a("rewards.no_activity","Translation missing: en.rewards.no_activity");a("rewards.spent","Translation missing: en.rewards.spent");a("rewards.congrats","Translation missing: en.rewards.congrats");</script>
vendor: 1 bytes, line 113
113
114<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
114<meta name="facebook-domain-verification" content="bzpa8v6kzgjym3omm5zemhlh4u2rw6"> 115<meta name="facebook-domain-verification" content="wegswun1uw27qh4bhf4h4gflt0fv4r"> 116<meta name="facebook-domain-verification" content="te4i8d5w8nyxiztfrvi0suj5mfn06l"> 117<meta name="google-site-verification" content="1AWyssC4uq7wpkaYJZaii7J7GruM-x2P1eZgCqexXLs"> 118<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/8487567423/digital_wallets/dialog"> 119<meta id="in-context-paypal-metadata" data-shop-id="8487567423" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 120<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" hreflang="x-default" href="https://roseskinco.com/search"> 121<link rel="alternate" hreflang="en" href="https://roseskinco.com/search"> 122<link rel="alternate" hreflang="en-CA" href="https://ca.roseskinco.com/search"> 123<link rel="alternate" hreflang="en-AU" href="https://au.roseskinco.com/search"> 124<link rel="alternate" hreflang="en-GB" href="https://uk.roseskinco.com/search"> 125<link rel="alternate" hreflang="en-AE" href="https://ae.roseskinco.com/search"> 126<link rel="alternate" hreflang="en-MX" href="https://int.roseskinco.com/search"> 127<link rel="alternate" hreflang="en-NZ" href="https://nz.roseskinco.com/search"> 128<link rel="alternate" hreflang="en-SG" href="https://sg.roseskinco.com/search"> 129<link rel="alternate" hreflang="en-SI" href="https://eu.roseskinco.com/search"> 130<link rel="alternate" hreflang="en-AT" href="https://eu.roseskinco.com/search"> 131<link rel="alternate" hreflang="en-BE" href="https://eu.roseskinco.com/search"> 132<link rel="alternate" hreflang="en-DK" href="https://eu.roseskinco.com/search"> 133<link rel="alternate" hreflang="en-FR" href="https://eu.roseskinco.com/search"> 134<link rel="alternate" hreflang="en-DE" href="https://eu.roseskinco.com/search"> 135<link rel="alternate" hreflang="en-IE" href="https://eu.roseskinco.com/search"> 136<link rel="alternate" hreflang="en-IT" href="https://eu.roseskinco.com/search"> 137<link rel="alternate" hreflang="en-RO" href="https://eu.roseskinco.com/search"> 138<link rel="alternate" hreflang="en-ES" href="https://eu.roseskinco.com/search"> 139<link rel="alternate" hreflang="en-NL" href="https://eu.roseskinco.com/search"> 140<link rel="alternate" hreflang="en-PT" href="https://eu.roseskinco.com/search"> 141<link rel="alternate" hreflang="en-LT" href="https://eu.roseskinco.com/search"> 142<link rel="alternate" hreflang="en-MC" href="https://eu.roseskinco.com/search"> 143<link rel="alternate" hreflang="en-TH" href="https://int.roseskinco.com/search"> 144<link rel="alternate" hreflang="en-ZA" href="https://za.roseskinco.com/search"> 145<link rel="alternate" hreflang="en-JP" href="https://int.roseskinco.com/search"> 146<link rel="alternate" hreflang="en-MY" href="https://int.roseskinco.com/search"> 147<link rel="alternate" hreflang="en-HK" href="https://int.roseskinco.com/search"> 148<link rel="alternate" hreflang="en-NO" href="https://eu.roseskinco.com/search"> 149<link rel="alternate" hreflang="en-CH" href="https://eu.roseskinco.com/search"> 150<link rel="alternate" hreflang="en-RS" href="https://eu.roseskinco.com/search"> 151<link rel="alternate" hreflang="en-PH" href="https://int.roseskinco.com/search"> 152<link rel="alternate" hreflang="en-BG" href="https://eu.roseskinco.com/search"> 153<link rel="alternate" hreflang="en-HR" href="https://eu.roseskinco.com/search"> 154<link rel="alternate" hreflang="en-CZ" href="https://eu.roseskinco.com/search"> 155<link rel="alternate" hreflang="en-FI" href="https://eu.roseskinco.com/search"> 156<link rel="alternate" hreflang="en-HU" href="https://eu.roseskinco.com/search"> 157<link rel="alternate" hreflang="en-LV" href="https://eu.roseskinco.com/search"> 158<link rel="alternate" hreflang="en-LU" href="https://eu.roseskinco.com/search"> 159<link rel="alternate" hreflang="en-PL" href="https://eu.roseskinco.com/search"> 160<link rel="alternate" hreflang="en-SK" href="https://eu.roseskinco.com/search"> 161<link rel="alternate" hreflang="en-SE" href="https://eu.roseskinco.com/search"> 162<link rel="alternate" hreflang="en-TR" href="https://eu.roseskinco.com/search"> 163<link rel="alternate" hreflang="en-SA" href="https://int.roseskinco.com/search"> 164<link rel="alternate" hreflang="en-BR" href="https://int.roseskinco.com/search"> 165<link rel="alternate" hreflang="en-IN" href="https://int.roseskinco.com/search"> 166<link rel="alternate" hreflang="en-KR" href="https://int.roseskinco.com/search">
167<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=5032214709"></script>
167 168<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
169<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=5032214709&shop_id=8487567423" crossorigin="anonymous"></script>
vendor: 1 bytes, line 169
169
170<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":8487567423,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/8487567423","merchantName":"RoseSkinCo.","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"RoseSkinCo.","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 170
170
171<script id="shopify-features" type="application/json">{"accessToken":"6d32cb2d61a78c7b24041f2d6eeb0705","betas":["rich-media-storefront-analytics"],"domain":"roseskinco.com","predictiveSearch":true,"shopId":8487567423,"locale":"en"}</script>
vendor: 1 bytes, line 171
171
172<script>var Shopify = Shopify || {}; 173Shopify.shop = "roseskinco.myshopify.com"; 174Shopify.locale = "en"; 175Shopify.currency = {"active":"USD","rate":"1.0"}; 176Shopify.country = "US"; 177Shopify.theme = {"name":"Copy of PC Staging | Cart Redesign | 05.06","id":193204912309,"schema_name":"Process Creative","schema_version":"3.0.0","theme_store_id":null,"role":"main"}; 178Shopify.theme.handle = "null"; 179Shopify.theme.style = {"id":null,"handle":null}; 180Shopify.cdnHost = "roseskinco.com/cdn"; 181Shopify.routes = Shopify.routes || {}; 182Shopify.routes.root = "/"; 183Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 184Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 185Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 186Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 186
186
187<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 187
187
188<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 188
188
189<script> 190 window.ShopifyPay = window.ShopifyPay || {}; 191 window.ShopifyPay.apiHost = "shop.app\/pay"; 192 window.ShopifyPay.redirectState = null; 193</script>
vendor: 1 bytes, line 193
193
194<script> 195 window.Shopify = window.Shopify || {}; 196 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 197 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 198 window.Shopify.SignInWithShop.eligible = true; 199</script>
vendor: 1 bytes, line 199
199
200<script id="shop-js-analytics" type="application/json">{"pageType":"search"}</script>
vendor: 1 bytes, line 200
200
201<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 201
201
202<script type="module"> 203 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 204 205 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 206 207</script>
vendor: 1 bytes, line 207
207
208<script> 209 window.Shopify = window.Shopify || {}; 210 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 211 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"]}; 212</script>
vendor: 1 bytes, line 212
212
213<script>(function() { 214 var isLoaded = false; 215 function asyncLoad() { 216 if (isLoaded) return; 217 isLoaded = true; 218 var urls = ["https:\/\/formbuilder.hulkapps.com\/skeletopapp.js?shop=roseskinco.myshopify.com","https:\/\/cdn.shopify.com\/s\/files\/1\/0084\/8756\/7423\/t\/355\/assets\/globo.formbuilder.init.js?v=1654683630\u0026shop=roseskinco.myshopify.com"]; 219 for (var i = 0; i < urls.length; i++) { 220 var s = document.createElement('script'); 221 s.type = 'text/javascript'; 222 s.async = true; 223 s.src = urls[i]; 224 var x = document.getElementsByTagName('script')[0]; 225 x.parentNode.insertBefore(s, x); 226 } 227 }; 228 if(window.attachEvent) { 229 window.attachEvent('onload', asyncLoad); 230 } else { 231 window.addEventListener('load', asyncLoad, false); 232 } 233})();</script>
vendor: 1 bytes, line 233
233
234<script id="__st">var __st={"a":8487567423,"offset":-14400,"reqid":"1429c03c-d791-4106-826a-1dbc4bf08208-1791062382","pageurl":"roseskinco.com\/search","u":"cd064b027482","p":"searchresults"};</script>
vendor: 1 bytes, line 234
234
235<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 235
235
236<script id="form-persister">!function(){'use strict';const t='contact',e='new_comment',n=[[t,t],['blogs',e],['comments',e],[t,'customer']],o='password',r='form_key',c=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',o],s=()=>{try{return window.sessionStorage}catch{return}},i='__shopify_v',u=t=>t.elements[r],a=function(){const t=[...n].map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(',');var e;return e=t,()=>e?[...document.querySelectorAll(e)].map((t=>t.form)):[]}();function m(t){const e=u(t);a().includes(t)&&(!e||!e.value)&&function(t){try{if(!s())return;!function(t){const e=s();if(!e)return;const n=u(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){u(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:r})),t.elements[r].value=e}(t,e),function(t,e){const n=s();if(!n)return;const r=[...t.querySelectorAll(`input[type='${o}']`)].map((({name:t})=>t)),u=[...c,...r],a={};for(const[o,c]of new FormData(t).entries())u.includes(o)||(a[o]=c);n.setItem(e,JSON.stringify({[i]:1,action:t.action,data:a}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(t)}const f=t=>{if('true'===t.dataset.persistBound)return;const e=function(t,e){const n=function(t){return'function'==typeof t.submit?t.submit:HTMLFormElement.prototype.submit}(t).bind(t);return function(){let t;return()=>{t||(t=!0,(()=>{try{e(),n()}catch(t){(t=>{console.error('form submit failed',t)})(t)}})(),setTimeout((()=>t=!1),250))}}()}(t,(()=>{m(t)}));!function(t,e){if('function'==typeof t.submit&&'function'==typeof e)try{t.submit=e}catch{}}(t,e),t.addEventListener('submit',(t=>{t.preventDefault(),e()})),t.dataset.persistBound='true'};!function(){function t(t){const e=(t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form})(t);e&&m(e)}document.addEventListener('submit',t),document.addEventListener('DOMContentLoaded',(()=>{const e=a();for(const t of e)f(t);var n;n=document.body,new window.MutationObserver((t=>{for(const e of t)if('childList'===e.type&&e.addedNodes.length)for(const t of e.addedNodes)1===t.nodeType&&'FORM'===t.tagName&&a().includes(t)&&f(t)})).observe(n,{childList:!0,subtree:!0,attributes:!1}),document.removeEventListener('submit',t)}))}()}();</script>
vendor: 1 bytes, line 236
236
237<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//roseskinco.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 237
237
238<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 = "//roseskinco.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>
238<script crossorigin="anonymous" defer="defer" src="//roseskinco.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 238
238
239<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 239
239
240<script> 241 window.Shopify = window.Shopify || {}; 242 window.Shopify.MCP = window.Shopify.MCP || {}; 243 window.Shopify.MCP.enabled = true; 244 window.Shopify.MCP.shop = "roseskinco.myshopify.com"; 245 window.Shopify.MCP.mcpEndpoint = "https:\/\/roseskinco.com\/api\/mcp"; 246 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 247</script>
vendor: 1 bytes, line 247
247
248<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("\/\/roseskinco.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 249</script>
vendor: 1 bytes, line 249
249
250<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://roseskinco.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 251</script>
vendor: 1 bytes, line 251
251
252<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 253 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); 254</script>
vendor: 1 bytes, line 254
254
255<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})}})); 256</script>
256 257<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://roseskinco.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 258<style id="shopify-accelerated-checkout-cart"> 259 #shopify-buyer-consent { 260 margin-top: 1em; 261 display: inline-block; 262 width: 100%; 263} 264 265#shopify-buyer-consent.hidden { 266 display: none; 267} 268 269#shopify-subscription-policy-button { 270 background: none; 271 border: none; 272 padding: 0; 273 text-decoration: underline; 274 font-size: inherit; 275 cursor: pointer; 276} 277 278#shopify-subscription-policy-button::before { 279 box-shadow: none; 280} 281 282 </style> 283
284<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
284 285 286 287 288 289 290 291 292 293 294 <style> 295 .no-js { 296 display: none; 297 } 298 body.ab-variant-test:not(.lumi) .c-product-image-carousel__slide-image.no-js { 299 display: block !important; 300 } 301 body.ab-variant-test:not(.lumi) .c-product-image-carousel__slide:first-child picture { 302 display: none; 303 } 304 body.ab-variant-test.sl-C6661040 .shoplift-ac { 305 display: none; 306 } 307 body.ab-variant-test.sl-0F933C55 .shoplift-ab { 308 display: none; 309 } 310 @media only screen and (min-width: 1200px) { 311 body.ab-variant-test:not(.lumi) .c-product-image-carousel__nav-wrapper { 312 top: 50%; 313 transform: translateY(-50%); 314 width: 100%; 315 left: 0; 316 } 317 body.ab-variant-test:not(.lumi) .c-product-image-carousel__nav-container { 318 width: calc(100% - 16px); 319 } 320 body.ab-variant-test:not(.lumi) .c-product-image-carousel__nav-wrapper .c-product-image-carousel__dots-wrapper { 321 display: none; 322 } 323 } 324 @media (max-width: 1199px) { 325 body.ab-variant-test:not(.lumi) .c-product__badge-image-wrapper { 326 left: .5rem; 327 right: auto; 328 } 329 } 330 </style> 331 332 <noscript> 333 <style> 334 .has-js { 335 display: none !important; 336 } 337 .no-js { 338 display: block !important; 339 } 340 </style> 341 </noscript> 342 <style> 343 .skip-link { 344 position: absolute; 345 left: -10000px; 346 top: 0px; 347 padding: 12px; 348 background-color: white; 349 color: black; 350 border: 2px solid black; 351 border-radius: 5px; 352 z-index: 999999999; 353 } 354 .skip-link:focus-visible { 355 left: 0px; 356 } 357 .c-header-navigation__lvl1-item:focus-within .c-header-navigation__lvl2, li.c-header-navigation__lvl2:focus-visible + div.c-header-navigation__lvl2 { 358 opacity: 1; 359 pointer-events: auto; 360 transition-delay: 0s; 361 visibility: visible; 362 } 363 </style> 364 <!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/brandAgents_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea --> 365 366 367 368 369 370<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
371<script type="text/javascript"> 372 (function (c, l, a, r, i, t, y) { 373 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 374 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify"; 375 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 376 377 c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => { 378 if (error) { 379 console.error("Error loading Shopify features:", error); 380 return; 381 } 382 383 c[a]('consentv2', { 384 ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied", 385 analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied", 386 source: 101, 387 }); 388 }); 389 390 l.addEventListener("visitorConsentCollected", function (e) { 391 c[a]('consentv2', { 392 ad_Storage: e.detail.marketingAllowed ? "granted" : "denied", 393 analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied", 394 source: 101, 395 }); 396 }); 397 })(window, document, "clarity", "script", "f47dpo97zz"); 398</script>
398 399 400 401 402<!-- END app block --><!-- BEGIN app block: shopify://apps/aimerce-first-party-pixel/blocks/c-track-embed/51cbda5a-dbfc-4e7b-8d12-c9e90363dcd7 --><!-- END app block --><!-- BEGIN app block: shopify://apps/gorgias-live-chat-helpdesk/blocks/gorgias/a66db725-7b96-4e3f-916e-6c8e6f87aaaa -->
403<script defer data-gorgias-loader-chat src="https://config.gorgias.chat/bundle-loader/shopify/roseskinco.myshopify.com"></script>
403 404 405
406<script defer data-gorgias-loader-convert src="https://content.9gtb.com/loader.js"></script>
406 407 408
409<script defer data-gorgias-loader-mailto-replace src="https://config.gorgias.help/api/contact-forms/replace-mailto-script.js?shopName=roseskinco"></script>
409 410 411 412<!-- END app block --><!-- BEGIN app block: shopify://apps/powerful-form-builder/blocks/app-embed/e4bcb1eb-35b2-42e6-bc37-bfe0e1542c9d -->
412<script type="text/javascript" hs-ignore data-cookieconsent="ignore"> 413 var Globo = Globo || {}; 414 var globoFormbuilderRecaptchaInit = function(){}; 415 var globoFormbuilderHcaptchaInit = function(){}; 416 window.Globo.FormBuilder = window.Globo.FormBuilder || {}; 417 window.Globo.FormBuilder.shop = {"configuration":{"money_format":"${{ amount_no_decimals }}"},"pricing":{"features":{"bulkOrderForm":true,"cartForm":true,"fileUpload":30,"removeCopyright":true,"restrictedEmailDomains":true,"metrics":true}},"settings":{"copyright":"Powered by G: <a href=\"https://apps.shopify.com/form-builder-contact-form\" target=\"_blank\">Form Builder</a>","hideWaterMark":false,"reCaptcha":{"recaptchaType":"v2","siteKey":false,"languageCode":"en"},"hCaptcha":{"siteKey":false},"scrollTop":false,"customCssCode":"","customCssEnabled":false,"additionalColumns":[]},"encryption_form_id":1,"url":"https://form.globo.io/","CDN_URL":"https://dnhcnb9q6pxc3.cloudfront.net","flags":{"canary_app_version":false},"app_id":"1783207"}; 418 if(window.Globo.FormBuilder.shop && window.Globo.FormBuilder.shop?.storefront_access_token){ 419 delete window.Globo.FormBuilder.shop.storefront_access_token; 420 } 421 422 if(window.Globo.FormBuilder.shop.settings.customCssEnabled && window.Globo.FormBuilder.shop.settings.customCssCode){ 423 const customStyle = document.createElement('style'); 424 customStyle.type = 'text/css'; 425 customStyle.innerHTML = window.Globo.FormBuilder.shop.settings.customCssCode; 426 document.head.appendChild(customStyle); 427 } 428 429 window.Globo.FormBuilder.forms = []; 430 431 432 433 434 window.Globo.FormBuilder.forms[70723] = {"70723":{"header":{"active":true,"title":"Submit your before \u0026 after results","description":"\u003cp\u003e\u003cem\u003eEarn a free $100 USD gift card when you upload your silky smooth skin - guaranteed!\u003c\/em\u003e\u003c\/p\u003e"},"elements":[{"id":"paragraph","type":"paragraph","text":"\u003cp\u003eThe minimum requirement to be eligible is: 1 picture on week 1, 1 on week 4, and 1 on week 8 - 3 pics total\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eRemember to take your pictures right before shaving while preparing for your treatment session to reflect accurate results.\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eMake sure to take your pictures, in the same setting and camera angle with the same body parts and lighting to show the best comparison.\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eUnfortunately, we wonât be able to accept any submissions that are unclear or blurred\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eWe reserve the right to reject any submissions at our own discretion\u003c\/p\u003e\u003cp\u003eWe can only accept 1 submission per customer\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eThis offer is available worldwide\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eSubmissions are only accepted when submitted to this form.\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cem\u003e*Please note purchases made with your gift card are non-refundable and cannot be exchanged or returned. Warranty claims will be honored\u003c\/em\u003e\u003c\/p\u003e","columnWidth":100},{"id":"text","type":"text","label":"Your Name","placeholder":"Your Name","description":"","limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"","columnWidth":50},{"id":"text-2","type":"text","label":"Order #","placeholder":"Order Number","description":"","limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"","columnWidth":50},{"id":"email","type":"email","label":"Email","placeholder":"Email","description":"","limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"","columnWidth":50},{"id":"file","type":"file","label":"Week 1 Pictures","button-text":"Choose file","placeholder":"","allowed-multiple":true,"allowed-extensions":["jpg","jpeg","png"],"description":"","uploadPending":"File is uploading. Please wait a second...","uploadSuccess":"File uploaded successfully","hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"","columnWidth":50},{"id":"file-2","type":"file","label":"Week 4 Pictures","button-text":"Choose file","placeholder":"","allowed-multiple":true,"allowed-extensions":["jpg","jpeg","png"],"description":"","uploadPending":"File is uploading. Please wait a second...","uploadSuccess":"File uploaded successfully","hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"","columnWidth":50},{"id":"file-3","type":"file","label":"Week 8 Pictures","button-text":"Choose file","placeholder":"","allowed-multiple":true,"allowed-extensions":["jpg","jpeg","png"],"description":"","uploadPending":"File is uploading. Please wait a second...","uploadSuccess":"File uploaded successfully","hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"","columnWidth":50},{"id":"text-3","type":"text","label":"Tell us what you think!","placeholder":"Review your purchase","description":"","limitCharacters":false,"characters":100,"hideLabel":false,"keepPositionLabel":false,"required":true,"ifHideLabel":false,"inputIcon":"\u003csvg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"laugh\" class=\"svg-inline--fa fa-laugh fa-w-16\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 496 512\"\u003e\u003cpath fill=\"currentColor\" d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 12
4346-142.9 126z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e","columnWidth":100},{"id":"acceptTerms","type":"acceptTerms","label":"By checking this box, I hereby agree and consent RoseSkinCo to use my before\/after images without limitations or expiration","rawOption":"Yes","defaultSelected":false,"description":"","required":false,"columnWidth":100},{"id":"html","type":"html","html":"\u003cstyle\u003e\n\n.globo-app-extension {\n margin-top: 150px;\n \n padding: 0 24px;\n\n}\n\n\u003c\/style\u003e","columnWidth":100}],"add-elements":null,"footer":{"description":"","previousText":"Previous","nextText":"Next","submitText":"Submit","resetButton":false,"resetButtonText":"Reset","submitFullWidth":false,"submitAlignment":"left"},"mail":{"admin":null,"customer":{"enable":true,"emailType":"elementEmail","selectEmail":"onlyEmail","emailId":"email","emailConditional":false,"note":"You can use variables which will help you create a dynamic content","subject":"Thanks for submitting","content":"\u003ctable class=\"header row\" style=\"width: 100%; border-spacing: 0; border-collapse: collapse; margin: 40px 0 20px;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"header__cell\" style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;\"\u003e\u003ccenter\u003e\n\u003ctable class=\"container\" style=\"width: 559px; text-align: left; border-spacing: 0px; border-collapse: collapse; margin: 0px auto;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; width: 544.219px;\"\u003e\n\u003ctable class=\"row\" style=\"width: 100%; border-spacing: 0; border-collapse: collapse;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"shop-name__cell\" style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;\"\u003e\n\u003ch1 class=\"shop-name__text\" style=\"font-weight: normal; font-size: 30px; color: #333; margin: 0;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0084\/8756\/7423\/files\/[email protected]?v=1640869343\" alt=\"\" width=\"193\" height=\"26\" \/\u003e\u003c\/h1\u003e\n\u003c\/td\u003e\n\u003ctd class=\"order-number__cell\" style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; font-size: 14px; color: #999;\" align=\"right\"\u003e\u0026nbsp;\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/center\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ctable class=\"row content\" style=\"width: 100%; border-spacing: 0; border-collapse: collapse;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"content__cell\" style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; padding-bottom: 40px;\"\u003e\u003ccenter\u003e\n\u003ctable class=\"container\" style=\"width: 560px; text-align: left; border-spacing: 0; border-collapse: collapse; margin: 0 auto;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;\"\u003e\n\u003ch2 class=\"quote-heading\" style=\"font-weight: normal; font-size: 24px; margin: 0 0 10px;\"\u003eThanks for your submission\u003c\/h2\u003e\n\u003cp class=\"quote-heading-message\"\u003eHi, we are\u0026nbsp;reviewing\u0026nbsp;your submission. We will get back to you shortly with your gift card!\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ctable class=\"row section\" style=\"width: 100%; border-spacing: 0; border-collapse: collapse; border-top-width: 1px; border-top-color: #e5e5e5; border-top-style: solid;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"section__cell\" style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; padding: 40px 0;\"\u003e\u003ccenter\u003e\n\u003ctable class=\"container\" style=\"width: 560px; text-align: left; border-spacing: 0; border-collapse: collapse; margin: 0 auto;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;\"\u003e\n\u003ch3 class=\"more-information\"\u003eMore information\u003c\/h3\u003e\n\u003cp\u003e{{data}}\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/center\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ctable class=\"row footer\" style=\"width: 100%; border-spacing: 0; border-collapse: collapse; border-top-width: 1px; border-top-color: #e5e5e5; border-top-style: solid;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd class=\"footer__cell\" style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; padding: 35px 0;\"\u003e\u003ccenter\u003e\n\u003ctable class=\"container\" style=\"width: 560px; text-align: left; border-spacing: 0; border-collapse: collapse; margin: 0 auto;\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;\"\u003e\n\u003cp class=\"contact\" style=\"text-align: center;\"\u003eIf you have any questions, reply to this email or contact us at\u0026nbsp;\u003cspan style=\"text-align: left;\"\u003e\u0026nbsp;\u003c\/span\u003e\u003ca class=\"o-link o-link-email\" style=\"text-align: left; box-sizing: inherit; outline: 0px; color: #0093ee; transition: color 0.2s linear 0s; cursor: pointer;
434 -webkit-user-drag: none; word-break: break-all; font-family: 'Crisp Proxima Nova', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px;\" href=\"mailto:[email protected]\"\[email protected]\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"font-family: -apple-system, BlinkMacSystemFont, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;\"\u003e\n\u003cp class=\"disclaimer__subtext\" style=\"color: #999; line-height: 150%; font-size: 14px; margin: 0; text-align: center;\"\u003eClick \u003ca href=\"[UNSUBSCRIBEURL]\"\u003ehere\u003c\/a\u003e to unsubscribe\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/center\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/center\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e","islimitWidth":false,"maxWidth":"600"}},"appearance":{"layout":"default","width":600,"style":"flat","mainColor":"rgba(255,126,141,1)","headingColor":"rgba(255,126,141,1)","labelColor":"rgba(31,29,36,1)","descriptionColor":"rgba(31,29,36,1)","optionColor":"rgba(31,29,36,1)","paragraphColor":"#000","paragraphBackground":"rgba(255,255,255,0)","background":"none","backgroundColor":"#FFF","backgroundImage":"","backgroundImageAlignment":"middle","floatingIcon":"\u003csvg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"envelope\" class=\"svg-inline--fa fa-envelope fa-w-16\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"\u003e\u003cpath fill=\"currentColor\" d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e","floatingText":"","displayOnAllPage":false,"position":"bottom right","formType":"normalForm","newTemplate":false},"reCaptcha":{"enable":false,"note":"Please make sure that you have set Google reCaptcha v2 Site key and Secret key in \u003ca href=\"\/admin\/settings\"\u003eSettings\u003c\/a\u003e"},"errorMessage":{"required":"Please fill in field","invalid":"Invalid","invalidName":"Invalid name","invalidEmail":"Invalid email","invalidURL":"Invalid URL","invalidPhone":"Invalid phone","invalidNumber":"Invalid number","invalidPassword":"Invalid password","confirmPasswordNotMatch":"Confirmed password doesn't match","customerAlreadyExists":"Customer already exists","fileSizeLimit":"File size limit exceeded","fileNotAllowed":"File extension not allowed","requiredCaptcha":"Please, enter the captcha","requiredProducts":"Please select product","limitQuantity":"The number of products left in stock has been exceeded","shopifyInvalidPhone":"phone - Enter a valid phone number to use this delivery method","shopifyPhoneHasAlready":"phone - Phone has already been taken","shopifyInvalidProvice":"addresses.province - is not valid","otherError":"Something went wrong, please try again"}
434,"afterSubmit":{"action":"clearForm","message":"\u003ch4\u003eThanks for getting in touch!\u0026nbsp;\u003c\/h4\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eWe appreciate you contacting us. One of our colleagues will get back in touch with you soon!\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eHave a great day!\u003c\/p\u003e","redirectUrl":"","enableGa":false,"gaEventCategory":"Form Builder by Globo","gaEventAction":"Submit","gaEventLabel":"Contact us form","enableFpx":false,"fpxTrackerName":""},"integration":{"shopify":{"createAccount":false,"ifExist":"returnError","showMessage":false,"messageRedirectToLogin":"You already registered. Click \u003ca href=\"\/account\/login\"\u003ehere\u003c\/a\u003e to login","sendEmailInvite":false,"acceptsMarketing":false,"overwriteCustomerExisting":true,"note":"Learn \u003ca href=\"https:\/\/www.google.com\/\" target=\"_blank\"\u003ehow to connect\u003c\/a\u003e form elements to Shopify customer data","integrationElements":{"text":"additional.your_name","text-2":"additional.order__2","email":"email","file":"additional.week_1_pictures","file-2":"additional.week_4_pictures_2","file-3":"additional.week_8_pictures_3","text-3":"additional.text","acceptTerms":"additional.by_checking_this_box_i_hereby_agree_and_consent_roseskinco_to_use_my_beforeafter_images_without_limitations_or_expiration"}},"mailChimp":{"loading":"","enable":false,"list":false,"note":"Learn \u003ca href=\"https:\/\/www.google.com\/\" target=\"_blank\"\u003ehow to connect\u003c\/a\u003e form elements to Mailchimp subscriber data","integrationElements":[]},"klaviyo":{"loading":"","enable":false,"list":false,"note":"Learn \u003ca href=\"https:\/\/www.google.com\/\" target=\"_blank\"\u003ehow to connect\u003c\/a\u003e form elements to Klaviyo subscriber data","integrationElements":{"klaviyoemail":"","first_name":{"val":"","option":""},"last_name":{"val":"","option":""},"title":{"val":"","option":""},"organization":{"val":"","option":""},"phone_number":{"val":"","option":""},"address1":{"val":"","option":""},"address2":{"val":"","option":""},"city":{"val":"","option":""},"region":{"val":"","option":""},"zip":{"val":"","option":""},"country":{"val":"","option":""},"latitude":{"val":"","option":""},"longitude":{"val":"","option":""}}},"zapier":{"enable":false,"webhookUrl":""},"hubspot":{"loading":"","enable":false,"list":false,"integrationElements":[]},"omnisend":{"loading":"","enable":false,"integrationElements":{"email":{"val":"","option":""},"firstName":{"val":"","option":""},"lastName":{"val":"","option":""},"status":{"val":"","option":""},"country":{"val":"","option":""},"state":{"val":"","option":""},"city":{"val":"","option":""},"phone":{"val":"","option":""},"postalCode":{"val":"","option":""},"gender":{"val":"","option":""},"birthdate":{"val":"","option":""},"tags":{"val":"","option":""},"customProperties1":{"val":"","option":""},"customProperties2":{"val":"","option":""},"customProperties3":{"val":"","option":""},"customProperties4":{"val":"","option":""},"customProperties5":{"val":"","option":""}}},"getresponse":{"loading":"","enable":false,"list":false,"integrationElements":{"email":{"val":"","option":""},"name":{"val":"","option":""},"gender":{"val":"","option":""},"birthdate":{"val":"","option":""},"company":{"val":"","option":""},"city":{"val":"","option":""},"state":{"val":"","option":""},"street":{"val":"","option":""},"postal_code":{"val":"","option":""},"country":{"val":"","option":""},"phone":{"val":"","option":""},"fax":{"val":"","option":""},"comment":{"val":"","option":""},"ref":{"val":"","option":""},"url":{"val":"","option":""},"tags":{"val":"","option":""},"dayOfCycle":{"val":"","option":""},"scoring":{"val":"","option":""}}},"sendinblue":{"loading":"","enable":false,"list":false,"integrationElements":[]},"campaignmonitor":{"loading":"","enable":false,"list":false,"integrationElements":[]},"activecampaign":{"loading":"","enable":false,"list":[],"integrationElements":[]},"googleCalendar":{"loading":"","enable":false,"list":"","integrationElements":{"starttime":"","endtime":"","summary":"","location":"","description":"","attendees":""}},"googleSheet":{"loading":"","enable":false,"spreadsheetdestination":"","listFields":["text-3","html"],"submissionIp":false}},"accountPage":{"showAccountDetail":false,"registrationPage":false,"editAccountPage":false,"header":"Header","active":false,"title":"Account details","headerDescription":"Fill out the form to change account information","afterUpdate":"Message after update","message":"\u
434003ch5\u003eAccount edited successfully!\u003c\/h5\u003e","footer":"Footer","updateText":"Update","footerDescription":""},"publish":{"requiredLogin":false,"requiredLoginMessage":"Please \u003ca href=\"\/account\/login\" title=\"login\"\u003elogin\u003c\/a\u003e to continue","publishType":"embedCode","embedCode":"\u003cdiv class=\"globo-formbuilder\" data-id=\"NzA3MjM=\"\u003e\u003c\/div\u003e","shortCode":"{formbuilder:NzA3MjM=}","popup":"\u003cbutton class=\"globo-formbuilder-open\" data-id=\"NzA3MjM=\"\u003eOpen form\u003c\/button\u003e","lightbox":"\u003cdiv class=\"globo-form-publish-modal lightbox hidden\" data-id=\"NzA3MjM=\"\u003e\u003cdiv class=\"globo-form-modal-content\"\u003e\u003cdiv class=\"globo-formbuilder\" data-id=\"NzA3MjM=\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e","enableAddShortCode":true,"selectPage":"86061383861","selectPositionOnPage":"top","selectTime":"forever","setCookie":"1","setCookieHours":"1","setCookieWeeks":"1"},"isStepByStepForm":false,"html":"\n\u003cdiv class=\"globo-form default-form globo-form-id-70723\"\u003e\n\u003cstyle\u003e\n.globo-form-id-70723 .globo-form-app{\n max-width: 600px;\n width: -webkit-fill-available;\n \n \n}\n\n.globo-form-id-70723 .globo-form-app .globo-heading{\n color: rgba(255,126,141,1)\n}\n.globo-form-id-70723 .globo-form-app .globo-description,\n.globo-form-id-70723 .globo-form-app .header .globo-description{\n color: rgba(31,29,36,1)\n}\n.globo-form-id-70723 .globo-form-app .globo-label,\n.globo-form-id-70723 .globo-form-app .globo-form-control label.globo-label,\n.globo-form-id-70723 .globo-form-app .globo-form-control label.globo-label span.label-content{\n color: rgba(31,29,36,1);\n text-align: left !important;\n}\n.globo-form-id-70723 .globo-form-app .globo-label.globo-position-label{\n height: 20px !important;\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .help-text.globo-description{\n color: rgba(31,29,36,1)\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .checkbox-wrapper .globo-option,\n.globo-form-id-70723 .globo-form-app .globo-form-control .radio-wrapper .globo-option\n{\n color: rgba(31,29,36,1)\n}\n.globo-form-id-70723 .globo-form-app .footer{\n text-align:left;\n}\n.globo-form-id-70723 .globo-form-app .footer button{\n border:1px solid rgba(255,126,141,1);\n \n}\n.globo-form-id-70723 .globo-form-app .footer button.submit,\n.globo-form-id-70723 .globo-form-app .footer button.checkout,\n.globo-form-id-70723 .globo-form-app .footer button.action.loading .spinner{\n background-color: rgba(255,126,141,1);\n color : #000000;\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .star-rating\u003efieldset:not(:checked)\u003elabel:before {\n content: url('data:image\/svg+xml; utf8, \u003csvg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"star\" class=\"svg-inline--fa fa-star fa-w-18\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"\u003e\u003cpath fill=\"rgba(255,126,141,1)\" d=\"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e');\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .star-rating\u003efieldset\u003einput:checked ~ label:before {\n content: url('data:image\/svg+xml; utf8, \u003csvg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"star\" class=\"svg-inline--fa fa-star fa-w-18\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"\u003e\u003cpath fill=\"rgba(255,126,141,1)\" d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e');\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .star-rating\u003efieldset:not(:checked)\u003elabel:hover:before,\n.globo-form-id-70723 .globo-form-app .globo-form-control .star-rating\u003efieldset:not(:checked)\u003elabel:hover ~ label:before{\n content : url('data:image\/svg+xml;
434 utf8, \u003csvg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"star\" class=\"svg-inline--fa fa-star fa-w-18\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"\u003e\u003cpath fill=\"rgba(255,126,141,1)\" d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e')\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .radio-wrapper .radio-input:checked ~ .radio-label:after {\n background: rgba(255,126,141,1);\n background: radial-gradient(rgba(255,126,141,1) 40%, #fff 45%);\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .checkbox-wrapper .checkbox-input:checked ~ .checkbox-label:before {\n border-color: rgba(255,126,141,1);\n box-shadow: 0 4px 6px rgba(50,50,93,0.11), 0 1px 3px rgba(0,0,0,0.08);\n background-color: rgba(255,126,141,1);\n}\n.globo-form-id-70723 .globo-form-app .step.-completed .step__number,\n.globo-form-id-70723 .globo-form-app .line.-progress,\n.globo-form-id-70723 .globo-form-app .line.-start{\n background-color: rgba(255,126,141,1);\n}\n.globo-form-id-70723 .globo-form-app .checkmark__check,\n.globo-form-id-70723 .globo-form-app .checkmark__circle{\n stroke: rgba(255,126,141,1);\n}\n.globo-form-id-70723 .floating-button{\n background-color: rgba(255,126,141,1);\n}\n.globo-form-id-70723 .globo-form-app .globo-form-control .checkbox-wrapper .checkbox-input ~ .checkbox-label:before,\n.globo-form-app .globo-form-control .radio-wrapper .radio-input ~ .radio-label:after{\n border-color : rgba(255,126,141,1);\n}\n.globo-form-id-70723 .flatpickr-day.selected, \n.globo-form-id-70723 .flatpickr-day.startRange, \n.globo-form-id-70723 .flatpickr-day.endRange, \n.globo-form-id-70723 .flatpickr-day.selected.inRange, \n.globo-form-id-70723 .flatpickr-day.startRange.inRange, \n.globo-form-id-70723 .flatpickr-day.endRange.inRange, \n.globo-form-id-70723 .flatpickr-day.selected:focus, \n.globo-form-id-70723 .flatpickr-day.startRange:focus, \n.globo-form-id-70723 .flatpickr-day.endRange:focus, \n.globo-form-id-70723 .flatpickr-day.selected:hover, \n.globo-form-id-70723 .flatpickr-day.startRange:hover, \n.globo-form-id-70723 .flatpickr-day.endRange:hover, \n.globo-form-id-70723 .flatpickr-day.selected.prevMonthDay, \n.globo-form-id-70723 .flatpickr-day.startRange.prevMonthDay, \n.globo-form-id-70723 .flatpickr-day.endRange.prevMonthDay, \n.globo-form-id-70723 .flatpickr-day.selected.nextMonthDay, \n.globo-form-id-70723 .flatpickr-day.startRange.nextMonthDay, \n.globo-form-id-70723 .flatpickr-day.endRange.nextMonthDay {\n background: rgba(255,126,141,1);\n border-color: rgba(255,126,141,1);\n}\n.globo-form-id-70723 .globo-paragraph,\n.globo-form-id-70723 .globo-paragraph * {\n background: rgba(255,255,255,0) !important;\n color: #000 !important;\n width: 100%!important;\n}\n\u003c\/style\u003e\n\u003cdiv class=\"globo-form-app default-layout\"\u003e\n \u003cdiv class=\"header dismiss hidden\" onclick=\"Globo.FormBuilder.closeModalForm(this)\"\u003e\n \u003csvg viewBox=\"0 0 20 20\" class=\"\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M11.414 10l4.293-4.293a.999.999 0 1 0-1.414-1.414L10 8.586 5.707 4.293a.999.999 0 1 0-1.414 1.414L8.586 10l-4.293 4.293a.999.999 0 1 0 1.414 1.414L10 11.414l4.293 4.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z\" fill-rule=\"evenodd\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n \u003c\/div\u003e\n \u003cform class=\"g-container\" novalidate action=\"\/api\/front\/form\/70723\/send\" method=\"POST\" enctype=\"multipart\/form-data\" data-id=70723\u003e\n \n \n \u003cdiv class=\"header\"\u003e\n \u003ch3 class=\"title globo-heading\"\u003eSubmit your before \u0026 after results\u003c\/h3\u003e\n \n \u003cdiv class=\"description globo-description\"\u003e\u003cp\u003e\u003cem\u003eEarn a free $100 USD gift card when you upload your silky smooth skin - guaranteed!\u003c\/em\u003e\u003c\/p\u003e\u003c\/div\u003e\n \n \u003c\/div\u003e\n \n \n \n \u003cdiv class=\"content flex-wrap block-container\" data-id=70723\u003e\n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-1-column\" \u003e\n \u003cdiv class=\"globo-paragraph\"\u003e\u003cp\u003eThe minimum requirement to be eligible is: 1 picture on week 1, 1 on week 4, and 1 on week 8 - 3 pics total\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eRemember to take your pictures right before shaving while preparing for your treatment session to reflect accurate results.\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eMake sure to take your pictures, in the same setting and camera angle with the same body parts and lighting to show the best comparison.\u
434003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eUnfortunately, we wonât be able to accept any submissions that are unclear or blurred\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eWe reserve the right to reject any submissions at our own discretion\u003c\/p\u003e\u003cp\u003eWe can only accept 1 submission per customer\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eThis offer is available worldwide\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eSubmissions are only accepted when submitted to this form.\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cem\u003e*Please note purchases made with your gift card are non-refundable and cannot be exchanged or returned. Warranty claims will be honored\u003c\/em\u003e\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-2-column\" \u003e\n \u003clabel for=\"70723-text\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Your Name\"\u003eYour Name\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \n \u003cinput type=\"text\" data-type=\"text\" class=\"flat-input\" id=\"70723-text\" name=\"text\" placeholder=\"Your Name\" presence \u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-2-column\" \u003e\n \u003clabel for=\"70723-text-2\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Order #\"\u003eOrder #\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \n \u003cinput type=\"text\" data-type=\"text\" class=\"flat-input\" id=\"70723-text-2\" name=\"text-2\" placeholder=\"Order Number\" presence \u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-2-column\" \u003e\n \u003clabel for=\"70723-email\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Email\"\u003eEmail\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \n \u003cinput type=\"text\" data-type=\"email\" class=\"flat-input\" id=\"70723-email\" name=\"email\" placeholder=\"Email\" presence \u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-2-column\" \u003e\n \u003clabel for=\"70723-file\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Week 1 Pictures\"\u003eWeek 1 Pictures\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \n \u003cinput type=\"file\" data-type=\"file\" class=\"flat-input\" id=\"70723-file\" multiple name=\"file[]\" \n placeholder=\"\" presence data-allowed-extensions=\"jpg,jpeg,png\"\u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-2-column\" \u003e\n \u003clabel for=\"70723-file-2\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Week 4 Pictures\"\u003eWeek 4 Pictures\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \n \u003cinput type=\"file\" data-type=\"file\" class=\"flat-input\" id=\"70723-file-2\" multiple name=\"file-2[]\" \n placeholder=\"\" presence data-allowed-extensions=\"jpg,jpeg,png\"\u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-2-column\" \u003e\n \u003clabel for=\"70723-file-3\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Week 8 Pictures\"\u003eWeek 8 Pictures\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \n \u003cinput type=\"file\" data-type=\"file\" class=\"flat-input\" id=\"70723-file-3\" multiple name=\"file-3[]\" \n placeholder=\"\" presence data-allowed-extensions=\"jpg,jpeg,png\"\u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-1-column\" \u003e\n \u003clabel for=\"70723-text-3\" class=\"flat-label globo-label \"\u003e\u003cspan class=\"label-content\" data-label=\"Tell us what you think!\"\u003eTell us what you think!\u003c\/span\u003e\u003cspan class=\"text-danger text-smaller\"\u003e *\u003c\/span\u003e\u003c\/label\u003e\n \u003cdiv class=\"globo-form-input\"\u003e\n \u003cdiv class=\"globo-form-icon\"\u003e\u003csvg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"laugh\" class=\"svg-inline--fa fa-laugh fa-w-16\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 496 512\"\u003e\u003cpath fill=\"currentColor\" d=\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 12
4346-142.9 126z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/div\u003e\n \u003cinput type=\"text\" data-type=\"text\" class=\"flat-input\" id=\"70723-text-3\" name=\"text-3\" placeholder=\"Review your purchase\" presence \u003e\n \u003c\/div\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-1-column\" data-default-value=\"false\"\u003e\n \u003cdiv class=\"checkbox-wrapper\"\u003e\n \u003cinput class=\"checkbox-input\" id=\"70723-acceptTerms\" type=\"checkbox\" data-type=\"acceptTerms\" name=\"acceptTerms[]\" value=\"Yes\" \u003e\n \u003clabel class=\"checkbox-label globo-option flat-label globo-label\" for=\"70723-acceptTerms\"\u003e\u003cspan class=\"label-content\" data-label=\"By checking this box, I hereby agree and consent RoseSkinCo to use my before\/after images without limitations or expiration\"\u003eBy checking this box, I hereby agree and consent RoseSkinCo to use my before\/after images without limitations or expiration\u003c\/span\u003e\u003c\/label\u003e\n \n \u003csmall class=\"messages\"\u003e\u003c\/small\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"globo-form-control layout-1-column\" \u003e\n \u003cstyle\u003e\n\n.globo-app-extension {\n margin-top: 150px;\n \n padding: 0 24px;\n\n}\n\n\u003c\/style\u003e\n\u003c\/div\u003e\n\n\n \n \n \n \u003c\/div\u003e\n \n \u003cdiv class=\"message error\" data-other-error=\"Something went wrong, please try again\"\u003e\n \u003cdiv class=\"content\"\u003e\u003c\/div\u003e\n \u003cdiv class=\"dismiss\" onclick=\"Globo.FormBuilder.dismiss(this)\"\u003e\n \u003csvg viewBox=\"0 0 20 20\" class=\"\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M11.414 10l4.293-4.293a.999.999 0 1 0-1.414-1.414L10 8.586 5.707 4.293a.999.999 0 1 0-1.414 1.414L8.586 10l-4.293 4.293a.999.999 0 1 0 1.414 1.414L10 11.414l4.293 4.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z\" fill-rule=\"evenodd\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n \u003c\/div\u003e\n \u003c\/div\u003e\n \u003cdiv class=\"message warning\" data-other-error=\"Something went wrong, please try again\"\u003e\n \u003cdiv class=\"content\"\u003e\u003c\/div\u003e\n \u003cdiv class=\"dismiss\" onclick=\"Globo.FormBuilder.dismiss(this)\"\u003e\n \u003csvg viewBox=\"0 0 20 20\" class=\"\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M11.414 10l4.293-4.293a.999.999 0 1 0-1.414-1.414L10 8.586 5.707 4.293a.999.999 0 1 0-1.414 1.414L8.586 10l-4.293 4.293a.999.999 0 1 0 1.414 1.414L10 11.414l4.293 4.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z\" fill-rule=\"evenodd\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n \u003c\/div\u003e\n \u003c\/div\u003e\n \n \n \u003cdiv class=\"message success\"\u003e\n \u003cdiv class=\"content\"\u003e\u003ch4\u003eThanks for getting in touch!\u0026nbsp;\u003c\/h4\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eWe appreciate you contacting us. One of our colleagues will get back in touch with you soon!\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eHave a great day!\u003c\/p\u003e\u003c\/div\u003e\n \u003cdiv class=\"dismiss\" onclick=\"Globo.FormBuilder.dismiss(this)\"\u003e\n \u003csvg viewBox=\"0 0 20 20\" class=\"\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M11.414 10l4.293-4.293a.999.999 0 1 0-1.414-1.414L10 8.586 5.707 4.293a.999.999 0 1 0-1.414 1.414L8.586 10l-4.293 4.293a.999.999 0 1 0 1.414 1.414L10 11.414l4.293 4.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z\" fill-rule=\"evenodd\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n \u003c\/div\u003e\n \u003c\/div\u003e\n \n \n \u003cdiv class=\"footer\"\u003e\n \n \n \n \n \u003cbutton class=\"action submit flat-button\"\u003e\u003cspan class=\"spinner\"\u003e\u003c\/span\u003e\n \n Submit\n \n \u003c\/button\u003e\n \n \n \u003c\/div\u003e\n \n \u003cinput type=\"hidden\" value=\"\" name=\"customer[id]\"\u003e\n \u003cinput type=\"hidden\" value=\"\" name=\"customer[email]\"\u003e\n \u003cinput type=\"hidden\" value=\"\" name=\"customer[name]\"\u003e\n \u003cinput type=\"hidden\" value=\"\" name=\"page[title]\"\u003e\n \u003cinput type=\"hidden\" value=\"\" name=\"page[href]\"\u003e\n \u003cinput type=\"hidden\" value=\"\" name=\"_keyLabel\"\u003e\n \u003c\/form\u003e\n \n \u003cdiv class=\"message success\"\u003e\n \u003cdiv class=\"content\"\u003e\u003ch4\u003eThanks for getting in touch!\u0026nbsp;\u003c\/h4\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eWe appreciate you contacting us. One of our colleagues will get back in touch with you soon!\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eHave a great day!\u003c\/p\u003e\u003c\/div\u003e\n \u003cdiv class=\"dismiss\" onclick=\"Globo.FormBuilder.dismiss(this)\"\u003e\n \u003csvg viewBox=\"0 0 20 20\" class=\"\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M11.414 10l4.293-4.293a.999.999 0 1 0-1.414-1.414L10 8.586 5.707 4.293a.999.999 0 1 0-1.414 1.414L8.586 10l-4.293 4.293a.999.999 0 1 0 1.414 1.414L10 11.414l4.293 4.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z\" fill-rule=\"evenodd\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n \u003c\/div\u003e\n \u003c\/div\u003e\n \n\u003c\/div\u003e\n\n\u003c\/div\u003e\n"}}[70723]; 435 436 437 438 window.Globo.FormBuilder.url = window.Globo.FormBuilder.shop.url; 439 window.Globo.FormBuilder.CDN_URL = window.Globo.FormBuilder.shop.CDN_URL ?? window.Globo.FormBuilder.shop.url; 440 window.Globo.FormBuilder.themeOs20 = true; 441 window.Globo.FormBuilder.searchProductByJson = true; 442 443 444 window.Globo.FormBuilder.__webpack_public_path_2__ = "https://cdn.shopify.com/extensions/01a0fc0d-2150-7cf1-86f8-1d048d2b8454/powerful-form-builder
444-360/assets/";Globo.FormBuilder.page = { 445 href : window.location.href, 446 type: "search" 447 }; 448 Globo.FormBuilder.page.title = document.title 449 450 451 if(window.AVADA_SPEED_WHITELIST){ 452 const pfbs_w = new RegExp("powerful-form-builder", 'i') 453 if(Array.isArray(window.AVADA_SPEED_WHITELIST)){ 454 window.AVADA_SPEED_WHITELIST.push(pfbs_w) 455 }else{ 456 window.AVADA_SPEED_WHITELIST = [pfbs_w] 457 } 458 } 459 460 Globo.FormBuilder.shop.configuration = Globo.FormBuilder.shop.configuration || {}; 461 Globo.FormBuilder.shop.configuration.money_format = "${{ amount_no_decimals }}"; 462</script>
vendor: 1 bytes, line 462
462
463<script src="https://cdn.shopify.com/extensions/01a0fc0d-2150-7cf1-86f8-1d048d2b8454/powerful-form-builder-360/assets/globo.formbuilder.index.js" defer="defer" data-cookieconsent="ignore"></script>
463 464 465 466 467 468<!-- END app block -->
468<script src="https://cdn.shopify.com/extensions/01a0f039-5f02-72aa-9621-fb7a06d5fa1e/df574a3/assets/embed.js" type="text/javascript" defer="defer"></script>
468 469<meta property="og:image" content="https://cdn.shopify.com/s/files/1/0084/8756/7423/files/Wordmark-SocialLogo-Black-01_1.png?v=1782591880" /> 470<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/0084/8756/7423/files/Wordmark-SocialLogo-Black-01_1.png?v=1782591880" /> 471<meta property="og:image:width" content="2000" /> 472<meta property="og:image:height" content="1000" /> 473<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
474<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: 8487567423,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "search"};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 474
474
475<script> 476 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 477</script>
vendor: 1 bytes, line 477
477
478<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}
478).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: 8487567423,storefrontBaseUrl: "https://roseskinco.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://roseskinco.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"3244753077","configuration":"{\"pixelCode\":\"D2IFFA3C77U4I5MF3EQG\"}","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"]}
478,"dataSharingState":"unrestricted"},{"id":"3200549045","configuration":"{\"ti\":\"295025688\",\"endpoint\":\"https:\/\/bat.bing.com\/action\/0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"5ee93563fe31b11d2d65e2f09a5229dc","type":"APP","apiClientId":2997493,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2927100085","configuration":"{\"accountID\":\"facct_01k9sw1spfddf1fkegxe79s0gs\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b512ad51efb2fbd80a0b3630d2f185b8","type":"APP","apiClientId":61620781057,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2886107317","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\",\\\"GT-5TQXS53W\\\",\\\"AW-625841620\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/-fVjCMajn7sbEM6zheQC\\\",\\\"AW-625841620\\\/0qbCCI-VpLsbENSrtqoC\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/1_HWCNKjn7sbEM6zheQC\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-60QTEZVWSR\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/Tx0VCM-jn7sbEM6zheQC\\\",\\\"MC-TSTSDD7W7N\\\",\\\"AW-625841620\\\/7lpECJeAprsbENSrtqoC\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-60QTEZVWSR\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/Z00JCMOjn7sbEM6zheQC\\\",\\\"MC-TSTSDD7W7N\\\",\\\"AW-625841620\\\/_MEnCL6aorsbENSrtqoC\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/SzmjCMyjn7sbEM6zheQC\\\",\\\"MC-TSTSDD7W7N\\\",\\\"AW-625841620\\\/Wl0FCJqRrLsbENSrtqoC\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-60QTEZVWSR\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/un5XCNWjn7sbEM6zheQC\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-60QTEZVWSR\\\",\\\"AW-746674638\\\/Bj15CMmjn7sbEM6zheQC\\\",\\\"AW-625841620\\\/etn-CLf-q7sbENSrtqoC\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-60QTEZVWSR\\\"}],\\\"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":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"2867822773","configuration":"{\"projectId\":\"f47dpo97zz\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2865004725","configuration":"{\"tagID\":\"2613317396436\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"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"]}
478,"dataSharingState":"unrestricted"},{"id":"2864906421","configuration":"{\"accountID\":\"roseskinco.myshopify.com\",\"devRefreshedAt\":\"2025-10-31T19:12:16.515Z\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"bcc23a17366556cd2d14935efb84046d","type":"APP","apiClientId":91904704513,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2570125493","configuration":"{\"pixelId\":\"877f014f-cdb5-4b45-88a6-5af7f4de8416\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c119f01612c13b62ab52809eb08154bb","type":"APP","apiClientId":2556259,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"835420341","configuration":"{\"myshopifyDomain\":\"roseskinco.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"23b97d18e2aa74363140dc29c9284e87","type":"APP","apiClientId":2775569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"8880309","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"WordSeed"},{"id":"124453045","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Retention.com V2 pixel"},{"id":"134480053","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"5","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"UET Tag"},{"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":"RoseSkinCo.","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"roseskinco.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/roseskinco.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://roseskinco.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"193204912309","themePublished":"true","eventMetadataId":"fccf172c-dae6-4143-b88a-07aa31fc3227","pageType":"searchresults","shopId":"8487567423","storefrontBaseUrl":"https:\/\/roseskinco.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"search_submitted\",{\"searchResult\":{\"query\":\"\",\"productVariants\":[]}}]]"});})();</script>
478<script> 479 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 480 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 481 window.ShopifyAnalytics.meta.currency = 'USD'; 482 var meta = {"products":[],"page":{"pageType":"searchresults","requestId":"1429c03c-d791-4106-826a-1dbc4bf08208-1791062382"}}; 483 for (var attr in meta) { 484 window.ShopifyAnalytics.meta[attr] = meta[attr]; 485 } 486</script>
vendor: 1 bytes, line 486
486
487<script class="analytics"> 488 (function () { 489 var customDocumentWrite = function(content) { 490 var jquery = null; 491 492 if (window.jQuery) { 493 jquery = window.jQuery; 494 } else if (window.Checkout && window.Checkout.$) { 495 jquery = window.Checkout.$; 496 } 497 498 if (jquery) { 499 jquery('body').append(content); 500 } 501 }; 502 503 var hasLoggedConversion = function(token) { 504 if (token) { 505 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 506 } 507 return false; 508 } 509 510 var setCookieIfConversion = function(token) { 511 if (token) { 512 var twoMonthsFromNow = new Date(Date.now()); 513 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 514 515 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 516 } 517 } 518 519 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 520 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 521 if (trekkie.integrations) { 522 return; 523 } 524 trekkie.methods = [ 525 'identify', 526 'page', 527 'ready', 528 'track', 529 'trackForm', 530 'trackLink' 531 ]; 532 trekkie.factory = function(method) { 533 return function() { 534 var args = Array.prototype.slice.call(arguments); 535 args.unshift(method); 536 trekkie.push(args); 537 if (method == 'track' || method == 'page') { 538 var pageUrl; 539 try { 540 pageUrl = window.location.href; 541 } catch (e) {} 542 var pageReferrer; 543 try { 544 pageReferrer = document.referrer; 545 } catch (e) {} 546 try { 547 if (window.__TREKKIE_SHIM_QUEUE == null) { 548 window.__TREKKIE_SHIM_QUEUE = []; 549 } 550 window.__TREKKIE_SHIM_QUEUE.push({ 551 from: 'trekkie-stub', 552 method: method, 553 args: args.slice(1), 554 pageContext: { 555 url: pageUrl, 556 referrer: pageReferrer 557 } 558 }); 559 } catch (e) { 560 // no-op 561 } 562 } 563 return trekkie; 564 }; 565 }; 566 for (var i = 0; i < trekkie.methods.length; i++) { 567 var key = trekkie.methods[i]; 568 trekkie[key] = trekkie.factory(key); 569 } 570 trekkie.load = function(config) { 571 trekkie.config = config || {}; 572 trekkie.config.initialDocumentCookie = document.cookie; 573 var first = document.getElementsByTagName('script')[0]; 574var script = document.createElement('script'); 575script.type = 'text/javascript'; 576script.onerror = function(e) { 577 var scriptFallback = document.createElement('script'); 578 scriptFallback.type = 'text/javascript'; 579 scriptFallback.onerror = function(error) { 580 var Monorail = { 581 produce: function produce(monorailDomain, schemaId, payload) { 582 var currentMs = new Date().getTime(); 583 var event = { 584 schema_id: schemaId, 585 payload: payload, 586 metadata: { 587 event_created_at_ms: currentMs, 588 event_sent_at_ms: currentMs 589 } 590 }; 591 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 592 }, 593 sendRequest: function sendRequest(endpointUrl, payload) { 594 // Try the sendBeacon API 595 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 596 var blobData = new window.Blob([payload], { 597 type: 'text/plain' 598 }); 599 600 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 601 return true; 602 } // sendBeacon was not successful 603 604 } // XHR beacon 605 606 var xhr = new XMLHttpRequest(); 607 608 try { 609 xhr.open('POST', endpointUrl); 610 xhr.setRequestHeader('Content-Type', 'text/plain'); 611 xhr.send(payload); 612 } catch (e) { 613 console.log(e); 614 } 615 616 return false; 617 }, 618 isIos12: function isIos12() { 619 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 620 } 621 }; 622 Monorail.produce('monorail-edge.shopifysvc.com', 623 'trekkie_storefront_load_errors/1.1', 624 {shop_id: 8487567423, 625 theme_id: 193204912309, 626 app_name: "storefront", 627 context_url: window.location.href, 628 source_url: "//roseskinco.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 629 630 }; 631 scriptFallback.async = true; 632 scriptFallback.src = '//roseskinco.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 633 first.parentNode.insertBefore(scriptFallback, first); 634}; 635script.async = true; 636script.src = '//roseskinco.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 637first.parentNode.insertBefore(script, first); 638 639 }; 640 trekkie.load( 641 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":8487567423,"isMerchantRequest":null,"themeId":193204912309,"themeCityHash":"10569285099417105194","contentLanguage":"en","currency":"USD","eventMetadataId":"fccf172c-dae6-4143-b88a-07aa31fc3227"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 642 ); 643 644 var loaded = false;
645 trekkie.ready(function() { 646 if (loaded) return; 647 loaded = true; 648 649 window.ShopifyAnalytics.lib = window.trekkie; 650 651 var originalDocumentWrite = document.write; 652 document.write = customDocumentWrite; 653 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 654 document.write = originalDocumentWrite; 655 656 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 657 var token = match? match[1]: undefined; 658 if (!hasLoggedConversion(token)) { 659 setCookieIfConversion(token); 660 window.ShopifyAnalytics.lib.track("Performed Search",{"query":null},undefined,undefined,{"shopifyEmitted":true}); 661 } 662 }); 663 664 window.ShopifyAnalytics.lib.page(null,{"pageType":"searchresults","requestId":"1429c03c-d791-4106-826a-1dbc4bf08208-1791062382","shopifyEmitted":true}); 665 666 var eventsListenerScript = document.createElement('script'); 667 eventsListenerScript.async = true; 668 eventsListenerScript.src = "//roseskinco.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 669 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 670})();</script>
vendor: 1 bytes, line 670
670
671<script 672 defer 673 src="https://roseskinco.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 674 data-application="storefront-renderer" 675 data-shop-id="8487567423" 676 data-render-region="gcp-us-central1" 677 data-page-type="search" 678 data-theme-instance-id="193204912309" 679 data-theme-name="Process Creative" 680 data-theme-version="3.0.0" 681 data-monorail-region="shop_domain" 682 data-resource-timing-sampling-rate="10" 683 data-shs="true" 684 data-shs-beacon="true" 685 data-shs-export-with-fetch="true" 686 data-shs-logs-sample-rate="1" 687 data-shs-beacon-endpoint="https://roseskinco.com/api/collect" 688></script>
688 689<meta name="shopify-y" content="d2697642-6d1c-4ba4-979f-7617902086be" data-expiration="1822619982000"><meta name="shopify-s" content="521b9c56-1071-4aeb-9b22-47b9deec5ccd" data-expiration="1791064182000"><meta name="new-cookie-storage-activated" content="t"> 690</head> 691 692 <body class="c-page c-page--search shop-row"><a class="skip-link" href="#main">Skip to content.</a><div class="c-page__wrapper"> 693 <main 694 role="main" 695 class="o-main" 696 id="MainContent" 697 > 698 <div class="o-main__wrapper"> 699 <!-- BEGIN sections: header-group --> 700<div id="shopify-section-sections--28346835271861__header" class="shopify-section shopify-section-group-header-group c-section c-section__header"><link href="//roseskinco.com/cdn/shop/t/797/assets/sections.header.css?v=34188805263837835641788119759" rel="stylesheet" type="text/css" media="all" />
701<script src="//roseskinco.com/cdn/shop/t/797/assets/sections.header.js?v=26676092189113796591788119761" type="text/javascript" defer="defer"></script>
701 702<header class="c-header" data-header> 703 704 705 706 <div class="c-header__main"> 707 <div class="c-header__main-inner"><div class="c-header__left"><button class="c-header__menu-trigger is-mobile" 708 data-mobile-menu-trigger 709 data-open-mobile-menu 710 > 711 <span class="u-visually-hidden">Open Mobile Menu</span><svg class="c-header__menu-trigger-svg" 712 fill="none" 713 xmlns="http://www.w3.org/2000/svg" 714 viewBox="0 0 24 24" 715 role="presentation" 716> 717 <path d="M3.75 12h16.5M3.75 6h16.5M3.75 18h16.5" stroke="#1F1D24" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/> 718</svg></button><nav class="c-header-navigation c-header__navigation" 719 data-header-navigation 720 > 721 <header class="c-header-navigation__header is-mobile"><a 722 href="/" 723 class="c-header-navigation__logo" 724 title="RoseSkin Logo" 725 ><svg class="c-header__logo-image" 726 width="244" height="32" 727 viewBox="0 0 244 32" 728 fill="none" 729 xmlns="http://www.w3.org/2000/svg" 730 role="presentation" 731> 732 <path d="M240.262 31.9564C238.194 31.9564 236.523 30.2974 236.523 28.2456C236.523 26.1937 238.194 24.5348 240.262 24.5348C242.329 24.5348 244 26.1937 244 28.2456C244 30.2974 242.329 31.9564 240.262 31.9564Z" fill="#1F1D24"/> 733 <path d="M223.077 32C216.611 32 211.465 26.9795 211.465 20.4747C211.465 13.9699 216.611 8.94948 223.077 8.94948C229.542 8.94948 234.733 13.9699 234.733 20.4747C234.733 26.9795 229.542 32 223.077 32ZM223.077 26.4993C226.464 26.4993 229.059 24.0109 229.059 20.4747C229.059 16.9386 226.464 14.4502 223.077 14.4502C219.734 14.4502 217.139 16.9386 217.139 20.4747C217.139 24.0109 219.734 26.4993 223.077 26.4993Z" fill="#1F1D24"/> 734 <path d="M195.776 32C186.452 32 179.766 25.015 179.766 16.1091C179.766 7.15958 186.452 0.218231 195.776 0.218231C201.406 0.218231 206.376 3.05589 209.015 7.42152L203.781 10.4338C202.286 7.72711 199.295 6.06817 195.776 6.06817C189.75 6.06817 185.792 10.2155 185.792 16.1091C185.792 21.9591 189.75 26.1064 195.776 26.1064C199.295 26.1064 202.33 24.4475 203.781 21.7844L209.015 24.7967C206.42 29.1623 201.45 32 195.776 32Z" fill="#1F1D24"/> 735 <path d="M167.752 8.94948C172.415 8.94948 176.065 12.18 176.065 17.9863V31.3888H170.391V18.6848C170.391 15.7162 168.588 14.1882 166.037 14.1882C163.266 14.1882 161.199 15.8035 161.199 19.6016V31.3888H155.525V9.56067H161.199V12.0054C162.518 10.0409 164.805 8.94948 167.752 8.94948Z" fill="#1F1D24"/> 736 <path d="M147.473 6.94135C145.581 6.94135 143.998 5.36972 143.998 3.4925C143.998 1.61528 145.581 0 147.473 0C149.408 0 150.991 1.61528 150.991 3.4925C150.991 5.36972 149.408 6.94135 147.473 6.94135ZM144.658 31.3889V9.56073H150.332V31.3889H144.658Z" fill="#1F1D24"/> 737 <path d="M141.826 31.3889H135.228L127.223 21.4789V31.3889H121.549V0.829483H127.223V19.1651L134.788 9.56074H141.562L132.721 20.3438L141.826 31.3889Z" fill="#1F1D24"/> 738 <path d="M106.682 32C100.393 32 96.2583 28.9877 94.5869 24.4475L99.7769 21.4352C100.877 24.2728 103.032 26.1064 106.858 26.1064C110.509 26.1064 111.784 24.5784 111.784 22.8758C111.784 20.6057 109.717 19.7326 105.143 18.4229C100.437 17.0696 95.8624 15.105 95.8624 9.29874C95.8624 3.53611 100.701 0.218231 105.979 0.218231C111.037 0.218231 114.907 2.79395 116.974 7.07227L111.872 9.99724C110.773 7.68345 109.101 6.06817 105.979 6.06817C103.428 6.06817 101.932 7.37786 101.932 9.12411C101.932 11.0013 103.12 12.0054 107.782 13.4024C112.664 14.9304 117.854 16.5457 117.854 22.7885C117.854 28.5075 113.236 32 106.682 32Z" fill="#1F1D24"/> 739 <path d="M76.0032 22.7885C76.7949 25.6698 79.214 26.8922 82.2048 26.8922C84.404 26.8922 86.1633 25.9754 87.131 24.7094L91.7052 27.3288C89.638 30.2974 86.3393 32 82.1169 32C74.7277 32 70.0654 26.9795 70.0654 20.4747C70.0654 13.9699 74.7716 8.94948 81.677 8.94948C88.1866 8.94948 92.8048 14.0573 92.8048 20.4747C92.8048 21.3042 92.7169 22.0464 92.5849 22.7885H76.0032ZM75.9152 18.4229H87.131C86.4272 15.2796 84.0521 14.0136 81.677 14.0136C78.6422 14.0136 76.575 15.6289 75.9152 18.4229Z" fill="#1F1D24"/> 740 <path d="M56.5131 15.7599C56.5131 18.9904 67.8608 16.9822 67.8608 25.015C67.8608 29.7299 63.7264 32 59.0202 32C54.6219 32 51.3671 30.1664 49.7837 26.8049L54.7098 24.0545C55.3256 25.8445 56.821 26.8922 59.0202 26.8922C60.8235 26.8922 62.055 26.281 62.055 25.015C62.055 21.8281 50.7073 23.5743 50.7073 15.8908C50.7073
74011.4379 54.5339 8.94948 59.0642 8.94948C62.6268 8.94948 65.7057 10.5648 67.421 13.577L62.5828 16.1964C61.9231 14.7994 60.6916 13.9699 59.0642 13.9699C57.6567 13.9699 56.5131 14.5811 56.5131 15.7599Z" fill="#1F1D24"/> 741 <path d="M36.1048 32C29.6392 32 24.4932 26.9795 24.4932 20.4747C24.4932 13.9699 29.6392 8.94948 36.1048 8.94948C42.5703 8.94948 47.7604 13.9699 47.7604 20.4747C47.7604 26.9795 42.5703 32 36.1048 32ZM36.1048 26.4993C39.4915 26.4993 42.0865 24.0109 42.0865 20.4747C42.0865 16.9386 39.4915 14.4502 36.1048 14.4502C32.762 14.4502 30.167 16.9386 30.167 20.4747C30.167 24.0109 32.762 26.4993 36.1048 26.4993Z" fill="#1F1D24"/> 742 <path d="M16.8896 31.3889L10.688 20.7804H6.0697V31.3889H0V0.829483H12.3153C17.9892 0.829483 22.5635 5.36974 22.5635 10.9577C22.5635 14.7995 20.1444 18.2483 16.6257 19.8636L23.4431 31.3889H16.8896ZM6.0697 6.46114V15.498H12.3153C14.6025 15.498 16.4938 13.4898 16.4938 10.9577C16.4938 8.42568 14.6025 6.46114 12.3153 6.46114H6.0697Z" fill="#1F1D24"/> 743</svg> 744</a> 745 746 <button 747 class="c-header-navigation__close" 748 data-mobile-menu-trigger 749 data-close-mobile-menu-first 750 > 751 <span class="u-visually-hidden"> 752 Close Mobile Menu 753 </span><svg class="c-header-navigation__close-icon" 754 fill="none" 755 xmlns="http://www.w3.org/2000/svg" 756 viewBox="0 0 20 20" 757 role="presentation" 758> 759 <path d="m15.625 4.375-11.25 11.25M15.625 15.625 4.375 4.375" stroke="#1F1D24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 760</svg> 761 </button> 762 </header> 763 764 <div class="c-header-navigation__inner" 765 data-enable-scroll-parent 766 > 767 <div class="c-header-navigation__container"><ul class="c-header-navigation__lvl1"><li 768 class="c-header-navigation__lvl1-item" 769 770 771 > 772 <a 773 href="/pages/faq" 774 class="c-header-navigation__lvl1-link" 775 776 > 777 <span class="c-header-navigation__lvl1-link-text o-heading--4">FAQs & Help</span> 778 779 780 </a></li><li 781 class="c-header-navigation__lvl1-item" 782 783 784 > 785 <a 786 href="/apps/tracktor/track" 787 class="c-header-navigation__lvl1-link" 788 789 > 790 <span class="c-header-navigation__lvl1-link-text o-heading--4">Track Order</span> 791 792 793 </a></li></ul> 794 </div><ul class="c-header-navigation__extra-links is-mobile"><li class="c-header-navigation__extra-item"> 795 <label for="search_text"> 796 <span class="u-visually-hidden">Search Field</span><img 797 src="//roseskinco.com/cdn/shop/t/797/assets/icon-search.svg?v=38941840395643689551788119672" 798 alt="" 799 data-mobile-search-trigger 800 width="32" 801 height="32" 802 class="o-icon o-icon--search c-header-navigation__extra-icon" 803 loading="lazy" 804/> 805 806 </label> 807<div 808 class="c-search-form c-header-navigation__search-form is-mobile" 809 data-search-form 810> 811 <form 812 class="c-search-form__form" 813 action="/search" 814 method="get" 815 role="search" 816 ><input type="hidden" name="type" value="product"> 817 818 <div class="c-search-form__btn-container"> 819 <button 820 class="c-search-form__btn" 821 type="submit" 822 aria-label="Go to Results" 823 > 824 <span class="u-visually-hidden">Go to Results</span> 825 </button> 826 827 <input 828 type="text" 829 class="c-search-form__input o-input" 830 id="search_text" 831 name="q" 832 aria-label="Search" 833 placeholder="Search" 834 autocomplete="off" 835 required 836 data-search-input 837 > 838 </div> 839 </form> 840</div> 841</li> 842 843 <li class="c-header-navigation__extra-item"><a 844 href="/account" 845 class="c-header-navigation__account" 846 ><img 847 src="//roseskinco.com/cdn/shop/t/797/assets/icon-user.svg?v=91207897183825449041788119675" 848 alt="" 849 850 width="32" 851 height="32" 852 class="o-icon o-icon--user c-header-navigation__extra-icon" 853 loading="lazy" 854/> 855 856
857 <span class="c-header-navigation__account-text">Login</span> 858 </a> 859 860 </li> 861 <li class="c-header-navigation__extra-item"> 862 863 864 865 866 867 868<div class="geo-selector mobile"> 869 870 <select name="geo-select-mobile" class="geo-selector__mobile-select"> 871 872 <option value="United States" selected> 873 United States 874 </option> 875 876 <option value="Australia" > 877 Australia 878 </option> 879 880 <option value="Canada" > 881 Canada 882 </option> 883 884 <option value="Europe" > 885 Europe 886 </option> 887 888 <option value="International" > 889 International 890 </option> 891 892 <option value="United Arab Emirates" > 893 United Arab Emirates 894 </option> 895 896 <option value="United Kingdom" > 897 United Kingdom 898 </option> 899 900 <option value="New Zealand" > 901 New Zealand 902 </option> 903 904 <option value="Singapore" > 905 Singapore 906 </option> 907 908 <option value="South Africa" > 909 South Africa 910 </option> 911 912 </select> 913 914 <div class="geo-selector__container"> 915 <div class="geo-selector__current"> 916 <div data-geo-selector-current></div> 917 <span class="geo-selector__current-icon" data-geo-selector-icon><svg 918 fill="none" 919 xmlns="http://www.w3.org/2000/svg" 920 viewBox="0 0 14 14" 921 role="presentation" 922> 923 <path d="M5.25 2.625 9.625 7 5.25 11.375" stroke="#FF7E8D" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 924</svg></span> 925 </div> 926 <ul data-selector-geo data-geo-values=" 927 United States:United States:roseskinco.com | 928 929 Australia:Australia:au.roseskinco.com | 930 931 Canada:Canada:ca.roseskinco.com | 932 933 Europe:Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Finland, France, Germany, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Monaco, Netherlands, Norway, Poland, Portugal, Romania, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland, Turkey:eu.roseskinco.com | 934 935 International:International:int.roseskinco.com | 936 937 United Arab Emirates:United Arab Emirates:ae.roseskinco.com | 938 939 United Kingdom:United Kingdom:uk.roseskinco.com | 940 941 New Zealand:New Zealand:nz.roseskinco.com | 942 943 Singapore:Singapore:sg.roseskinco.com | 944 945 South Africa:South Africa:za.roseskinco.com 946 "> 947 948 <li class="" data-geo-selector-item="United States" data-geo-selector-value="roseskinco.com"> 949 <button 950 data-geo-selector-url="roseskinco.com" 951 id="United States" 952 953 class="active" 954 955 > 956 957 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678403628282/CountryIcons-01.svg?v=1678403628282" width="16" height="16" alt=""/></span> 958 959 <span>United States</span> 960 </button> 961 </li> 962 963 <li class="" data-geo-selector-item="Australia" data-geo-selector-value="au.roseskinco.com"> 964 <button 965 data-geo-selector-url="au.roseskinco.com" 966 id="Australia" 967 968 > 969 970 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678403683799/CountryIcons-02.svg?v=1678403683799" width="16" height="16" alt=""/></span> 971 972 <span>Australia</span> 973 </button> 974 </li> 975 976 <li class="" data-geo-selector-item="Canada" data-geo-selector-value="ca.roseskinco.com"> 977 <button 978 data-geo-selector-url="ca.roseskinco.com" 979 id="Canada" 980 981 > 982 983 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1684333548852/canada-icon.svg?v=1684333548852" width="16" height="16" alt=""/></span> 984 985 <span>Canada</span> 986 </button> 987 </li> 988 989 <li class="" data-geo-selector-item="Europe" data-geo-selector-value="eu.roseskinco.com"> 990 <button 991 data-geo-selector-url="eu.roseskinco.com" 992 id="Europe" 993 994 > 995 996 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678403707249/CountryIcons-03.svg?v=1678403707249" width="16" height="16" alt=""/></span> 997
998 <span>Europe</span> 999 </button> 1000 </li> 1001 1002 <li class="" data-geo-selector-item="International" data-geo-selector-value="int.roseskinco.com"> 1003 <button 1004 data-geo-selector-url="int.roseskinco.com" 1005 id="International" 1006 1007 > 1008 1009 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678492277650/CountryIcons-04.svg?v=1678492277650" width="16" height="16" alt=""/></span> 1010 1011 <span>International</span> 1012 </button> 1013 </li> 1014 1015 <li class="" data-geo-selector-item="United Arab Emirates" data-geo-selector-value="ae.roseskinco.com"> 1016 <button 1017 data-geo-selector-url="ae.roseskinco.com" 1018 id="United Arab Emirates" 1019 1020 > 1021 1022 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678494567992/CountryIcons-09.svg?v=1678494567993" width="16" height="16" alt=""/></span> 1023 1024 <span>United Arab Emirates</span> 1025 </button> 1026 </li> 1027 1028 <li class="" data-geo-selector-item="United Kingdom" data-geo-selector-value="uk.roseskinco.com"> 1029 <button 1030 data-geo-selector-url="uk.roseskinco.com" 1031 id="United Kingdom" 1032 1033 > 1034 1035 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678494965519/CountryIcons-12.svg?v=1678723301708" width="16" height="16" alt=""/></span> 1036 1037 <span>United Kingdom</span> 1038 </button> 1039 </li> 1040 1041 <li class="" data-geo-selector-item="New Zealand" data-geo-selector-value="nz.roseskinco.com"> 1042 <button 1043 data-geo-selector-url="nz.roseskinco.com" 1044 id="New Zealand" 1045 1046 > 1047 1048 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678495335346/CountryIcons-06.svg?v=1678495335346" width="16" height="16" alt=""/></span> 1049 1050 <span>New Zealand</span> 1051 </button> 1052 </li> 1053 1054 <li class="" data-geo-selector-item="Singapore" data-geo-selector-value="sg.roseskinco.com"> 1055 <button 1056 data-geo-selector-url="sg.roseskinco.com" 1057 id="Singapore" 1058 1059 > 1060 1061 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678495424528/CountryIcons-07.svg?v=1678495424528" width="16" height="16" alt=""/></span> 1062 1063 <span>Singapore</span> 1064 </button> 1065 </li> 1066 1067 <li class="" data-geo-selector-item="South Africa" data-geo-selector-value="za.roseskinco.com"> 1068 <button 1069 data-geo-selector-url="za.roseskinco.com" 1070 id="South Africa" 1071 1072 > 1073 1074 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678495506762/CountryIcons-11.svg?v=1678723316523" width="16" height="16" alt=""/></span> 1075 1076 <span>South Africa</span> 1077 </button> 1078 </li> 1079 1080 </ul> 1081 </div> 1082</div> 1083 1084 1085<div class="country-code-form"><form method="post" action="/localization" id="localization_form" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data" data-country-code-form=""><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/search" /><select name="country_code" data-country-code-select><option value="AU" data-country-code-select-option> 1086 australia - au 1087 </option><option value="AT" data-country-code-select-option> 1088 austria - europe 1089 </option><option value="BE" data-country-code-select-option> 1090 belgium - europe 1091 </option><option value="BR" data-country-code-select-option> 1092 brazil - international 1093 </option><option value="BG" data-country-code-select-option> 1094 bulgaria - europe 1095 </option><option value="CA" data-country-code-select-option> 1096 canada - ca 1097 </option><option value="HR" data-country-code-select-option> 1098 croatia - europe 1099 </option><option value="CZ" data-country-code-select-option> 1100 czechia - europe 1101 </option><option value="DK" data-country-code-select-option> 1102 denmark - europe 1103 </option><option value="FI" data-country-code-select-option> 1104 finland - europe 1105 </option><option value="FR" data-country-code-select-option> 1106 france - europe 1107 </option><option value="DE" data-country-code-select-option> 1108 germany - europe 1109 </option><option value="HK" data-country-code-select-option> 1110 hong kong sar - international 1111 </option><option value="HU" data-country-code-select-option> 1112 hungary - europe 1113 </option><option value="IN" data-country-code-select-option> 1114 india - international 1115 </option><option value="IE" data-country-code-select-option> 1116 ireland - europe 1117 </option><option value="IT" data-country-code-select-option> 1118 italy - europe 1119 </option><option value="JP" data-country-code-select-option> 1120 japan - international 1121 </option><option value="LV" data-country-code-select-option> 1122 latvia - europe 1123 </option><option value="LT" data-country-code-select-option> 1124 lithuania - europe 1125 </option><option value="LU" data-country-code-select-option> 1126 luxembourg - europe 1127 </option><option value="MY" data-country-code-select-option> 1128 malaysia - international 1129 </option><option value="MX" data-country-code-select-option> 1130 mexico - international 1131 </option><option value="MC" data-country-code-select-option> 1132 monaco - europe 1133 </option><option value="NL" data-country-code-select-option> 1134 netherlands - europe 1135 </option><option value="NZ" data-country-code-select-option> 1136 new zealand - nz 1137 </option><option value="NO" data-country-code-select-option> 1138 norway - europe 1139 </option><option value="PH" data-country-code-select-option> 1140 philippines - international 1141 </option><option value="PL" data-country-code-select-option> 1142 poland - europe 1143 </option><option value="PT" data-country-code-select-option> 1144 portugal - europe 1145 </option><option value="RO" data-country-code-select-option> 1146 romania - europe 1147 </option><option value="SA" data-country-code-select-option> 1148 saudi arabia - international 1149 </option><option value="RS" data-country-code-select-option> 1150 serbia - europe 1151 </option><option value="SG" data-country-code-select-option> 1152 singapore - sg 1153 </option><option value="SK" data-country-code-select-option> 1154 slovakia - europe 1155 </option><option value="SI" data-country-code-select-option> 1156 slovenia - europe 1157 </option><option value="ZA" data-country-code-select-option> 1158 south africa - south-africa 1159 </option><option value="KR" data-country-code-select-option> 1160 south korea - international 1161 </option><option value="ES" data-country-code-select-option> 1162 spain - europe 1163 </option><option value="SE" data-country-code-select-option> 1164 sweden - europe 1165 </option><option value="CH" data-country-code-select-option> 1166 switzerland - europe 1167 </option><option value="TH" data-country-code-select-option> 1168 thailand - international 1169 </option><option value="TR" data-country-code-select-option> 1170 türkiye - europe 1171 </option><option value="AE" data-country-code-select-option> 1172 united arab emirates - ae 1173 </option><option value="GB" data-country-code-select-option> 1174 united kingdom - gb 1175 </option><option value="US" data-country-code-select-option> 1176 united states - 690f0e89-bcad-47b4-8109-e91f5240aa21 1177 </option></select></form></div> 1178
1179<script> 1180 document.addEventListener('DOMContentLoaded', () => { 1181 const geoSelectorMobileSelect = document?.querySelector('.geo-selector__mobile-select'); 1182 1183 if (geoSelectorMobileSelect) { 1184 geoSelectorMobileSelect.addEventListener('change', (e) => { 1185 e.preventDefault(); 1186 const selectValue = e.target.value; 1187 const customSelectButton = document.querySelector(`.geo-selector.mobile button[id="${selectValue}"]`); 1188 if (customSelectButton) { 1189 customSelectButton.click(); 1190 } 1191 }) 1192 } 1193 }) 1194</script>
1194 1195 1196 1197 </li> 1198 1199 </ul> 1200 </div> 1201 </nav></div><div class="c-header__center"> 1202 <a 1203 href="/" 1204 class="c-header__logo" 1205 title="RoseSkin Logo" 1206 ><svg class="c-header__logo-svg" 1207 width="244" height="32" 1208 viewBox="0 0 244 32" 1209 fill="none" 1210 xmlns="http://www.w3.org/2000/svg" 1211 role="presentation" 1212> 1213 <path d="M240.262 31.9564C238.194 31.9564 236.523 30.2974 236.523 28.2456C236.523 26.1937 238.194 24.5348 240.262 24.5348C242.329 24.5348 244 26.1937 244 28.2456C244 30.2974 242.329 31.9564 240.262 31.9564Z" fill="#1F1D24"/> 1214 <path d="M223.077 32C216.611 32 211.465 26.9795 211.465 20.4747C211.465 13.9699 216.611 8.94948 223.077 8.94948C229.542 8.94948 234.733 13.9699 234.733 20.4747C234.733 26.9795 229.542 32 223.077 32ZM223.077 26.4993C226.464 26.4993 229.059 24.0109 229.059 20.4747C229.059 16.9386 226.464 14.4502 223.077 14.4502C219.734 14.4502 217.139 16.9386 217.139 20.4747C217.139 24.0109 219.734 26.4993 223.077 26.4993Z" fill="#1F1D24"/> 1215 <path d="M195.776 32C186.452 32 179.766 25.015 179.766 16.1091C179.766 7.15958 186.452 0.218231 195.776 0.218231C201.406 0.218231 206.376 3.05589 209.015 7.42152L203.781 10.4338C202.286 7.72711 199.295 6.06817 195.776 6.06817C189.75 6.06817 185.792 10.2155 185.792 16.1091C185.792 21.9591 189.75 26.1064 195.776 26.1064C199.295 26.1064 202.33 24.4475 203.781 21.7844L209.015 24.7967C206.42 29.1623 201.45 32 195.776 32Z" fill="#1F1D24"/> 1216 <path d="M167.752 8.94948C172.415 8.94948 176.065 12.18 176.065 17.9863V31.3888H170.391V18.6848C170.391 15.7162 168.588 14.1882 166.037 14.1882C163.266 14.1882 161.199 15.8035 161.199 19.6016V31.3888H155.525V9.56067H161.199V12.0054C162.518 10.0409 164.805 8.94948 167.752 8.94948Z" fill="#1F1D24"/> 1217 <path d="M147.473 6.94135C145.581 6.94135 143.998 5.36972 143.998 3.4925C143.998 1.61528 145.581 0 147.473 0C149.408 0 150.991 1.61528 150.991 3.4925C150.991 5.36972 149.408 6.94135 147.473 6.94135ZM144.658 31.3889V9.56073H150.332V31.3889H144.658Z" fill="#1F1D24"/> 1218 <path d="M141.826 31.3889H135.228L127.223 21.4789V31.3889H121.549V0.829483H127.223V19.1651L134.788 9.56074H141.562L132.721 20.3438L141.826 31.3889Z" fill="#1F1D24"/> 1219 <path d="M106.682 32C100.393 32 96.2583 28.9877 94.5869 24.4475L99.7769 21.4352C100.877 24.2728 103.032 26.1064 106.858 26.1064C110.509 26.1064 111.784 24.5784 111.784 22.8758C111.784 20.6057 109.717 19.7326 105.143 18.4229C100.437 17.0696 95.8624 15.105 95.8624 9.29874C95.8624 3.53611 100.701 0.218231 105.979 0.218231C111.037 0.218231 114.907 2.79395 116.974 7.07227L111.872 9.99724C110.773 7.68345 109.101 6.06817 105.979 6.06817C103.428 6.06817 101.932 7.37786 101.932 9.12411C101.932 11.0013 103.12 12.0054 107.782 13.4024C112.664 14.9304 117.854 16.5457 117.854 22.7885C117.854 28.5075 113.236 32 106.682 32Z" fill="#1F1D24"/> 1220 <path d="M76.0032 22.7885C76.7949 25.6698 79.214 26.8922 82.2048 26.8922C84.404 26.8922 86.1633 25.9754 87.131 24.7094L91.7052 27.3288C89.638 30.2974 86.3393 32 82.1169 32C74.7277 32 70.0654 26.9795 70.0654 20.4747C70.0654 13.9699 74.7716 8.94948 81.677 8.94948C88.1866 8.94948 92.8048 14.0573 92.8048 20.4747C92.8048 21.3042 92.7169 22.0464 92.5849 22.7885H76.0032ZM75.9152 18.4229H87.131C86.4272 15.2796 84.0521 14.0136 81.677 14.0136C78.6422 14.0136 76.575 15.6289 75.9152 18.4229Z" fill="#1F1D24"/> 1221 <path d="M56.5131 15.7599C56.5131 18.9904 67.8608 16.9822 67.8608 25.015C67.8608 29.7299 63.7264 32 59.0202 32C54.6219 32 51.3671 30.1664 49.7837 26.8049L54.7098 24.0545C55.3256 25.8445 56.821 26.8922 59.0202 26.8922C60.8235 26.8922 62.055 26.281 62.055 25.015C62.055 21.8281 50.7073 23.5743 50.7073 15.8908C50.7073 11.4379 54.5339 8.94948 59.0642 8.94948C62.6268 8.94948 65.7057 10.5648 67.421 13.577L62.5828 16.1964C61.9231 14.7994 60.6916 13.9699 59.0642 13.9699C57.6567 13.9699 56.5131 14.5811 56.5131 15.7599Z" fill="#1F1D24"/> 1222 <path d="M36.1048 32C29.6392 32 24.4932 26.9795 24.4932 20.4747C24.4932 13.9699 29.6392 8.94948 36.1048 8.94948C42.5703 8.94948 47.7604 13.9699 47.7604 20.4747C47.7604 26.9795 42.5703 32 36.1048 32ZM36.1048 26.4993C39.4915 26.4993 42.0865 24.0109 42.0865 20.4747C42.0865 16.9386 39.4915 14.4502 36.1048 14.4502C32.762 14.4502 30.167 16.9386 30.167 20.4747C30.167 24.0109 32.762 26.4993 36.1048 26.4993Z" fill="#1F1D24"/> 1223 <path d="M16.8896 31.3889L10.688 20.7804H6.0697V31.3889H0V0.829483H12.3153C17.9892 0.829483 22.5635 5.36974 22.5635 10.9577C22.5635 14.7995 20.1444 18.2483 16.6257 19.8636L23.4431 31.3889H16.8896ZM6.0697 6.46114
1223V15.498H12.3153C14.6025 15.498 16.4938 13.4898 16.4938 10.9577C16.4938 8.42568 14.6025 6.46114 12.3153 6.46114H6.0697Z" fill="#1F1D24"/> 1224</svg> 1225</a> 1226 </div><div class="c-header__right"> 1227<div 1228 class="c-search-form c-header__search-form is-desktop" 1229 data-search-form 1230> 1231 <form 1232 class="c-search-form__form" 1233 action="/search" 1234 method="get" 1235 role="search" 1236 ><input type="hidden" name="type" value="product"> 1237 1238 <div class="c-search-form__btn-container"> 1239 <button 1240 class="c-search-form__btn" 1241 type="submit" 1242 aria-label="Go to Results" 1243 > 1244 <span class="u-visually-hidden">Go to Results</span> 1245 </button> 1246 1247 <input 1248 type="text" 1249 class="c-search-form__input o-input" 1250 id="search_text" 1251 name="q" 1252 aria-label="Search" 1253 placeholder="" 1254 autocomplete="off" 1255 required 1256 data-search-input 1257 > 1258 </div> 1259 </form> 1260</div> 1261<button 1262 class="close-search" 1263 data-close-search 1264 title="Close Search Field" 1265 > 1266 <span class="u-visually-hidden"> 1267 Close Search Field 1268 </span><svg class="c-cart-contents__close-icon" 1269 fill="none" 1270 xmlns="http://www.w3.org/2000/svg" 1271 viewBox="0 0 20 20" 1272 role="presentation" 1273> 1274 <path d="m15.625 4.375-11.25 11.25M15.625 15.625 4.375 4.375" stroke="#1F1D24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1275</svg></button> 1276 1277 <div class="c-header__actions" data-actions-container> 1278 1279 1280 1281 1282 1283 1284 1285<div class="geo-selector desktop"> 1286 1287 <select name="geo-select-mobile" class="geo-selector__mobile-select"> 1288 1289 <option value="United States" selected> 1290 United States 1291 </option> 1292 1293 <option value="Australia" > 1294 Australia 1295 </option> 1296 1297 <option value="Canada" > 1298 Canada 1299 </option> 1300 1301 <option value="Europe" > 1302 Europe 1303 </option> 1304 1305 <option value="International" > 1306 International 1307 </option> 1308 1309 <option value="United Arab Emirates" > 1310 United Arab Emirates 1311 </option> 1312 1313 <option value="United Kingdom" > 1314 United Kingdom 1315 </option> 1316 1317 <option value="New Zealand" > 1318 New Zealand 1319 </option> 1320 1321 <option value="Singapore" > 1322 Singapore 1323 </option> 1324 1325 <option value="South Africa" > 1326 South Africa 1327 </option> 1328 1329 </select> 1330 1331 <div class="geo-selector__container"> 1332 <div class="geo-selector__current"> 1333 <div data-geo-selector-current></div> 1334 <span class="geo-selector__current-icon" data-geo-selector-icon><svg 1335 fill="none" 1336 xmlns="http://www.w3.org/2000/svg" 1337 viewBox="0 0 14 14" 1338 role="presentation" 1339> 1340 <path d="M5.25 2.625 9.625 7 5.25 11.375" stroke="#FF7E8D" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 1341</svg></span> 1342 </div> 1343 <ul data-selector-geo data-geo-values=" 1344 United States:United States:roseskinco.com | 1345 1346 Australia:Australia:au.roseskinco.com | 1347 1348 Canada:Canada:ca.roseskinco.com | 1349 1350 Europe:Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Finland, France, Germany, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Monaco, Netherlands, Norway, Poland, Portugal, Romania, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland, Turkey:eu.roseskinco.com | 1351 1352 International:International:int.roseskinco.com | 1353 1354 United Arab Emirates:United Arab Emirates:ae.roseskinco.com | 1355 1356 United Kingdom:United Kingdom:uk.roseskinco.com | 1357 1358 New Zealand:New Zealand:nz.roseskinco.com | 1359 1360 Singapore:Singapore:sg.roseskinco.com | 1361 1362 South Africa:South Africa:za.roseskinco.com 1363 "> 1364 1365 <li class="" data-geo-selector-item="United States" data-geo-selector-value="roseskinco.com"> 1366 <button 1367 data-geo-selector-url="roseskinco.com" 1368 id="United States" 1369 1370 class="active" 1371 1372 > 1373 1374 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678403628282/CountryIcons-01.svg?v=1678403628282" width="16" height="16" alt=""/></span> 1375
1376 <span>United States</span> 1377 </button> 1378 </li> 1379 1380 <li class="" data-geo-selector-item="Australia" data-geo-selector-value="au.roseskinco.com"> 1381 <button 1382 data-geo-selector-url="au.roseskinco.com" 1383 id="Australia" 1384 1385 > 1386 1387 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678403683799/CountryIcons-02.svg?v=1678403683799" width="16" height="16" alt=""/></span> 1388 1389 <span>Australia</span> 1390 </button> 1391 </li> 1392 1393 <li class="" data-geo-selector-item="Canada" data-geo-selector-value="ca.roseskinco.com"> 1394 <button 1395 data-geo-selector-url="ca.roseskinco.com" 1396 id="Canada" 1397 1398 > 1399 1400 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1684333548852/canada-icon.svg?v=1684333548852" width="16" height="16" alt=""/></span> 1401 1402 <span>Canada</span> 1403 </button> 1404 </li> 1405 1406 <li class="" data-geo-selector-item="Europe" data-geo-selector-value="eu.roseskinco.com"> 1407 <button 1408 data-geo-selector-url="eu.roseskinco.com" 1409 id="Europe" 1410 1411 > 1412 1413 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678403707249/CountryIcons-03.svg?v=1678403707249" width="16" height="16" alt=""/></span> 1414 1415 <span>Europe</span> 1416 </button> 1417 </li> 1418 1419 <li class="" data-geo-selector-item="International" data-geo-selector-value="int.roseskinco.com"> 1420 <button 1421 data-geo-selector-url="int.roseskinco.com" 1422 id="International" 1423 1424 > 1425 1426 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678492277650/CountryIcons-04.svg?v=1678492277650" width="16" height="16" alt=""/></span> 1427 1428 <span>International</span> 1429 </button> 1430 </li> 1431 1432 <li class="" data-geo-selector-item="United Arab Emirates" data-geo-selector-value="ae.roseskinco.com"> 1433 <button 1434 data-geo-selector-url="ae.roseskinco.com" 1435 id="United Arab Emirates" 1436 1437 > 1438 1439 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678494567992/CountryIcons-09.svg?v=1678494567993" width="16" height="16" alt=""/></span> 1440 1441 <span>United Arab Emirates</span> 1442 </button> 1443 </li> 1444 1445 <li class="" data-geo-selector-item="United Kingdom" data-geo-selector-value="uk.roseskinco.com"> 1446 <button 1447 data-geo-selector-url="uk.roseskinco.com" 1448 id="United Kingdom" 1449 1450 > 1451 1452 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678494965519/CountryIcons-12.svg?v=1678723301708" width="16" height="16" alt=""/></span> 1453 1454 <span>United Kingdom</span> 1455 </button> 1456 </li> 1457 1458 <li class="" data-geo-selector-item="New Zealand" data-geo-selector-value="nz.roseskinco.com"> 1459 <button 1460 data-geo-selector-url="nz.roseskinco.com" 1461 id="New Zealand" 1462 1463 > 1464 1465 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678495335346/CountryIcons-06.svg?v=1678495335346" width="16" height="16" alt=""/></span> 1466 1467 <span>New Zealand</span> 1468 </button> 1469 </li> 1470 1471 <li class="" data-geo-selector-item="Singapore" data-geo-selector-value="sg.roseskinco.com"> 1472 <button 1473 data-geo-selector-url="sg.roseskinco.com" 1474 id="Singapore" 1475 1476 > 1477 1478 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678495424528/CountryIcons-07.svg?v=1678495424528" width="16" height="16" alt=""/></span> 1479 1480 <span>Singapore</span> 1481 </button> 1482 </li> 1483 1484 <li class="" data-geo-selector-item="South Africa" data-geo-selector-value="za.roseskinco.com"> 1485 <button 1486 data-geo-selector-url="za.roseskinco.com" 1487 id="South Africa" 1488 1489 > 1490 1491 <img loading="lazy" src="https://cdn.accentuate.io/8487567423/1678495506762/CountryIcons-11.svg?v=1678723316523" width="16" height="16" alt=""/></span> 1492
1493 <span>South Africa</span> 1494 </button> 1495 </li> 1496 1497 </ul> 1498 </div> 1499</div> 1500 1501 1502<div class="country-code-form"><form method="post" action="/localization" id="localization_form" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data" data-country-code-form=""><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/search" /><select name="country_code" data-country-code-select><option value="AU" data-country-code-select-option> 1503 australia - au 1504 </option><option value="AT" data-country-code-select-option> 1505 austria - europe 1506 </option><option value="BE" data-country-code-select-option> 1507 belgium - europe 1508 </option><option value="BR" data-country-code-select-option> 1509 brazil - international 1510 </option><option value="BG" data-country-code-select-option> 1511 bulgaria - europe 1512 </option><option value="CA" data-country-code-select-option> 1513 canada - ca 1514 </option><option value="HR" data-country-code-select-option> 1515 croatia - europe 1516 </option><option value="CZ" data-country-code-select-option> 1517 czechia - europe 1518 </option><option value="DK" data-country-code-select-option> 1519 denmark - europe 1520 </option><option value="FI" data-country-code-select-option> 1521 finland - europe 1522 </option><option value="FR" data-country-code-select-option> 1523 france - europe 1524 </option><option value="DE" data-country-code-select-option> 1525 germany - europe 1526 </option><option value="HK" data-country-code-select-option> 1527 hong kong sar - international 1528 </option><option value="HU" data-country-code-select-option> 1529 hungary - europe 1530 </option><option value="IN" data-country-code-select-option> 1531 india - international 1532 </option><option value="IE" data-country-code-select-option> 1533 ireland - europe 1534 </option><option value="IT" data-country-code-select-option> 1535 italy - europe 1536 </option><option value="JP" data-country-code-select-option> 1537 japan - international 1538 </option><option value="LV" data-country-code-select-option> 1539 latvia - europe 1540 </option><option value="LT" data-country-code-select-option> 1541 lithuania - europe 1542 </option><option value="LU" data-country-code-select-option> 1543 luxembourg - europe 1544 </option><option value="MY" data-country-code-select-option> 1545 malaysia - international 1546 </option><option value="MX" data-country-code-select-option> 1547 mexico - international 1548 </option><option value="MC" data-country-code-select-option> 1549 monaco - europe 1550 </option><option value="NL" data-country-code-select-option> 1551 netherlands - europe 1552 </option><option value="NZ" data-country-code-select-option> 1553 new zealand - nz 1554 </option><option value="NO" data-country-code-select-option> 1555 norway - europe 1556 </option><option value="PH" data-country-code-select-option> 1557 philippines - international 1558 </option><option value="PL" data-country-code-select-option> 1559 poland - europe 1560 </option><option value="PT" data-country-code-select-option> 1561 portugal - europe 1562 </option><option value="RO" data-country-code-select-option> 1563 romania - europe 1564 </option><option value="SA" data-country-code-select-option> 1565 saudi arabia - international 1566 </option><option value="RS" data-country-code-select-option> 1567 serbia - europe 1568 </option><option value="SG" data-country-code-select-option> 1569 singapore - sg 1570 </option><option value="SK" data-country-code-select-option> 1571 slovakia - europe 1572 </option><option value="SI" data-country-code-select-option> 1573 slovenia - europe 1574 </option><option value="ZA" data-country-code-select-option> 1575 south africa - south-africa 1576 </option><option value="KR" data-country-code-select-option> 1577 south korea - international 1578 </option><option value="ES" data-country-code-select-option> 1579 spain - europe 1580 </option><option value="SE" data-country-code-select-option> 1581 sweden - europe 1582 </option><option value="CH" data-country-code-select-option> 1583 switzerland - europe 1584 </option><option value="TH" data-country-code-select-option> 1585 thailand - international 1586 </option><option value="TR" data-country-code-select-option> 1587 türkiye - europe 1588 </option><option value="AE" data-country-code-select-option> 1589 united arab emirates - ae 1590 </option><option value="GB" data-country-code-select-option> 1591 united kingdom - gb 1592 </option><option value="US" data-country-code-select-option> 1593 united states - 690f0e89-bcad-47b4-8109-e91f5240aa21 1594 </option></select></form></div> 1595
1596<script> 1597 document.addEventListener('DOMContentLoaded', () => { 1598 const geoSelectorMobileSelect = document?.querySelector('.geo-selector__mobile-select'); 1599 1600 if (geoSelectorMobileSelect) { 1601 geoSelectorMobileSelect.addEventListener('change', (e) => { 1602 e.preventDefault(); 1603 const selectValue = e.target.value; 1604 const customSelectButton = document.querySelector(`.geo-selector.mobile button[id="${selectValue}"]`); 1605 if (customSelectButton) { 1606 customSelectButton.click(); 1607 } 1608 }) 1609 } 1610 }) 1611</script>
1611 1612 1613 1614 1615 <a 1616 href="/search" 1617 title="Search" 1618 class="c-header__action is-search is-desktop" 1619 data-open-search 1620 > 1621 <span class="u-visually-hidden"> 1622 Search 1623 </span><svg class="c-header__icon" 1624 fill="none" 1625 xmlns="http://www.w3.org/2000/svg" 1626 viewBox="0 0 28 28" 1627 role="presentation" 1628> 1629 <path d="M12.588 21.813a9.115 9.115 0 1 0 0-18.23 9.115 9.115 0 0 0 0 18.23ZM19.035 19.144l5.274 5.274" stroke="#1F1D24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1630</svg> 1631 </a><a 1632 href="/account" 1633 title="Login" 1634 class="c-header__action is-account is-desktop" 1635 > 1636 <span class="u-visually-hidden">Login</span><svg class="c-header__icon c-header__user-icon" 1637 width="24" 1638 height="24" 1639 viewBox="0 0 24 24" 1640 fill="none" 1641 xmlns="http://www.w3.org/2000/svg" 1642 role="presentation" 1643> 1644 <path d="M2.25 22.5C2.25 17.115 6.615 12.75 12 12.75C17.385 12.75 21.75 17.115 21.75 22.5" stroke="#1F1D24" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/> 1645 <path d="M12 12.75C15.1066 12.75 17.625 10.2316 17.625 7.125C17.625 4.0184 15.1066 1.5 12 1.5C8.8934 1.5 6.375 4.0184 6.375 7.125C6.375 10.2316 8.8934 12.75 12 12.75Z" stroke="#1F1D24" stroke-width="2" stroke-miterlimit="10" stroke-linecap="square"/> 1646</svg> 1647 1648 </a> 1649 </div><a 1650 href="/cart" 1651 class="c-header__cart" 1652 title="Open Shopping Cart" 1653 1654 data-cart-drawer-open 1655 1656 > 1657 <span class="u-visually-hidden">Open Shopping Cart</span> 1658 1659<svg class="c-header__cart-icon" 1660 fill="none" 1661 xmlns="http://www.w3.org/2000/svg" 1662 viewBox="0 0 29 29" 1663 role="presentation" 1664> 1665 <path d="M19.147 11.491V7.982a4.366 4.366 0 0 0-4.366-4.367 4.367 4.367 0 0 0-4.386 4.348v3.528" stroke="#1F1D24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1666 <path clip-rule="evenodd" d="M20.269 25.027H9.29a4.926 4.926 0 0 1-4.928-4.924v-6.385a4.926 4.926 0 0 1 4.928-4.924H20.27a4.926 4.926 0 0 1 4.928 4.925v6.384a4.926 4.926 0 0 1-4.928 4.924Z" stroke="#1F1D24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1667</svg> 1668 1669<span class="c-header__cart-count o-paragraph--2 " 1670 data-cart-count 1671 >0</span> 1672 </a> 1673 </div> 1674 </div><div class="c-header__main-background is-desktop"></div> 1675 </div> 1676</header> 1677 1678 1679</div><div id="shopify-section-sections--28346835271861__cart-drawer" class="shopify-section shopify-section-group-header-group c-section c-section__cart-drawer"><link href="//roseskinco.com/cdn/shop/t/797/assets/sections.cart-drawer.css?v=130263026530863195581788119711" rel="stylesheet" type="text/css" media="all" /> 1680<div class="c-cart-drawer c-cart-drawer__empty" 1681 data-cart-container 1682 data-section-id="sections--28346835271861__cart-drawer" 1683> 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704<header class="c-cart-contents__header" data-icons-count="3"> 1705 <div class="c-cart-contents__title-wrapper"><h2 class="c-cart-contents__title">Your Bag 1706</h2><button 1707 class="c-cart-contents__close" 1708 data-cart-drawer-close 1709 title="Close Cart" 1710 > 1711 <span class="u-visually-hidden"> 1712 Close Cart 1713 </span><svg class="c-cart-contents__close-icon" 1714 fill="none" 1715 xmlns="http://www.w3.org/2000/svg" 1716 viewBox="0 0 20 20" 1717 role="presentation" 1718> 1719 <path d="m15.625 4.375-11.25 11.25M15.625 15.625 4.375 4.375" stroke="#1F1D24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 1720</svg></button> 1721 </div> 1722</header><div class="c-cart-contents__inner"><div class="c-cart-contents__empty"> 1723 <h3 class="c-cart-contents__empty-title">Your Cart Is Empty</h3> 1724 1725 1726 <a href="/collections/all-products" 1727 class="c-cart-contents__empty-link o-btn--outlined" 1728 > 1729 START SHOPPING 1730 </a> 1731 1732 </div> 1733 1734 1735 1736</div><div class="c-cart-contents__footer"> 1737 <div class="c-cart-contents__footer-inner"> 1738 <div class="c-cart-icons"> 1739 1740 <div class="c-cart-icon__wrapper" 1741 1742 aria-label="400,000+ happy customers" 1743 1744 > 1745 <img src="//roseskinco.com/cdn/shop/files/Group_12.png?v=1776857749&width=150" 1746 width="88" 1747 height="88" 1748 1749 alt="" 1750 role="presentation" 1751 1752 > 1753 1754
1755 <span>400,000+ HAPPY <br /> 1756CUSTOMERS</span> 1757 1758 </div> 1759 1760 <div class="c-cart-icon__wrapper" 1761 1762 aria-label="try it for 90 days" 1763 1764 > 1765 <img src="//roseskinco.com/cdn/shop/files/Group_13.png?v=1776857749&width=150" 1766 width="88" 1767 height="88" 1768 1769 alt="" 1770 role="presentation" 1771 1772 > 1773 1774 1775 <span>TRY IT FOR <br /> 177690 DAYS</span> 1777 1778 </div> 1779 1780 <div class="c-cart-icon__wrapper" 1781 1782 aria-label="free shipping globally" 1783 1784 > 1785 <img src="//roseskinco.com/cdn/shop/files/Group_14.png?v=1776857749&width=150" 1786 width="88" 1787 height="88" 1788 1789 alt="" 1790 role="presentation" 1791 1792 > 1793 1794 1795 <span>FREE SHIPPING <br /> 1796GLOBALLY</span> 1797 1798 </div> 1799 1800 </div> 1801 1802 </div> 1803</div> 1804</div><div class="c-cart-drawer__background" 1805 data-cart-drawer-overlay 1806 aria-hidden="true" 1807> 1808</div> 1809 1810 1811<div 1812 data-free-gifts-trigger-products="" 1813 data-free-gifts="" 1814 data-available-gwp="false" 1815 aria-hidden="true" 1816></div> 1817
1818<script src="//roseskinco.com/cdn/shop/t/797/assets/sections.cart-drawer.js?v=24907319297057091411788119712" type="text/javascript"></script>
1818 1819 1820</div> 1821<!-- END sections: header-group --> 1822 1823 <div id="main"> 1824 <div id="shopify-section-template--28346835206325__search" class="shopify-section c-section__search"><link href="//roseskinco.com/cdn/shop/t/797/assets/sections.search.css?v=105013730792836524881788119823" rel="stylesheet" type="text/css" media="all" /> 1825<section class="c-search"> 1826 <div class="c-search__content"><h3 class="c-search__title o-subheading">Search</h3><h2 class="c-search__subtitle">Search our products</h2> 1827 1828 <div id="searchresults" class="c-search__search-container"> 1829 <form action="/search" method="get"> 1830 <p> 1831 <input type="text" name="q" value="" id="result-q" placeholder="Search here" class="c-search__search-input o-input"> 1832 <input type="submit" value="Search" class="c-search__search-btn o-btn"> 1833 </p> 1834 </form> 1835 </div></div></section> 1836
1837<script src="//roseskinco.com/cdn/shop/t/797/assets/sections.search.js?v=134595268957178503331788119824" type="text/javascript"></script>
1837 1838 1839 1840</div> 1841 </div> 1842 </div> 1843 </main> 1844 1845 1846 <div id="shopify-section-newsletter" class="shopify-section c-section c-section__newsletter"><link href="//roseskinco.com/cdn/shop/t/797/assets/sections.newsletter.css?v=59339025525617022251788119782" rel="stylesheet" type="text/css" media="all" /> 1847<section class="c-newsletter" id="newsletter" data-newsletter> 1848 <div class="c-newsletter__inner" data-newsletter-inner> 1849 <div class="c-newsletter__container" data-newsletter-container><div class="c-newsletter-form c-newsletter__form c-newsletter__form"> 1850 <div class="c-newsletter-form__inner"><h2 class="c-newsletter__title o-heading--4">Sign Up for Exclusive Access!</h2><p class="c-newsletter-form__subtitle">Subscribe to emails to receive sales updates and product news.</p><div class="klaviyo-subscribe"> 1851 <div class="klaviyo-subscribe__container"> 1852 <div class="klaviyo-form-VDCZiU"></div> 1853 </div> 1854</div> 1855 1856
1857<script 1858 async 1859 type="text/javascript" 1860 src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=X7D2SB" 1861></script>
1861 1862 1863 1864 1865</div> 1866</div></div> 1867 </div><div class="c-newsletter__image-container"> 1868<picture><source 1869 data-w=""320x"" 1870 media="(max-width:320px)" 1871 loading="lazy" 1872 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_320x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1873 /><source 1874 data-w=""375x"" 1875 media="(max-width:375px)" 1876 loading="lazy" 1877 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_375x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1878 /><source 1879 data-w=""500x"" 1880 media="(max-width:500px)" 1881 loading="lazy" 1882 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_500x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1883 /><source 1884 data-w=""750x"" 1885 media="(max-width:750px)" 1886 loading="lazy" 1887 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_750x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1888 /><source 1889 data-w=""1100x"" 1890 media="(max-width:1100px)" 1891 loading="lazy" 1892 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_1100x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1893 /><source 1894 data-w=""1650x"" 1895 media="(max-width:1650px)" 1896 loading="lazy" 1897 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_1650x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1898 /><source 1899 data-w=""2000x"" 1900 media="(max-width:2000px)" 1901 loading="lazy" 1902 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_2000x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1903 /><source 1904 media="(min-width:2000px)" 1905 loading="lazy" 1906 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_2560x.webp?v=1775672440, //roseskinco.com/cdn/shop/files/[email protected]?v=1775672440 2x" 1907 /><img 1908 loading="eager" 1909 1910 src="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_2560x.webp?v=1775672440" 1911 width="2560"alt="" 1912 class="c-newsletter__image 1913 is-desktop 1914 has-mobile" 1915 1916 fetchpriority="high" 1917 /> 1918 </picture> 1919<picture><source 1920 data-w=""320x"" 1921 media="(max-width:320px)" 1922 loading="lazy" 1923 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_320x.webp?v=1775672677, //roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_320x@2x.webp?v=1775672677 2x" 1924 /><source 1925 data-w=""375x"" 1926 media="(max-width:375px)" 1927 loading="lazy" 1928 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_375x.webp?v=1775672677, //roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_375x@2x.webp?v=1775672677 2x" 1929 /><source 1930 data-w=""500x"" 1931 media="(max-width:500px)" 1932 loading="lazy" 1933 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_500x.webp?v=1775672677, //roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_500x@2x.webp?v=1775672677 2x" 1934 /><source 1935 media="(min-width:500px)" 1936 loading="lazy" 1937 srcset="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_750x.webp?v=1775672677, //roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_750x@2x.webp?v=1775672677 2x" 1938 /><img 1939 loading="eager" 1940 1941 src="//roseskinco.com/cdn/shop/files/ROSE_SKIN_0468_copy_ab80f26c-6b9d-405d-aac4-ca2305a425a9_750x.webp?v=1775672677" 1942 width="750"alt="" 1943 class="c-newsletter__image is-mobile" 1944 1945 fetchpriority="high" 1946 /> 1947 </picture></div> 1948 </section>
1948<script src="//roseskinco.com/cdn/shop/t/797/assets/sections.newsletter.js?v=146237789252133973141788119783" type="text/javascript"></script>
1948 1949 1950</div> 1951 1952 1953 <!-- BEGIN sections: footer-group --> 1954<div id="shopify-section-sections--28346835239093__footer" class="shopify-section shopify-section-group-footer-group"> 1955<link href="//roseskinco.com/cdn/shop/t/797/assets/sections.footer.css?v=138605332406873465261788119753" rel="stylesheet" type="text/css" media="all" /> 1956 1957<footer class="footer c-footer color- gradient section-sections--28346835239093__footer-padding"><div class="footer__content-top page-width"><div 1958 class="c-footer__inner footer__blocks-wrapper grid grid--1-col grid--2-col grid--4-col-tablet " 1959 1960 ><div class="c-footer__logo-socials"> 1961 <div class="c-footer__logo"><svg 1962 width="244" height="32" 1963 viewBox="0 0 244 32" 1964 fill="none" 1965 xmlns="http://www.w3.org/2000/svg" 1966 role="presentation" 1967> 1968 <path d="M240.262 31.9564C238.194 31.9564 236.523 30.2974 236.523 28.2456C236.523 26.1937 238.194 24.5348 240.262 24.5348C242.329 24.5348 244 26.1937 244 28.2456C244 30.2974 242.329 31.9564 240.262 31.9564Z" fill="#1F1D24"/> 1969 <path d="M223.077 32C216.611 32 211.465 26.9795 211.465 20.4747C211.465 13.9699 216.611 8.94948 223.077 8.94948C229.542 8.94948 234.733 13.9699 234.733 20.4747C234.733 26.9795 229.542 32 223.077 32ZM223.077 26.4993C226.464 26.4993 229.059 24.0109 229.059 20.4747C229.059 16.9386 226.464 14.4502 223.077 14.4502C219.734 14.4502 217.139 16.9386 217.139 20.4747C217.139 24.0109 219.734 26.4993 223.077 26.4993Z" fill="#1F1D24"/> 1970 <path d="M195.776 32C186.452 32 179.766 25.015 179.766 16.1091C179.766 7.15958 186.452 0.218231 195.776 0.218231C201.406 0.218231 206.376 3.05589 209.015 7.42152L203.781 10.4338C202.286 7.72711 199.295 6.06817 195.776 6.06817C189.75 6.06817 185.792 10.2155 185.792 16.1091C185.792 21.9591 189.75 26.1064 195.776 26.1064C199.295 26.1064 202.33 24.4475 203.781 21.7844L209.015 24.7967C206.42 29.1623 201.45 32 195.776 32Z" fill="#1F1D24"/> 1971 <path d="M167.752 8.94948C172.415 8.94948 176.065 12.18 176.065 17.9863V31.3888H170.391V18.6848C170.391 15.7162 168.588 14.1882 166.037 14.1882C163.266 14.1882 161.199 15.8035 161.199 19.6016V31.3888H155.525V9.56067H161.199V12.0054C162.518 10.0409 164.805 8.94948 167.752 8.94948Z" fill="#1F1D24"/> 1972 <path d="M147.473 6.94135C145.581 6.94135 143.998 5.36972 143.998 3.4925C143.998 1.61528 145.581 0 147.473 0C149.408 0 150.991 1.61528 150.991 3.4925C150.991 5.36972 149.408 6.94135 147.473 6.94135ZM144.658 31.3889V9.56073H150.332V31.3889H144.658Z" fill="#1F1D24"/> 1973 <path d="M141.826 31.3889H135.228L127.223 21.4789V31.3889H121.549V0.829483H127.223V19.1651L134.788 9.56074H141.562L132.721 20.3438L141.826 31.3889Z" fill="#1F1D24"/> 1974 <path d="M106.682 32C100.393 32 96.2583 28.9877 94.5869 24.4475L99.7769 21.4352C100.877 24.2728 103.032 26.1064 106.858 26.1064C110.509 26.1064 111.784 24.5784 111.784 22.8758C111.784 20.6057 109.717 19.7326 105.143 18.4229C100.437 17.0696 95.8624 15.105 95.8624 9.29874C95.8624 3.53611 100.701 0.218231 105.979 0.218231C111.037 0.218231 114.907 2.79395 116.974 7.07227L111.872 9.99724C110.773 7.68345 109.101 6.06817 105.979 6.06817C103.428 6.06817 101.932 7.37786 101.932 9.12411C101.932 11.0013 103.12 12.0054 107.782 13.4024C112.664 14.9304 117.854 16.5457 117.854 22.7885C117.854 28.5075 113.236 32 106.682 32Z" fill="#1F1D24"/> 1975 <path d="M76.0032 22.7885C76.7949 25.6698 79.214 26.8922 82.2048 26.8922C84.404 26.8922 86.1633 25.9754 87.131 24.7094L91.7052 27.3288C89.638 30.2974 86.3393 32 82.1169 32C74.7277 32 70.0654 26.9795 70.0654 20.4747C70.0654 13.9699 74.7716 8.94948 81.677 8.94948C88.1866 8.94948 92.8048 14.0573 92.8048 20.4747C92.8048 21.3042 92.7169 22.0464 92.5849 22.7885H76.0032ZM75.9152 18.4229H87.131C86.4272 15.2796 84.0521 14.0136 81.677 14.0136C78.6422 14.0136 76.575 15.6289 75.9152 18.4229Z" fill="#1F1D24"/> 1976 <path d="M56.5131 15.7599C56.5131 18.9904 67.8608 16.9822 67.8608 25.015C67.8608 29.7299 63.7264 32 59.0202 32C54.6219 32 51.3671 30.1664 49.7837 26.8049L54.7098 24.0545C55.3256 25.8445 56.821 26.8922 59.0202 26.8922C60.8235 26.8922 62.055 26.281 62.055 25.015C62.055 21.8281 50.7073 23.5743 50.7073 15.8908C50.7073
197611.4379 54.5339 8.94948 59.0642 8.94948C62.6268 8.94948 65.7057 10.5648 67.421 13.577L62.5828 16.1964C61.9231 14.7994 60.6916 13.9699 59.0642 13.9699C57.6567 13.9699 56.5131 14.5811 56.5131 15.7599Z" fill="#1F1D24"/> 1977 <path d="M36.1048 32C29.6392 32 24.4932 26.9795 24.4932 20.4747C24.4932 13.9699 29.6392 8.94948 36.1048 8.94948C42.5703 8.94948 47.7604 13.9699 47.7604 20.4747C47.7604 26.9795 42.5703 32 36.1048 32ZM36.1048 26.4993C39.4915 26.4993 42.0865 24.0109 42.0865 20.4747C42.0865 16.9386 39.4915 14.4502 36.1048 14.4502C32.762 14.4502 30.167 16.9386 30.167 20.4747C30.167 24.0109 32.762 26.4993 36.1048 26.4993Z" fill="#1F1D24"/> 1978 <path d="M16.8896 31.3889L10.688 20.7804H6.0697V31.3889H0V0.829483H12.3153C17.9892 0.829483 22.5635 5.36974 22.5635 10.9577C22.5635 14.7995 20.1444 18.2483 16.6257 19.8636L23.4431 31.3889H16.8896ZM6.0697 6.46114V15.498H12.3153C14.6025 15.498 16.4938 13.4898 16.4938 10.9577C16.4938 8.42568 14.6025 6.46114 12.3153 6.46114H6.0697Z" fill="#1F1D24"/> 1979</svg> 1980</div> 1981 1982 <div class="c-footer__socials"> 1983 1984 <a 1985 href="https://www.instagram.com/roseskinco/" 1986 class="c-footer__social" 1987 title=Instagram><img 1988 src="//roseskinco.com/cdn/shop/t/797/assets/icon-instagram.svg?v=83553628626975025991788119659" 1989 alt="" 1990 1991 role="presentation" 1992 1993 width="32" 1994 height="32" 1995 class="o-icon o-icon--instagram c-footer__social-icon" 1996 loading="lazy" 1997/> 1998</a> 1999 2000 <a 2001 href="https://www.facebook.com/roseskinco" 2002 class="c-footer__social" 2003 title=Facebook><img 2004 src="//roseskinco.com/cdn/shop/t/797/assets/icon-facebook.svg?v=30612893353230315221788119658" 2005 alt="" 2006 2007 role="presentation" 2008 2009 width="32" 2010 height="32" 2011 class="o-icon o-icon--facebook c-footer__social-icon" 2012 loading="lazy" 2013/> 2014</a> 2015 2016 <a 2017 href="https://twitter.com/roseskinco" 2018 class="c-footer__social" 2019 title=Twitter><img 2020 src="//roseskinco.com/cdn/shop/t/797/assets/icon-twitter.svg?v=168993699533756135781788119674" 2021 alt="" 2022 2023 role="presentation" 2024 2025 width="32" 2026 height="32" 2027 class="o-icon o-icon--twitter c-footer__social-icon" 2028 loading="lazy" 2029/> 2030</a> 2031 2032 <a 2033 href="https://www.pinterest.com/roseskinco/" 2034 class="c-footer__social" 2035 title=Pinterest><img 2036 src="//roseskinco.com/cdn/shop/t/797/assets/icon-pinterest.svg?v=72527630185102154111788119664" 2037 alt="" 2038 2039 role="presentation" 2040 2041 width="32" 2042 height="32" 2043 class="o-icon o-icon--pinterest c-footer__social-icon" 2044 loading="lazy" 2045/> 2046</a> 2047 2048 <a 2049 href="https://www.tiktok.com/@roseskinco" 2050 class="c-footer__social" 2051 title=Tiktok><img 2052 src="//roseskinco.com/cdn/shop/t/797/assets/icon-tiktok.svg?v=58351338697783154151788119673" 2053 alt="" 2054 2055 role="presentation" 2056 2057 width="32" 2058 height="32" 2059 class="o-icon o-icon--tiktok c-footer__social-icon" 2060 loading="lazy" 2061/> 2062</a></div><div class="c-footer__address is-desktop"><p>RoseSkinCo Inc.<br/>2093 Philadelphia Pike #3577<br/>Claymont, DE, 19703</p><p>Contact: [email protected]</p><p>Support: [email protected]</p><p>Collabs/PR: [email protected]</p></div></div> 2063 2064 <div class="c-footer__menu is-initialised"><div 2065 class="item-1 footer-block grid__item footer-block--menu link_list" 2066 2067 2068 > 2069 2070 2071 2072 2073 2074 2075 2076 <details class="c-footer__menu-column"> 2077 <summary class="c-footer__heading o-subheading"> 2078 2079Learn 2080 </summary> 2081 2082 2083<ul class="footer-block__details-content list-unstyled c-footer__links"><li class="c-footer__menu-item"> 2084 <a 2085 href="/pages/faqs" 2086 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2087 > 2088 FAQs 2089 </a> 2090 </li><li class="c-footer__menu-item"> 2091 <a 2092 href="/blogs/news" 2093 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2094 > 2095 Blog 2096 </a> 2097 </li><li class="c-footer__menu-item"> 2098 <a 2099 href="/pages/reviews" 2100 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2101 > 2102 Reviews 2103 </a> 2104 </li><li class="c-footer__menu-item"> 2105 <a 2106 href="/pages/about-us" 2107 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2108 > 2109 About Us 2110 </a> 2111 </li><li class="c-footer__menu-item"> 2112 <a 2113 href="/blogs/beauty-hacks" 2114 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2115 > 2116 Beauty Hacks 2117 </a> 2118 </li></ul> 2119 </details> 2120 2121 </div><div 2122 class="item-2 footer-block grid__item footer-block--menu link_list" 2123 2124 2125 > 2126 2127 2128 2129 2130 2131 2132 2133 <details class="c-footer__menu-column"> 2134 <summary class="c-footer__heading o-subheading"> 2135 2136Support 2137 </summary> 2138 2139 2140<ul class="footer-block__details-content list-unstyled c-footer__links"><li class="c-footer__menu-item"> 2141 <a 2142 href="/pages/contact-us" 2143 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2144 > 2145 Contact Us 2146 </a> 2147 </li><li class="c-footer__menu-item"> 2148 <a 2149 href="/policies/terms-of-service" 2150 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2151 > 2152 T&C's 2153 </a> 2154 </li><li class="c-footer__menu-item"> 2155 <a 2156 href="/policies/privacy-policy" 2157 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2158 > 2159 Privacy Policy 2160 </a> 2161 </li><li class="c-footer__menu-item"> 2162 <a 2163 href="https://roseskinco.grin.live/" 2164 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2165 > 2166 Collab With Us 2167 </a> 2168 </li><li class="c-footer__menu-item"> 2169 <a 2170 href="/pages/accessibility-statement" 2171 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2172 > 2173 Accessibility Statement 2174 </a> 2175 </li><li class="c-footer__menu-item"> 2176 <a 2177 href="/pages/cookie-preferences" 2178 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2179 > 2180 Cookie preferences 2181 </a> 2182 </li></ul> 2183 </details> 2184 2185 </div><div class="footer-block-group grid__item"><div 2186 class="item-3 footer-block grid__item footer-block--menu link_list" 2187 2188 2189 > 2190 2191 2192 2193 2194 2195 2196 2197 <details class="c-footer__menu-column"> 2198 <summary class="c-footer__heading o-subheading"> 2199 2200Shipping & Returns 2201 </summary> 2202 2203 2204<ul class="footer-block__details-content list-unstyled c-footer__links"><li class="c-footer__menu-item"> 2205 <a 2206 href="/apps/tracktor/track" 2207 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2208 > 2209 Track Order 2210 </a> 2211 </li><li class="c-footer__menu-item"> 2212 <a 2213 href="/pages/shipping-details" 2214 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2215 > 2216 Shipping Details 2217 </a> 2218 </li><li class="c-footer__menu-item"> 2219 <a 2220 href="/pages/satisfaction-guarantee-form" 2221 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2222 > 2223 Product Satisfaction Form 2224 </a> 2225 </li><li class="c-footer__menu-item"> 2226 <a 2227 href="/pages/product-defect-form" 2228 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2229 > 2230 Product Defect Form 2231 </a> 2232 </li><li class="c-footer__menu-item"> 2233 <a 2234 href="https://roseskinco.com/pages/roseskinco-90-day-money-back-guarantee" 2235 class="c-footer__menu-link link link--text list-menu__item list-menu__item--link" 2236 > 2237 90 Day Policy 2238 </a> 2239 </li></ul> 2240 </details> 2241 2242 </div></div><div class="c-footer__address is-mobile"><p>RoseSkinCo Inc.<br/>2093 Philadelphia Pike #3577<br/>Claymont, DE, 19703</p><p>Contact: [email protected]</p><p>Support: [email protected]</p><p>Collabs/PR: [email protected]</p></div></div></div><div
2243 class="c-footer__bottom footer__content-bottom" 2244 2245 > 2246 <div class="bottom-wrapper-group page-width"> 2247 <div class="footer__content-bottom-wrapper "> 2248 <div class="footer__copyright caption"> 2249 <small class="copyright__content c-footer__copyright">© RoseSkinCo 2026</small> 2250 2251 </div> 2252 </div> 2253 </div> 2254 </div> 2255</footer>
2256<script> 2257 document.addEventListener("DOMContentLoaded", function () { 2258 function toggleFooterDetails() { 2259 const detailsElements = document.querySelectorAll(".c-footer__menu-column"); 2260 2261 if (detailsElements.length === 0) return; 2262 2263 detailsElements.forEach((detail) => { 2264 const summary = detail.querySelector("summary"); 2265 if (window.innerWidth > 1199) { 2266 summary.setAttribute("inert", ""); 2267 detail.setAttribute("open", "true"); 2268 } else { 2269 summary.removeAttribute("inert"); 2270 detail.removeAttribute("open"); 2271 } 2272 }); 2273 } 2274 2275 toggleFooterDetails(); 2276 2277 window.addEventListener("resize", toggleFooterDetails); 2278}); 2279 2280</script>
2280 2281 2282</div> 2283<!-- END sections: footer-group --> 2284 2285 2286 </div>
2286<script type="text/javascript"> 2287 window.Asset = "\/\/roseskinco.com\/cdn\/shop\/t\/797\/assets\/layout.theme.js?v=96376"; 2288 2289 window.Customer = null; 2290 2291 window.Language = window.Language || {}; 2292 window.Language.strings = window.Language.strings || {}; 2293 2294 window.Cart = window.Cart || {}; 2295 window.Cart.data = window.Cart.data || {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}; 2296 2297 window.Currency = window.Currency || {}; 2298 window.Currency.currency = "USD"; 2299 window.Currency.format = "${{ amount_no_decimals }}"; 2300 window.Currency.convertedFormat = null; 2301</script>
vendor: 1 bytes, line 2301
2301
2302<script type="text/javascript" data-language-strings> 2303 var a = function(k,v) {((window.Language=window.Language||{}).strings=window.Language.strings||{})[k]=v;};</script>
vendor: 1 bytes, line 2303
2303
2304<script async type="text/javascript" id="stamped-script-widget" data-api-key="pubkey-dChOv47b2V8KFN853TE6iFi1tbD1z9" 2305 src="https://cdn1.stamped.io/files/widget.min.js"></script>
2305 2306
2306<script src="https://js.afterpay.com/afterpay-1.x.js" id="afterpay-placement-script" data-min="1" data-max="1000" data-locale="en_US" data-modal-id="en_US" data-currency="USD" data-amount="269.95" data-payment-amount-is-bold="true" data-size="sm" data-logo-type="compact-badge" data-intro-text="Make" async></script>
vendor: 1 bytes, line 2306
2306
2307<script src="//roseskinco.com/cdn/shop/t/797/assets/vendor.js?v=49563029207634492961788119852" type="text/javascript"></script>
2307<script src="//roseskinco.com/cdn/shop/t/797/assets/layouts.theme.js?v=20843576160299176961788119681" type="text/javascript"></script>
2307<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"RoseSkinCo.","url":"https://roseskinco.com","logo":"https://roseskinco.com/cdn/shop/files/Updated_Logo_Black_4.png?v=1762061283","sameAs":["https://www.instagram.com/roseskinco/","https://www.facebook.com/roseskinco","https://twitter.com/roseskinco","https://www.pinterest.com/roseskinco/"]}</script>
2307<div id="shopify-section-swatch-theme-editor" class="shopify-section"> 2308 2309<style type="text/css">.s-swatch--rose,.s-swatch--rose-gold 2310 { 2311 background-color: #ed74a3; 2312 color: #ed74a3;background-image: url('//roseskinco.com/cdn/shop/files/[email protected]?v=1658762063'); 2313 background-size: 150%; 2314 background-position: center; 2315 background-repeat: no-repeat;}.s-swatch--rose .o-swatch__inner-color,.s-swatch--rose-gold 2316 .o-swatch__inner-color{}.s-swatch--gold,.s-swatch--white-gold 2317 { 2318 background-color: #ffffff; 2319 color: #ffffff;background-image: url('//roseskinco.com/cdn/shop/files/WhiteColorSwatch_3d44f513-a304-4c3e-ba0e-8c1da1613536_256x@2x.jpg?v=1658771152'); 2320 background-size: 150%; 2321 background-position: center; 2322 background-repeat: no-repeat;}.s-swatch--gold .o-swatch__inner-color,.s-swatch--white-gold 2323 .o-swatch__inner-color{}.s-swatch--pearl-white-gold 2324 { 2325 background-color: ; 2326 color: ;background-image: url('//roseskinco.com/cdn/shop/files/[email protected]?v=1675119062'); 2327 background-size: 150%; 2328 background-position: center; 2329 background-repeat: no-repeat;}.s-swatch--pearl-white-gold 2330 .o-swatch__inner-color{}</style> 2331
2332<script type="text/javascript"> 2333 window.Swatches = window.Swatches || [{ 2334 "name": "Rose Gold", 2335 "color": "#ed74a3", 2336 "handles": ["rose"] 2337 },{ 2338 "name": "White Gold", 2339 "color": "#ffffff", 2340 "handles": ["gold"] 2341 },{ 2342 "name": "Pearl White Gold", 2343 "color": "", 2344 "handles": [] 2345 }]; 2346</script>
2346 2347 2348 2349</div>
2349<script type="application/ld+json"> 2350 { 2351 "@context": "https://schema.org", 2352 "@type": "WebSite", 2353 "name": "RoseSkinCo.", 2354 "url": "https://roseskinco.com", 2355 2356 } 2357</script>
2357 2358 2359 2360
2360<script type="application/ld+json"> 2361 { 2362 "@context": "https://schema.org", 2363 "@type": "BreadcrumbList", 2364 "itemListElement": [{ 2365 "@type": "ListItem", 2366 "position": 1, 2367 "name": "Home", 2368 "item": "https://roseskinco.com" 2369 }] 2370 } 2371 </script>
2371 2372 2373 2374
2374<script type="text/javascript"> 2375 var _learnq = _learnq || []; 2376 var classname = document.getElementsByClassName("c-product__add-btn o-btn is-atc"); 2377 var addToCart = function() { 2378 _learnq.push(['track', 'Added to Cart', item]); 2379 }; for (var i = 0; i < classname.length; i++) { 2380 classname[i].addEventListener('click', addToCart, false); 2381 } 2382 </script>
2382 2383 2384
2384<script>function myInit(){ StampedFn.init({ apiKey: 'pubkey-dChOv47b2V8KFN853TE6iFi1tbD1z9', storeUrl: '92408' }); }</script>
2384 2385 2386
2386<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
2386 2387 <style> 2388 .stamped-proxy-write img, .stamped-proxy-write-title { 2389 width:auto !important; 2390 display:none; 2391 } 2392 .stamped-proxy-write .form-control .paragraph, .stamped-proxy-write div.description p{ 2393 max-width: 1000px; 2394 margin: auto; 2395 text-align:left; 2396 } 2397 .stamped-proxy-write .form-control .paragraph p, .stamped-proxy-write div.description p{ 2398 margin:15px !important; 2399 } 2400 @media only screen and (min-width: 1027px) { 2401 .stamped-proxy-write div.description p em { 2402 margin-left:15px; 2403 } 2404 } 2405 </style> 2406 2407 2408
2408<script> 2409 document.addEventListener("DOMContentLoaded", function() { 2410 $(document).ready(function(){ 2411 var urlParams = new URLSearchParams(window.location.search); 2412 if (urlParams != 'product=lumi-ipl-hair-removal-handset') { 2413 $( ".stamped-proxy-write img" ).toggle(); 2414 } else { 2415 $("body").append('<style>.stamped-proxy-write div[align="center"] div div div.header:before {content: "Lumi";font-size: 2.875rem;font-weight: 700;line-height: 1.39;margin-top:15px;} .header {margin-top:7em;} @media only screen and (max-width: 749px) {h2.stamped-proxy-write-title {display:none;} .header {margin-top:0em;} }</style>'); 2416 } 2417 }); 2418 }); 2419 </script>
2419 2420 <!-- Failed to render app block "17676059084223943535": app block path "shopify://apps/triplewhale/blocks/triple_pixel_snippet/483d496b-3f1a-4609-aea7-8eee3b6b7a2a" does not exist --><div id="shopify-block-AeWtjZE1LT2Irb3pva__7079518687644006178" class="shopify-block shopify-app-block">
2420<script> 2421 (function () { 2422 const cartAttributes = {}; 2423 2424 // Helper function to retrieve the UTM from Url 2425 function getUTMFromUrl() { 2426 const url_string = window.location.href; 2427 const url = new URL(url_string); 2428 2429 const utm_id = url.searchParams.get("utm_id"); 2430 const utm_source = url.searchParams.get("utm_source"); 2431 const utm_medium = url.searchParams.get("utm_medium"); 2432 const utm_campaign = url.searchParams.get("utm_campaign"); 2433 const utm_term = url.searchParams.get("utm_term"); 2434 const ref = url.searchParams.get("ref"); 2435 2436 if (!utm_id && !utm_source && !utm_medium && !utm_campaign && !ref) { 2437 return null; 2438 } 2439 2440 let utmParameters = {}; 2441 2442 if (utm_id) { 2443 utmParameters.utm_id = utm_id; 2444 } 2445 if (utm_source) { 2446 utmParameters.utm_source = utm_source; 2447 } 2448 if (utm_medium) { 2449 utmParameters.utm_medium = utm_medium; 2450 } 2451 if (utm_campaign) { 2452 utmParameters.utm_campaign = utm_campaign; 2453 } 2454 if (utm_term) { 2455 utmParameters.utm_term = utm_term; 2456 } 2457 if (ref) { 2458 utmParameters.ref = ref; 2459 } 2460 2461 2462 return Object.keys(utmParameters).length === 0 2463 ? null 2464 : utmParameters; 2465 } 2466 2467 // Helper function to retrieve the UTM from Cookie 2468 function getUTMAttributes() { 2469 const urlUtmParams = getUTMFromUrl(); 2470 2471 if (urlUtmParams) { 2472 return urlUtmParams; 2473 } 2474 2475 // No longer reading from deprecated Shopify cookies 2476 return undefined; 2477 } 2478 2479 function saveUtmParameters() { 2480 const utmParams = getUTMAttributes(); 2481 if (utmParams) { 2482 const cartHasUtmAttributes = Object.keys(cartAttributes).find(attributeKey => attributeKey.startsWith("utm_") || attributeKey === "ref"); 2483 if (cartHasUtmAttributes) { 2484 // Don't call API if it already contains our UTM parameters 2485 return; 2486 } 2487 2488 // Handle both Shopify.routes.root and routes.root_url for better compatibility 2489 var rootUrl = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) 2490 || (window.routes && window.routes.root_url) 2491 || '/'; 2492 2493 var updateCart = fetch(rootUrl + 'cart/update.js', 2494 { 2495 headers: { 2496 'Content-Type': 'application/json', 2497 }, 2498 method: "POST", 2499 body: JSON.stringify({ 2500 attributes: { 2501 ...utmParams 2502 }, 2503 }) 2504 }) 2505 .then(response => response.json()) 2506 .then(data => { 2507 return data 2508 }); 2509 } 2510 } 2511 2512 saveUtmParameters(); 2513 })(); 2514</script>
2514 2515 2516 2517 2518 2519</div>
2519<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2519 2520</body> 2521</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.