PageSourceSearch

https://roseskinco.com/search

html roseskinco.com collected 2026-10-03 21:19:43 UTC 328,493 bytes, 2,521 lines download raw bytes

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&&gt().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 &amp; skincare from RoseSkinCo. Easy-to-use IPL devices &amp; beautifully designed products. Free shipping. Love the skin you&#39;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 &amp; skincare from RoseSkinCo. Easy-to-use IPL devices &amp; beautifully designed products. Free shipping. Love the skin you&#39;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    &ndash; RoseSkinCo.</title><meta name="description" content="Shop professional at-home beauty devices &amp; skincare from RoseSkinCo. Easy-to-use IPL devices &amp; beautifully designed products. Free shipping. Love the skin you&#39;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 &amp; 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="&quot;320x&quot;"
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="&quot;375x&quot;"
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="&quot;500x&quot;"
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="&quot;750x&quot;"
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="&quot;1100x&quot;"
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="&quot;1650x&quot;"
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="&quot;2000x&quot;"
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="&quot;320x&quot;"
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="&quot;375x&quot;"
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="&quot;500x&quot;"
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&amp;C&#39;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.