1<!doctype html> 2<html class="js" lang="en"> 3 <head> 4
4<script> 5 var hash = window.location.hash; 6 7 if(hash == '#knicksxsonni') { 8 window.location.href = '/pages/knicksxsonni'; 9 } 10 </script>
10 11 12 13 <meta charset="utf-8"> 14 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 15 <meta name="viewport" content="width=device-width,initial-scale=1"> 16 <meta name="theme-color" content=""> 17 <link rel="canonical" href="https://sonniskin.com/blogs/light-reading"><link rel="icon" type="image/png" href="//sonniskin.com/cdn/shop/files/SONNI_Favicon.png?crop=center&height=32&v=1757719778&width=32"><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><link rel="stylesheet" href="https://use.typekit.net/lun4wfp.css"> 18 <link rel="preconnect" href="https://fonts.googleapis.com"> 19 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 20 <link href="https://fonts.googleapis.com/css2?family=Manrope:[email protected]&display=swap" rel="stylesheet"> 21 22 <link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet"> 23
23<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
23 24 25
25<script type="text/javascript"> 26 document.addEventListener('DOMContentLoaded', function(){ 27 AOS.init( 28 { duration: 750 } 29 ); 30 }); 31 window.addEventListener('load', () => { 32 AOS.refresh(); 33 }); 34 </script>
34 35 36 <title> 37 Light Reading 38 – SONNI</title> 39 40 41 <meta name="description" content="From SPF myths to skincare habits, Light Reading covers everything you need to know about sunscreen, skin health, and making sun protection second nature."> 42 43 44 45 46<meta property="og:site_name" content="SONNI"> 47<meta property="og:url" content="https://sonniskin.com/blogs/light-reading"> 48<meta property="og:title" content="Light Reading"> 49<meta property="og:type" content="website"> 50<meta property="og:description" content="From SPF myths to skincare habits, Light Reading covers everything you need to know about sunscreen, skin health, and making sun protection second nature."><meta property="og:image" content="http://sonniskin.com/cdn/shop/files/Final-Kia_MG_0087_433884e8-b7fd-4e7b-aafc-dd63ed9375af.jpg?v=1759268333"> 51 <meta property="og:image:secure_url" content="https://sonniskin.com/cdn/shop/files/Final-Kia_MG_0087_433884e8-b7fd-4e7b-aafc-dd63ed9375af.jpg?v=1759268333"> 52 <meta property="og:image:width" content="1799"> 53 <meta property="og:image:height" content="1200"><meta name="twitter:card" content="summary_large_image"> 54<meta name="twitter:title" content="Light Reading"> 55<meta name="twitter:description" content="From SPF myths to skincare habits, Light Reading covers everything you need to know about sunscreen, skin health, and making sun protection second nature."> 56 57 58
58<script src="//sonniskin.com/cdn/shop/t/13/assets/constants.js?v=132983761750457495441782903944" defer="defer"></script>
58 59
59<script src="//sonniskin.com/cdn/shop/t/13/assets/pubsub.js?v=25310214064522200911782903944" defer="defer"></script>
59 60
60<script src="//sonniskin.com/cdn/shop/t/13/assets/global.js?v=184345515105158409801782903944" defer="defer"></script>
60 61
61<script src="//sonniskin.com/cdn/shop/t/13/assets/details-disclosure.js?v=13653116266235556501782903944" defer="defer"></script>
61 62
62<script src="//sonniskin.com/cdn/shop/t/13/assets/details-modal.js?v=25581673532751508451782903944" defer="defer"></script>
62 63
63<script src="//sonniskin.com/cdn/shop/t/13/assets/search-form.js?v=133129549252120666541782903944" defer="defer"></script>
63 64 65
65<script src="//sonniskin.com/cdn/shop/t/13/assets/sonniskin.js?v=144715079907636132991783987995" defer="defer"></script>
65<script src="//sonniskin.com/cdn/shop/t/13/assets/animations.js?v=88693664871331136111782903944" defer="defer"></script>
65<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
65<meta name="facebook-domain-verification" content="ux3kqd6gcwucah1xc2uk8io0qr0tq5"> 66<meta name="google-site-verification" content="_3FSyKcnOwK0ICwfWia0BvUro9RhZKBBazcdtmeOmXY"> 67<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/93059612988/digital_wallets/dialog"> 68<meta id="in-context-paypal-metadata" data-shop-id="93059612988" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 69<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/blogs/light-reading.atom" /> 70<link rel="next" href="/blogs/light-reading?page=2">
71<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
71 72<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
73<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=93059612988" crossorigin="anonymous"></script>
vendor: 1 bytes, line 73
73
74<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":93059612988,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/93059612988","merchantName":"SONNI","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","discover","amex","elo","jcb"],"total":{"type":"pending","label":"SONNI","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 74
74
75<script id="shopify-features" type="application/json">{"accessToken":"53e629437459c5412a98223279ff1f7a","betas":["rich-media-storefront-analytics"],"domain":"sonniskin.com","predictiveSearch":true,"shopId":93059612988,"locale":"en"}</script>
vendor: 1 bytes, line 75
75
76<script>var Shopify = Shopify || {}; 77Shopify.shop = "uijg2k-cd.myshopify.com"; 78Shopify.locale = "en"; 79Shopify.currency = {"active":"USD","rate":"1.0"}; 80Shopify.country = "US"; 81Shopify.theme = {"name":"SonniSkin-2026","id":186690437436,"schema_name":"Dawn","schema_version":"15.3.0","theme_store_id":887,"role":"main"}; 82Shopify.theme.handle = "null"; 83Shopify.theme.style = {"id":null,"handle":null}; 84Shopify.cdnHost = "sonniskin.com/cdn"; 85Shopify.routes = Shopify.routes || {}; 86Shopify.routes.root = "/"; 87Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 88Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 89Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 90Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 90
90
91<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 91
91
92<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 92
92
93<script> 94 window.ShopifyPay = window.ShopifyPay || {}; 95 window.ShopifyPay.apiHost = "shop.app\/pay"; 96 window.ShopifyPay.redirectState = null; 97</script>
vendor: 1 bytes, line 97
97
98<script> 99 window.Shopify = window.Shopify || {}; 100 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 101 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 102 window.Shopify.SignInWithShop.eligible = true; 103</script>
vendor: 1 bytes, line 103
103
104<script id="shop-js-analytics" type="application/json">{"pageType":"blog"}</script>
vendor: 1 bytes, line 104
104
105<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 105
105
106<script type="module"> 107 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 108 109 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 110 111</script>
vendor: 1 bytes, line 111
111
112<script> 113 window.Shopify = window.Shopify || {}; 114 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 115 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"]}; 116</script>
vendor: 1 bytes, line 116
116
117<script>(function() { 118 var isLoaded = false; 119 function asyncLoad() { 120 if (isLoaded) return; 121 isLoaded = true; 122 var urls = ["https:\/\/cdn.nfcube.com\/instafeed-6e4bbf520adb7389bfd70f6e616a5ebb.js?shop=uijg2k-cd.myshopify.com","https:\/\/scrollio.bysimpli.com\/public\/scroll.js?shop=uijg2k-cd.myshopify.com","https:\/\/quiz.prehook.com\/ph-script.js?shop=uijg2k-cd.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=uijg2k-cd.myshopify.com","https:\/\/dr4qe3ddw9y32.cloudfront.net\/awin-shopify-integration-code.js?aid=121804\u0026v=shopifyApp_5.4.0\u0026ts=1773837356380\u0026shop=uijg2k-cd.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=uijg2k-cd.myshopify.com"]; 123 for (var i = 0; i < urls.length; i++) { 124 var s = document.createElement('script'); 125 s.type = 'text/javascript'; 126 s.async = true; 127 s.src = urls[i]; 128 var x = document.getElementsByTagName('script')[0]; 129 x.parentNode.insertBefore(s, x); 130 } 131 }; 132 if(window.attachEvent) { 133 window.attachEvent('onload', asyncLoad); 134 } else { 135 window.addEventListener('load', asyncLoad, false); 136 } 137})();</script>
vendor: 1 bytes, line 137
137
138<script id="__st">var __st={"a":93059612988,"offset":-14400,"reqid":"5ba1346c-72da-45b2-9784-9262fd9f6ab6-1791444212","pageurl":"sonniskin.com\/blogs\/light-reading","s":"blogs-115834749244","u":"a05931f01096","p":"blog","rtyp":"blog","rid":115834749244};</script>
vendor: 1 bytes, line 138
138
139<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 139
139
140<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 140
140
141<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//sonniskin.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 141
141
142<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 = "//sonniskin.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>
142<script crossorigin="anonymous" defer="defer" src="//sonniskin.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 142
142
143<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 143
143
144<script> 145 window.Shopify = window.Shopify || {}; 146 window.Shopify.MCP = window.Shopify.MCP || {}; 147 window.Shopify.MCP.enabled = true; 148 window.Shopify.MCP.shop = "uijg2k-cd.myshopify.com"; 149 window.Shopify.MCP.mcpEndpoint = "https:\/\/sonniskin.com\/api\/mcp"; 150 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 151</script>
vendor: 1 bytes, line 151
151
152<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("\/\/sonniskin.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 153</script>
vendor: 1 bytes, line 153
153
154<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://sonniskin.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 155</script>
vendor: 1 bytes, line 155
155
156<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 157 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); 158</script>
vendor: 1 bytes, line 158
158
159<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})}})); 160</script>
160 161<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://sonniskin.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 162<style id="shopify-accelerated-checkout-cart"> 163 #shopify-buyer-consent { 164 margin-top: 1em; 165 display: inline-block; 166 width: 100%; 167} 168 169#shopify-buyer-consent.hidden { 170 display: none; 171} 172 173#shopify-subscription-policy-button { 174 background: none; 175 border: none; 176 padding: 0; 177 text-decoration: underline; 178 font-size: inherit; 179 cursor: pointer; 180} 181 182#shopify-subscription-policy-button::before { 183 box-shadow: none; 184} 185 186 </style>
187<script id="sections-script" data-sections="header" defer="defer" src="//sonniskin.com/cdn/shop/t/13/compiled_assets/scripts.js?v=88919188992105642401787674729"></script>
vendor: 1 bytes, line 187
187
188<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
188 189 190 191 <style data-shopify> 192 @font-face { 193 font-family: Assistant; 194 font-weight: 400; 195 font-style: normal; 196 font-display: swap; 197 src: url("//sonniskin.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2") format("woff2"), 198 url("//sonniskin.com/cdn/fonts/assistant/assistant_n4.6e9875ce64e0fefcd3f4446b7ec9036b3ddd2985.woff") format("woff"); 199} 200 201 @font-face { 202 font-family: Assistant; 203 font-weight: 700; 204 font-style: normal; 205 font-display: swap; 206 src: url("//sonniskin.com/cdn/fonts/assistant/assistant_n7.bf44452348ec8b8efa3aa3068825305886b1c83c.woff2") format("woff2"), 207 url("//sonniskin.com/cdn/fonts/assistant/assistant_n7.0c887fee83f6b3bda822f1150b912c72da0f7b64.woff") format("woff"); 208} 209 210 211 212 @font-face { 213 font-family: Assistant; 214 font-weight: 400; 215 font-style: normal; 216 font-display: swap; 217 src: url("//sonniskin.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2") format("woff2"), 218 url("//sonniskin.com/cdn/fonts/assistant/assistant_n4.6e9875ce64e0fefcd3f4446b7ec9036b3ddd2985.woff") format("woff"); 219} 220 221 222 223 :root, 224 .color-scheme-1 { 225 --color-background: 255,255,255; 226 227 --gradient-background: #ffffff; 228 229 230 231 232 --color-foreground: 18,18,18; 233 --color-background-contrast: 191,191,191; 234 --color-shadow: 18,18,18; 235 --color-button: 18,18,18; 236 --color-button-text: 255,255,255; 237 --color-secondary-button: 255,255,255; 238 --color-secondary-button-text: 18,18,18; 239 --color-link: 18,18,18; 240 --color-badge-foreground: 18,18,18; 241 --color-badge-background: 255,255,255; 242 --color-badge-border: 18,18,18; 243 --payment-terms-background-color: rgb(255 255 255); 244 } 245 246 247 .color-scheme-2 { 248 --color-background: 243,243,243; 249 250 --gradient-background: #f3f3f3; 251 252 253 254 255 --color-foreground: 18,18,18; 256 --color-background-contrast: 179,179,179; 257 --color-shadow: 18,18,18; 258 --color-button: 18,18,18; 259 --color-button-text: 243,243,243; 260 --color-secondary-button: 243,243,243; 261 --color-secondary-button-text: 18,18,18; 262 --color-link: 18,18,18; 263 --color-badge-foreground: 18,18,18; 264 --color-badge-background: 243,243,243; 265 --color-badge-border: 18,18,18; 266 --payment-terms-background-color: rgb(243 243 243); 267 } 268 269 270 .color-scheme-3 { 271 --color-background: 36,40,51; 272 273 --gradient-background: #242833; 274 275 276 277 278 --color-foreground: 255,255,255; 279 --color-background-contrast: 47,52,66; 280 --color-shadow: 18,18,18; 281 --color-button: 255,255,255; 282 --color-button-text: 0,0,0; 283 --color-secondary-button: 36,40,51; 284 --color-secondary-button-text: 255,255,255; 285 --color-link: 255,255,255; 286 --color-badge-foreground: 255,255,255; 287 --color-badge-background: 36,40,51; 288 --color-badge-border: 255,255,255; 289 --payment-terms-background-color: rgb(36 40 51); 290 } 291 292 293 .color-scheme-4 { 294 --color-background: 18,18,18; 295 296 --gradient-background: #121212; 297 298 299 300 301 --color-foreground: 255,255,255; 302 --color-background-contrast: 146,146,146; 303 --color-shadow: 18,18,18; 304 --color-button: 255,255,255; 305 --color-button-text: 18,18,18; 306 --color-secondary-button: 18,18,18; 307 --color-secondary-button-text: 255,255,255; 308 --color-link: 255,255,255; 309 --color-badge-foreground: 255,255,255; 310 --color-badge-background: 18,18,18; 311 --color-badge-border: 255,255,255; 312 --payment-terms-background-color: rgb(18 18 18); 313 } 314 315 316 .color-scheme-5 { 317 --color-background: 51,79,180; 318 319 --gradient-background: #334fb4; 320 321 322 323 324 --color-foreground: 255,255,255; 325 --color-background-contrast: 23,35,81; 326 --color-shadow: 18,18,18; 327 --color-button: 255,255,255; 328 --color-button-text: 51,79,180; 329 --color-secondary-button: 51,79,180; 330 --color-secondary-button-text: 255,255,255; 331 --color-link: 255,255,255; 332 --color-badge-foreground: 255,255,255; 333 --color-badge-background: 51,79,180; 334 --color-badge-border: 255,255,255; 335 --payment-terms-background-color: rgb(51 79 180); 336 } 337 338 339 .color-scheme-2bedb933-b8cc-4802-9efc-50185fd0bc6a { 340 --color-background: 255,255,255; 341 342 --gradient-background: #ffffff; 343 344 345 346 347 --color-foreground: 0,36,89; 348 --color-background-contrast: 191,191,191; 349 --color-shadow: 18,18,18; 350 --color-button: 0,36,89; 351 --color-button-text: 255,255,255; 352 --color-secondary-button: 255,255,255; 353 --color-secondary-button-text: 0,36,89; 354 --color-link: 0,36,89; 355 --color-badge-foreground: 0,36,89; 356 --color-badge-background: 255,255,255; 357 --color-badge-border: 0,36,89; 358 --payment-terms-background-color: rgb(255 255 255); 359 } 360 361 362 body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5, .color-scheme-2bedb933-b8cc-4802-9efc-50185fd0bc6a { 363 color: rgba(var(--color-foreground), 0.75); 364 background-color: rgb(var(--color-background)); 365 } 366 367 :root { 368 --font-body-family: Assistant, sans-serif; 369 --font-body-style: normal; 370 --font-body-weight: 400; 371 --font-body-weight-bold: 700; 372 373 --font-heading-family: Assistant, sans-serif; 374 --font-heading-style: normal; 375 --font-heading-weight: 400; 376 377 --font-body-scale: 1.0; 378 --font-heading-scale: 1.0; 379 380 --media-padding: px; 381 --media-border-opacity: 0.05; 382 --media-border-width: 1px; 383 --media-radius: 0px;
384 --media-shadow-opacity: 0.0; 385 --media-shadow-horizontal-offset: 0px; 386 --media-shadow-vertical-offset: 4px; 387 --media-shadow-blur-radius: 5px; 388 --media-shadow-visible: 0; 389 390 --page-width: 120rem; 391 --page-width-margin: 0rem; 392 393 --product-card-image-padding: 0.0rem; 394 --product-card-corner-radius: 0.0rem; 395 --product-card-text-alignment: left; 396 --product-card-border-width: 0.0rem; 397 --product-card-border-opacity: 0.1; 398 --product-card-shadow-opacity: 0.0; 399 --product-card-shadow-visible: 0; 400 --product-card-shadow-horizontal-offset: 0.0rem; 401 --product-card-shadow-vertical-offset: 0.4rem; 402 --product-card-shadow-blur-radius: 0.5rem; 403 404 --collection-card-image-padding: 0.0rem; 405 --collection-card-corner-radius: 0.0rem; 406 --collection-card-text-alignment: left; 407 --collection-card-border-width: 0.0rem; 408 --collection-card-border-opacity: 0.1; 409 --collection-card-shadow-opacity: 0.0; 410 --collection-card-shadow-visible: 0; 411 --collection-card-shadow-horizontal-offset: 0.0rem; 412 --collection-card-shadow-vertical-offset: 0.4rem; 413 --collection-card-shadow-blur-radius: 0.5rem; 414 415 --blog-card-image-padding: 0.0rem; 416 --blog-card-corner-radius: 0.0rem; 417 --blog-card-text-alignment: left; 418 --blog-card-border-width: 0.0rem; 419 --blog-card-border-opacity: 0.1; 420 --blog-card-shadow-opacity: 0.0; 421 --blog-card-shadow-visible: 0; 422 --blog-card-shadow-horizontal-offset: 0.0rem; 423 --blog-card-shadow-vertical-offset: 0.4rem; 424 --blog-card-shadow-blur-radius: 0.5rem; 425 426 --badge-corner-radius: 4.0rem; 427 428 --popup-border-width: 1px; 429 --popup-border-opacity: 0.1; 430 --popup-corner-radius: 0px; 431 --popup-shadow-opacity: 0.05; 432 --popup-shadow-horizontal-offset: 0px; 433 --popup-shadow-vertical-offset: 4px; 434 --popup-shadow-blur-radius: 5px; 435 436 --drawer-border-width: 1px; 437 --drawer-border-opacity: 0.1; 438 --drawer-shadow-opacity: 0.0; 439 --drawer-shadow-horizontal-offset: 0px; 440 --drawer-shadow-vertical-offset: 4px; 441 --drawer-shadow-blur-radius: 5px; 442 443 --spacing-sections-desktop: 0px; 444 --spacing-sections-mobile: 0px; 445 446 --grid-desktop-vertical-spacing: 8px; 447 --grid-desktop-horizontal-spacing: 8px; 448 --grid-mobile-vertical-spacing: 4px; 449 --grid-mobile-horizontal-spacing: 4px; 450 451 --text-boxes-border-opacity: 0.1; 452 --text-boxes-border-width: 0px; 453 --text-boxes-radius: 0px; 454 --text-boxes-shadow-opacity: 0.0; 455 --text-boxes-shadow-visible: 0; 456 --text-boxes-shadow-horizontal-offset: 0px; 457 --text-boxes-shadow-vertical-offset: 4px; 458 --text-boxes-shadow-blur-radius: 5px; 459 460 --buttons-radius: 0px; 461 --buttons-radius-outset: 0px; 462 --buttons-border-width: 1px; 463 --buttons-border-opacity: 1.0; 464 --buttons-shadow-opacity: 0.0; 465 --buttons-shadow-visible: 0; 466 --buttons-shadow-horizontal-offset: 0px; 467 --buttons-shadow-vertical-offset: 4px; 468 --buttons-shadow-blur-radius: 5px; 469 --buttons-border-offset: 0px; 470 471 --inputs-radius: 0px; 472 --inputs-border-width: 1px; 473 --inputs-border-opacity: 0.55; 474 --inputs-shadow-opacity: 0.0; 475 --inputs-shadow-horizontal-offset: 0px; 476 --inputs-margin-offset: 0px; 477 --inputs-shadow-vertical-offset: 4px; 478 --inputs-shadow-blur-radius: 5px; 479 --inputs-radius-outset: 0px; 480 481 --variant-pills-radius: 40px; 482 --variant-pills-border-width: 1px; 483 --variant-pills-border-opacity: 0.55; 484 --variant-pills-shadow-opacity: 0.0; 485 --variant-pills-shadow-horizontal-offset: 0px; 486 --variant-pills-shadow-vertical-offset: 4px; 487 --variant-pills-shadow-blur-radius: 5px; 488 } 489 490 *, 491 *::before, 492 *::after { 493 box-sizing: inherit; 494 } 495 496 html { 497 box-sizing: border-box; 498 font-size: calc(var(--font-body-scale) * 62.5%); 499 height: 100%; 500 } 501 502 body { 503 display: grid; 504 grid-template-rows: auto auto 1fr auto; 505 grid-template-columns: 100%; 506 min-height: 100%; 507 margin: 0; 508 font-size: 1.5rem; 509 /* letter-spacing: 0.06rem; */ 510 line-height: calc(1 + 0.8 / var(--font-body-scale)); 511 font-family: var(--font-body-family); 512 font-style: var(--font-body-style); 513 font-weight: var(--font-body-weight); 514 } 515 516 @media screen and (min-width: 750px) { 517 body { 518 font-size: 1.6rem; 519 } 520 } 521 </style> 522 523 <link href="//sonniskin.com/cdn/shop/t/13/assets/base.css?v=174645804478137458521785334759" rel="stylesheet" type="text/css" media="all" /> 524 <link href="//sonniskin.com/cdn/shop/t/13/assets/sonniskin.css?v=82089658717075846311787674568" rel="stylesheet" type="text/css" media="all" /> 525 <link rel="stylesheet" href="//sonniskin.com/cdn/shop/t/13/assets/component-cart-items.css?v=123238115697927560811782903944" media="print" onload="this.media='all'"> 526 <link rel="preload" as="font" href="//sonniskin.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2" type="font/woff2" crossorigin> 527 528 529 <link rel="preload" as="font" href="//sonniskin.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2" type="font/woff2" crossorigin> 530 531<link 532 rel="stylesheet" 533 href="//sonniskin.com/cdn/shop/t/13/assets/component-predictive-search.css?v=118923337488134913561782903944" 534 media="print" 535 onload="this.media='all'" 536 >
536<script> 537 if (Shopify.designMode) { 538 document.documentElement.classList.add('shopify-design-mode'); 539 } 540 </script>
540 541 <!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> 542 543 544 545 546 547 548 549<link rel="dns-prefetch" href="https://cdn.judge.me"> 550<link rel="dns-prefetch" href="https://cdn1.judge.me"> 551<link rel="dns-prefetch" href="https://api.judge.me"> 552
553<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"coupon_receiving_condition":"any_review","coupon_value_type":"percentage","coupon_value_percentage":15,"coupon_value_fixed_amount":0,"coupon_discount_type":"single","coupon_tier_text_enabled":false,"coupon_tier_text_percentage":10,"coupon_tier_text_fixed_amount":0,"coupon_tier_photo_enabled":false,"coupon_tier_photo_percentage":10,"coupon_tier_photo_fixed_amount":0,"coupon_tier_video_enabled":false,"coupon_tier_video_percentage":10,"coupon_tier_video_fixed_amount":0,"enable_coupons":true,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":false,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank y
553ou! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"","widget_rating_filter_color":"#fbcd0a","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"default","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","enable_ai_review_visibility":true,"widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_product_variant_reference_text":"Review for","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_product_and_store_reviews_text":"Product and store reviews","widget_reviews_in_collection_text":"Reviews in this collection","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"â
Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":false,"featured_carousel_show_header":true,"featured_carousel_title":"Let customers speak for us","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"branded","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":false,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":true,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":true,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","widget_sorting_most_relevant_text":"Most Relevant","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subt
553itle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#002459","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":false,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Load More","widget_load_more_color":"#108474","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"popup_widget_source_mode":"auto","popup_widget_page_product":"current_product","popup_widget_page_collection":"current_collection","popup_widget_page_cart":"cart_mode","popup_widget_page_home":"all","popup_widget_star_rating":"all","popup_widget_review_type":"all","popup_widget_top_up_thin_pages":true,"popup_widget_corner_styling":"soft","review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_text_color":"#000000","review_snippet_widget_lighter_text_color":"#7B7B7B","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#002459","show_product_variant":false,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"Summarized and selected by AI from recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"signed_in_customers","store_summary_widget_heading":"Customers rate this store","store_summary_widget_button_text":"View customer reviews","store_summary_widget_button_theme_text":"See AI reviews summary","widget_show_review_title_input":true,"widget_autofill_review_title":true,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":true,"request_review_other_products_in_order":true,"review_form_color_scheme":"custom","review_form_corner_style":"round","review_form_star_color":"#002459","review_form_text_color":"#002459","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":"#002459","review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_form_theme":"multi_step","review_form_location":"in_store_popup","review_form_external_page_background_color":"#C5F7F0","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","confirm_email_screen_title_text":"Confirm your email","confirm_email_screen_message_text":"To help keep reviews authentic, we'll send you a secure link to continue writing your review. It only takes a moment.","check_email_screen_title_text":"Check your email","check_email_screen_message_text":"We sent you an email to {{ email }}. Click the button on the email to continue.","check_email_screen_resend_message_text":"Email resent!","check_email_resend_hint_text":"Didn't get the email? Check your spam folder or [resend the email].","verification_email_rate_limit_error_text":"You've reached the limit for review attempts on this product. Please check your inbox or try again later.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_
553youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":true,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":true,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","coupon_promo_intro_any_review_text":"Write a review and get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_photo_text":"Write a review and add a photo or video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_with_video_text":"Write a review and add a video to get a coupon for {{ amount }} off your next purchase","coupon_promo_intro_up_to_any_review_text":"Write a review and get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_up_to_with_photo_text":"Write a review and add a photo or video to get a coupon for up to {{ amount }} off your next purchase","coupon_promo_intro_external_text":"Write a review and get a reward for your next purchase","coupon_promo_intro_external_with_photo_text":"Write a review and add a photo or video to get a reward for your next purchase","coupon_promo_intro_external_with_video_text":"Write a review and add a video to get a reward for your next purchase","coupon_promo_media_photo_text":"Add a photo or video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_photo_only_text":"Add a photo and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_video_text":"Add a video and get a coupon for {{ amount }} off your next purchase","coupon_promo_media_external_photo_text":"Add a photo or video and get a reward for your next purchase","coupon_promo_media_external_photo_only_text":"Add a photo and get a reward for your next purchase","coupon_promo_media_external_video_text":"Add a video and get a reward for your next purchase","coupon_promo_success_text":"You've got a coupon for your next purchase at {{ shop_name }}!","coupon_promo_success_subtext":"You'll receive your coupon email within the hour.","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_other_languages_reviews_per_page":3,"widget_store_review_label_text":"Review about the store","widget_cart_mode_aggregate_heading_text":"Customers rate this store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural"
553:"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","review_widget_filter_rating_title":"Rating","review_widget_filter_keyword_title":"Keyword","review_widget_clear_filters_text":"Clear filters","review_widget_expand_more_text":"More","review_widget_review_highlights_title":"Review highlights","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"Weâll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":true,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","all_reviews_widget_v2025_review_highlights_title":"Review highlights","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_card_grouping":"per_media","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"From our customers","reviews_grid_widget_show_average_rating":true,"trust_badge_enabled":false,"trust_badge_structure":"outline","trust_badge_color":"black","trust_badge_star":"black","trust_badge_rating_display_default":"show_avg_text","platform":"shopify","branding_url":"https://app.judge.me/reviews","branding_text":"Powered by Judge.me","locale":"en","reply_name":"SONNI","shop_currency":"USD","widget_version":"3.0","footer":true,"autopublish":false,"review_dates":true,"enable_custom_form":false,"shop_locale":"en","enable_multi_locales_translations":true,"show_review_title_input":true,"autofill_review_title":true,"review_verification_email_status":"always","require_verification_before_submit":true,"sign_in_with_
553shop_enabled":false,"customer_account_validation_enabled":true,"most_relevant_sort_enabled":false,"widget_events_v4_impressions_enabled":false,"widget_events_review_grain_enabled":false,"widget_events_v4_time_in_view_enabled":false,"widget_events_v4_session_key_enabled":false,"widget_events_v4_interactions_enabled":false,"widget_attribution_exposure_timestamps_enabled":false,"widget_attribution_v4_exposures_enabled":false,"coupon_promo_invited_eligible":true,"coupon_promo_web_eligible":false,"uses_coupon_integration":false,"uses_external_coupon":false,"hostname_allowlist":"","can_be_branded":true,"rtl_stars_enabled_ar":true,"rtl_stars_enabled_he":true,"reply_name_text":"SONNI"};</script>
553 <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #002459;--jdgm-secondary-color: rgba(0,36,89,0.1);--jdgm-star-color: #002459;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #002459;--jdgm-paginate-color: #002459;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #002459}.jdgm-histogram__bar-content{background-color:#002459}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#002459}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget{--jdgm-snippet-card-color: #fff;--jdgm-snippet-text-color: #000;--jdgm-snippet-lighter-text-color: #7B7B7B;--jdgm-snippet-star-color: #002459;--jdgm-snippet-border-radius: 8px;--jdgm-snippet-arrows-bg-color: #fff;--jdgm-snippet-arrows-color: #000}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#002459}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'SONNI'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )} 554</style> <style class='jdgm-settings-style'></style> 555 556 557 558 559 <style class='jdgm-miracle-styles'> 560 @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK
560/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important} 561 562</style> 563 564 565 566 567 568 569 570 571
572<script data-cfasync='false' class='jdgm-script'> 573!function(e){window.jdgm=window.jdgm||{}; 574/* INF-1976 */ 575var _jdgmBlocked=function(){var raw=(window.jdgmSettings||{}).hostname_allowlist;var list=(raw==null?"":""+raw).split(/[\s,]+/).map(function(h){return h.trim().toLowerCase().replace(/\.$/,"");}).filter(function(h){return h;});if(!list.length)return false;var host=(e.location.hostname||"").toLowerCase().replace(/\.$/,"");if(/(^|\.)shopifypreview\.com$/.test(host))return false;var bare=host.replace(/^www\./,"");for(var i=0;i<list.length;i++){var en=list[i];if(en.indexOf("*.")===0){var b=en.slice(2);if(host===b||host.slice(-(b.length+1))==="."+b)return false;}else if(bare===en.replace(/^www\./,""))return false;}return true;}(); 576if(_jdgmBlocked){jdgm._loaderExecuted=true;jdgm._blocked=true;var _jdgmS=e.createElement("style");_jdgmS.textContent='[class^="jdgm-"],[class*=" jdgm-"]{display:none !important}';(e.head||e.documentElement).appendChild(_jdgmS);return;} 577jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/", 578jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? 579setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ 580!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), 581(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", 582a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, 583jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; 584t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))}, 585t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll( 586".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? 587parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"): 588jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css") 589)}))}(document); 590</script>
590 591<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/shopify_v2.css"></noscript> 592 593<!-- BEGIN app snippet: theme_fix_tags -->
593<script> 594 (function() { 595 var jdgmThemeFixes = null; 596 if (!jdgmThemeFixes) return; 597 598 // "All themes" fix: CSS and JS applied on every theme. CSS is injected 599 // before the per-theme fix so the theme-specific CSS wins the cascade. 600 // HTML is never applied globally (too risky). 601 var allThemesFix = jdgmThemeFixes['all']; 602 if (allThemesFix && allThemesFix.css) { 603 var allStyleTag = document.createElement('style'); 604 allStyleTag.classList.add('jdgm-theme-fix-style-all'); 605 allStyleTag.innerHTML = allThemesFix.css; 606 document.head.append(allStyleTag); 607 }; 608 609 if (allThemesFix && allThemesFix.js) { 610 var allScriptTag = document.createElement('script'); 611 allScriptTag.classList.add('jdgm-theme-fix-script-all'); 612 allScriptTag.innerHTML = allThemesFix.js; 613 document.head.append(allScriptTag); 614 }; 615 616 var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; 617 if (!thisThemeFix) return; 618 619 if (thisThemeFix.html) { 620 document.addEventListener("DOMContentLoaded", function() { 621 var htmlDiv = document.createElement('div'); 622 htmlDiv.classList.add('jdgm-theme-fix-html'); 623 htmlDiv.innerHTML = thisThemeFix.html; 624 document.body.append(htmlDiv); 625 }); 626 }; 627 628 if (thisThemeFix.css) { 629 var styleTag = document.createElement('style'); 630 styleTag.classList.add('jdgm-theme-fix-style'); 631 styleTag.innerHTML = thisThemeFix.css; 632 document.head.append(styleTag); 633 }; 634 635 if (thisThemeFix.js) { 636 var scriptTag = document.createElement('script'); 637 scriptTag.classList.add('jdgm-theme-fix-script'); 638 scriptTag.innerHTML = thisThemeFix.js; 639 document.head.append(scriptTag); 640 }; 641 })(); 642</script>
642 643<!-- END app snippet --> 644<!-- End of Judge.me Core --> 645 646 647 648<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 649 650 651 652 653 654 655 656 657 658 659 660 661
661<script async src="https://static.klaviyo.com/onsite/js/TMLGDA/klaviyo.js?company_id=TMLGDA"></script>
661 662
662<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
662 663 664 665 666 667 668 669
669<script> 670 window.klaviyoReviewsProductDesignMode = false 671 </script>
671 672 673 674 675 676 677 678 679 680 681<!-- END app block --><!-- BEGIN app block: shopify://apps/rebuy-personalization-engine/blocks/rebuy-global-embed/a26ae9b9-933b-40bf-bbc6-bf1220bbc4dc -->
682<script> 683 window.Rebuy = window.Rebuy || {}; 684 window.Rebuy.customer = window.Rebuy.customer || {}; 685 686 window.Rebuy.market = window.Rebuy.market || {}; 687 688 window.Rebuy.market.country = "US"; 689 690 691 window.Rebuy.market.locale = "en"; 692 693</script>
693 694 695 696 697 698 699<!-- END app block --><!-- BEGIN app block: shopify://apps/instafeed/blocks/head-block/c447db20-095d-4a10-9725-b5977662c9d5 --><!-- BEGIN app snippet: storefront-script --> 700 701 702 703
703<script src="https://cdn.nfcube.com/instafeed-6e4bbf520adb7389bfd70f6e616a5ebb.js" defer></script>
703 704 705 706<!-- END app snippet --> 707 708 709 710 711<!-- END app block -->
711<script src="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/loader.js" type="text/javascript" defer="defer"></script>
711 712<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
713<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: 93059612988,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "blog"};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 713
713
714<script> 715 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 716</script>
vendor: 1 bytes, line 716
716
717<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}
717).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: 93059612988,storefrontBaseUrl: "https://sonniskin.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://sonniskin.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"2829058364","configuration":"{\"pixelCode\":\"DAV9LN3C77UAD07R1N20\"}","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"]}
717,"dataSharingState":"unrestricted"},{"id":"2701361468","configuration":"{\"octaneDomain\":\"https:\\\/\\\/app.octaneai.com\",\"octaneNewDomain\":\"https:\\\/\\\/app2.octaneai.com\",\"botID\":\"au517to6lv2m9ho7\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"aace1440a9416e8b2805b96c7b2f2fe0","type":"APP","apiClientId":2012438,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2630615356","configuration":"{\"tagID\":\"2614404562806\"}","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"]},"dataSharingState":"optimized"},{"id":"2585723196","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"6e6b2e32fe6866115b7e49e2ae3c75b2","type":"APP","apiClientId":5940125,"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"},{"id":"2496823612","configuration":"{\"storeId\":\"1afd773a-7a8f-4644-b75c-85f91bc7376e\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"2066bff610c5c92c0538059190a8d779","type":"APP","apiClientId":274629623809,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2410217788","configuration":"{\"shopId\":\"39674\",\"domainStatus\":\"0\",\"domain\":\"sonniskin.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"13124b044e9b3aaaba4080cdba031853","type":"APP","apiClientId":5443297,"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"},{"id":"1973879100","configuration":"{\"advertiserId\":\"121804\",\"shopDomain\":\"uijg2k-cd.myshopify.com\",\"appVersion\":\"shopifyApp_5.4.0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c287d09bac7e7a912a76f3941fab1c2f","type":"APP","apiClientId":2887701,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1967391036","configuration":"{\"accountID\":\"facct_01k8vx8qe86wm2kqs7p1p6jq25\"}","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":"optimized"},{"id":"1862828348","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\",\\\"GT-WBTV3QBR\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/K7plCI___KUbEIHXus1B\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/WKX5CJv__KUbEIHXus1B\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-X8F9WMLBVF\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/jJJmCJj__KUbEIHXus1B\\\",\\\"MC-XD50R2D6YQ\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-X8F9WMLBVF\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/xdUZCIz__KUbEIHXus1B\\\",\\\"MC-XD50R2D6YQ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/rEeFCJX__KUbEIHXus1B\\\",\\\"MC-XD50R2D6YQ\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-X8F9WMLBVF\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/VlsvCKKJhKYbEIHXus1B\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-X8F9WMLBVF\\\",\\\"AW-17610746753\\\/bkDOCJL__KUbEIHXus1B\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-X8F9WMLBVF\\\"}],\\\"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"]}
717,"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"1821704508","configuration":"{\"accountID\":\"TMLGDA\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"1802633532","configuration":"{\"pixel_id\":\"1307442767752776\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"1343717692","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"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":"SONNI","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"uijg2k-cd.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/sonniskin.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"9995049894204","handle":"sunday-serum-50","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51601606672700","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9995107729724","handle":"sunday-body-balm-40","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51601710907708","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9995107336508","handle":"sunday-invisible-defense-40","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51601710514492","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10000537256252","handle":"sundown-restoration-mask","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51616987447612","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10370742124860","handle":"active-days-duo","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53002962600252","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10370740158780","handle":"skin-first-set","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53002950738236","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}
717,{"id":"10370749301052","handle":"daily-defense-trio","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53002977870140","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10363904885052","handle":"sonni-system","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52981190164796","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10144369770812","handle":"the-sonni-hat","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52102490390844","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10214669582652","handle":"the-complete-routine-gift-set","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52414058037564","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10214668206396","handle":"the-essentials-gift-set","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52414052008252","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10279342342460","handle":"sundown-restoration-mask-single","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52670639898940","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://sonniskin.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"186690437436","themeStoreId":"887","themePublished":"true","eventMetadataId":"47d28467-a397-448b-8a64-57f9be55f8c3","pageType":"blog","resourceId":"115834749244","shopId":"93059612988","storefrontBaseUrl":"https:\/\/sonniskin.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
717<script> 718 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 719 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 720 window.ShopifyAnalytics.meta.currency = 'USD'; 721 var meta = {"page":{"pageType":"blog","resourceType":"blog","resourceId":115834749244,"requestId":"5ba1346c-72da-45b2-9784-9262fd9f6ab6-1791444212"}}; 722 for (var attr in meta) { 723 window.ShopifyAnalytics.meta[attr] = meta[attr]; 724 } 725</script>
vendor: 1 bytes, line 725
725
726<script class="analytics"> 727 (function () { 728 var customDocumentWrite = function(content) { 729 var jquery = null; 730 731 if (window.jQuery) { 732 jquery = window.jQuery; 733 } else if (window.Checkout && window.Checkout.$) { 734 jquery = window.Checkout.$; 735 } 736 737 if (jquery) { 738 jquery('body').append(content); 739 } 740 }; 741 742 var hasLoggedConversion = function(token) { 743 if (token) { 744 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 745 } 746 return false; 747 } 748 749 var setCookieIfConversion = function(token) { 750 if (token) { 751 var twoMonthsFromNow = new Date(Date.now()); 752 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 753 754 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 755 } 756 } 757 758 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 759 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 760 if (trekkie.integrations) { 761 return; 762 } 763 trekkie.methods = [ 764 'identify', 765 'page', 766 'ready', 767 'track', 768 'trackForm', 769 'trackLink' 770 ]; 771 trekkie.factory = function(method) { 772 return function() { 773 var args = Array.prototype.slice.call(arguments); 774 args.unshift(method); 775 trekkie.push(args); 776 if (method == 'track' || method == 'page') { 777 var pageUrl; 778 try { 779 pageUrl = window.location.href; 780 } catch (e) {} 781 var pageReferrer; 782 try { 783 pageReferrer = document.referrer; 784 } catch (e) {} 785 try { 786 if (window.__TREKKIE_SHIM_QUEUE == null) { 787 window.__TREKKIE_SHIM_QUEUE = []; 788 } 789 window.__TREKKIE_SHIM_QUEUE.push({ 790 from: 'trekkie-stub', 791 method: method, 792 args: args.slice(1), 793 pageContext: { 794 url: pageUrl, 795 referrer: pageReferrer 796 } 797 }); 798 } catch (e) { 799 // no-op 800 } 801 } 802 return trekkie; 803 }; 804 }; 805 for (var i = 0; i < trekkie.methods.length; i++) { 806 var key = trekkie.methods[i]; 807 trekkie[key] = trekkie.factory(key); 808 } 809 trekkie.load = function(config) { 810 trekkie.config = config || {}; 811 trekkie.config.initialDocumentCookie = document.cookie; 812 var first = document.getElementsByTagName('script')[0]; 813var script = document.createElement('script'); 814script.type = 'text/javascript'; 815script.onerror = function(e) { 816 var scriptFallback = document.createElement('script'); 817 scriptFallback.type = 'text/javascript'; 818 scriptFallback.onerror = function(error) { 819 var Monorail = { 820 produce: function produce(monorailDomain, schemaId, payload) { 821 var currentMs = new Date().getTime(); 822 var event = { 823 schema_id: schemaId, 824 payload: payload, 825 metadata: { 826 event_created_at_ms: currentMs, 827 event_sent_at_ms: currentMs 828 } 829 }; 830 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 831 }, 832 sendRequest: function sendRequest(endpointUrl, payload) { 833 // Try the sendBeacon API 834 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 835 var blobData = new window.Blob([payload], { 836 type: 'text/plain' 837 }); 838 839 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 840 return true; 841 } // sendBeacon was not successful 842 843 } // XHR beacon 844 845 var xhr = new XMLHttpRequest(); 846 847 try { 848 xhr.open('POST', endpointUrl); 849 xhr.setRequestHeader('Content-Type', 'text/plain'); 850 xhr.send(payload); 851 } catch (e) { 852 console.log(e); 853 } 854 855 return false; 856 }, 857 isIos12: function isIos12() { 858 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 859 } 860 }; 861 Monorail.produce('monorail-edge.shopifysvc.com', 862 'trekkie_storefront_load_errors/1.1', 863 {shop_id: 93059612988, 864 theme_id: 186690437436, 865 app_name: "storefront", 866 context_url: window.location.href, 867 source_url: "//sonniskin.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 868 869 }; 870 scriptFallback.async = true; 871 scriptFallback.src = '//sonniskin.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 872 first.parentNode.insertBefore(scriptFallback, first); 873}; 874script.async = true; 875script.src = '//sonniskin.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 876first.parentNode.insertBefore(script, first); 877 878 }; 879 trekkie.load( 880 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":93059612988,"isMerchantRequest":null,"themeId":186690437436,"themeCityHash":"3752414525458678883","contentLanguage":"en","currency":"USD","eventMetadataId":"47d28467-a397-448b-8a64-57f9be55f8c3"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 881 ); 882 883 var loaded = false;
884 trekkie.ready(function() { 885 if (loaded) return; 886 loaded = true; 887 888 window.ShopifyAnalytics.lib = window.trekkie; 889 890 var originalDocumentWrite = document.write; 891 document.write = customDocumentWrite; 892 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 893 document.write = originalDocumentWrite; 894 895 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 896 var token = match? match[1]: undefined; 897 if (!hasLoggedConversion(token)) { 898 setCookieIfConversion(token); 899 900 } 901 }); 902 903 window.ShopifyAnalytics.lib.page(null,{"pageType":"blog","resourceType":"blog","resourceId":115834749244,"requestId":"5ba1346c-72da-45b2-9784-9262fd9f6ab6-1791444212","shopifyEmitted":true}); 904 905 var eventsListenerScript = document.createElement('script'); 906 eventsListenerScript.async = true; 907 eventsListenerScript.src = "//sonniskin.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 908 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 909})();</script>
vendor: 1 bytes, line 909
909
910<script 911 defer 912 src="https://sonniskin.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.0.min.js" 913 data-application="storefront-renderer" 914 data-shop-id="93059612988" 915 data-render-region="gcp-us-central1" 916 data-page-type="blog" 917 data-theme-instance-id="186690437436" 918 data-theme-name="Dawn" 919 data-theme-version="15.3.0" 920 data-monorail-region="shop_domain" 921 data-resource-timing-sampling-rate="10" 922 data-shs="true" 923 data-shs-beacon="true" 924 data-shs-export-with-fetch="true" 925 data-shs-logs-sample-rate="1" 926 data-shs-beacon-endpoint="https://sonniskin.com/api/collect" 927></script>
927 928<meta name="shopify-y" content="7ea14357-afce-4e04-9b13-48c3bc6b3d08" data-expiration="1823001812000"><meta name="shopify-s" content="b6c665bf-dcb4-4f89-a606-22f086b30a95" data-expiration="1791446012000"><meta name="new-cookie-storage-activated" content="t"> 929</head> 930 931 <body class="gradient"data-password-key="c29ubmlmYW1pbHkyNQ=="> 932 933 934 935 <a class="skip-to-content-link button visually-hidden" href="#MainContent"> 936 Skip to content 937 </a><!-- BEGIN sections: header-group --> 938<div id="shopify-section-sections--26813932667196__announcement-bar" class="shopify-section shopify-section-group-header-group announcement-bar-section"><link href="//sonniskin.com/cdn/shop/t/13/assets/component-slideshow.css?v=17933591812325749411782903944" rel="stylesheet" type="text/css" media="all" /> 939<link href="//sonniskin.com/cdn/shop/t/13/assets/component-slider.css?v=14039311878856620671782903944" rel="stylesheet" type="text/css" media="all" /> 940 941 <link href="//sonniskin.com/cdn/shop/t/13/assets/component-list-social.css?v=35792976012981934991782903944" rel="stylesheet" type="text/css" media="all" /> 942 943 944<div 945 class="utility-bar color-scheme-5 gradient" 946> 947 <div class="page-width utility-bar__grid"><slideshow-component 948 class="announcement-bar" 949 role="region" 950 aria-roledescription="Carousel" 951 aria-label="Announcement bar" 952 > 953 <div class="announcement-bar-slider slider-buttons"> 954 <button 955 type="button" 956 class="slider-button slider-button--prev" 957 name="previous" 958 aria-label="Previous announcement" 959 aria-controls="Slider-sections--26813932667196__announcement-bar" 960 > 961 <span class="svg-wrapper"><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 962<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 963<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 964<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 965<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 966</svg> 967</span> 968 </button> 969 <div 970 class="grid grid--1-col slider slider--everywhere" 971 id="Slider-sections--26813932667196__announcement-bar" 972 aria-live="polite" 973 aria-atomic="true" 974 data-autoplay="false" 975 data-speed="5" 976 ><div 977 class="slideshow__slide slider__slide grid__item grid--1-col" 978 id="Slide-sections--26813932667196__announcement-bar-1" 979 980 role="group" 981 aria-roledescription="Announcement" 982 aria-label="1 of 2" 983 tabindex="-1" 984 > 985 <div 986 class="announcement-bar__announcement" 987 role="region" 988 aria-label="Announcement" 989 ><p class="announcement-bar__message body2-text"> 990 <span>Sign up & get 10% off your first order!</span></p></div> 991 </div><div 992 class="slideshow__slide slider__slide grid__item grid--1-col" 993 id="Slide-sections--26813932667196__announcement-bar-2" 994 995 role="group" 996 aria-roledescription="Announcement" 997 aria-label="2 of 2" 998 tabindex="-1" 999 > 1000 <div 1001 class="announcement-bar__announcement" 1002 role="region" 1003 aria-label="Announcement" 1004 ><p class="announcement-bar__message body2-text"> 1005 <span>Free shipping on orders $55+</span></p></div> 1006 </div></div> 1007 <button 1008 type="button" 1009 class="slider-button slider-button--next" 1010 name="next" 1011 aria-label="Next announcement" 1012 aria-controls="Slider-sections--26813932667196__announcement-bar" 1013 >
1014 <span class="svg-wrapper"><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 1015<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 1016<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 1017<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 1018<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 1019</svg> 1020</span> 1021 </button> 1022 </div> 1023 </slideshow-component><div class="localization-wrapper"> 1024</div> 1025 </div> 1026</div> 1027 1028 1029</div><div id="shopify-section-sections--26813932667196__header" class="shopify-section shopify-section-group-header-group section-header"><link rel="stylesheet" href="//sonniskin.com/cdn/shop/t/13/assets/component-list-menu.css?v=151968516119678728991782903944" media="print" onload="this.media='all'"> 1030<link rel="stylesheet" href="//sonniskin.com/cdn/shop/t/13/assets/component-search.css?v=165164710990765432851782903944" media="print" onload="this.media='all'"> 1031<link rel="stylesheet" href="//sonniskin.com/cdn/shop/t/13/assets/component-menu-drawer.css?v=147478906057189667651782903944" media="print" onload="this.media='all'"> 1032<link 1033 rel="stylesheet" 1034 href="//sonniskin.com/cdn/shop/t/13/assets/component-cart-notification.css?v=54116361853792938221782903944" 1035 media="print" 1036 onload="this.media='all'" 1037><link rel="stylesheet" href="//sonniskin.com/cdn/shop/t/13/assets/component-price.css?v=70172745017360139101782903944" media="print" onload="this.media='all'"><style> 1038 header-drawer { 1039 justify-self: start; 1040 1041 @media (min-width: 990px) { 1042 margin-left: -1.2rem; 1043 } 1044 }@media screen and (min-width: 990px) { 1045 header-drawer { 1046 display: none; 1047 } 1048 }.menu-drawer-container { 1049 display: flex; 1050 } 1051 1052 .list-menu { 1053 list-style: none; 1054 padding: 0; 1055 margin: 0; 1056 } 1057 1058 .list-menu--inline { 1059 display: inline-flex; 1060 flex-wrap: wrap; 1061 } 1062 1063 summary.list-menu__item { 1064 padding-right: 2.7rem; 1065 } 1066 1067 .list-menu__item { 1068 display: flex; 1069 align-items: center; 1070 line-height: calc(1 + 0.3 / var(--font-body-scale)); 1071 } 1072 1073 .list-menu__item--link { 1074 text-decoration: none; 1075 padding-bottom: 1rem; 1076 padding-top: 1rem; 1077 line-height: calc(1 + 0.8 / var(--font-body-scale)); 1078 } 1079 1080 @media screen and (min-width: 750px) { 1081 .list-menu__item--link { 1082 padding-bottom: 0.5rem; 1083 padding-top: 0.5rem; 1084 } 1085 } 1086</style><style data-shopify> 1087 1088 .section-header { 1089 position: sticky; /* This is for fixing a Safari z-index issue. PR #2147 */ 1090 /* position: fixed; Custom Sonni 1091 margin-bottom: 9px;*/ 1092 } 1093 1094 /* @media screen and (min-width: 750px) { 1095 .section-header { 1096 margin-bottom: 12px; 1097 } 1098 }*/ 1099 1100 @media screen and (min-width: 990px) { 1101 .header { 1102 padding-top: 20px; 1103 padding-bottom: 20px; 1104 } 1105 }</style>
1105<script src="//sonniskin.com/cdn/shop/t/13/assets/cart-notification.js?v=133508293167896966491782903944" defer="defer"></script>
1105 1106 1107<sticky-header 1108 1109 data-sticky-type="always" 1110 1111 class="header-wrapper color-scheme-1 gradient" 1112><header class="header header--middle-center header--mobile-center container-fluid header--has-menu header--has-social header--has-account"> 1113 1114<header-drawer data-breakpoint="tablet"> 1115 <details id="Details-menu-drawer-container" class="menu-drawer-container"> 1116 <summary 1117 class="header__icon header__icon--menu header__icon--summary link focus-inset" 1118 aria-label="Menu" 1119 > 1120 <span><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-hamburger" viewBox="0 0 18 16"><path fill="currentColor" d="M1 .5a.5.5 0 1 0 0 1h15.71a.5.5 0 0 0 0-1zM.5 8a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1A.5.5 0 0 1 .5 8m0 7a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5"/></svg> 1121<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1122</span> 1123 </summary> 1124 <div id="menu-drawer" class="gradient menu-drawer motion-reduce color-scheme-1"> 1125 <div class="menu-drawer__inner-container"> 1126 <div class="menu-drawer__navigation-container"> 1127 <nav class="menu-drawer__navigation"> 1128 <ul class="menu-drawer__menu has-submenu list-menu" role="list"><li><details id="Details-menu-drawer-menu-item-1"> 1129 <summary 1130 id="HeaderDrawer-shop" 1131 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1132 > 1133 Shop 1134 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
1134ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 1135</span> 1136 <span class="svg-wrapper"><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 1137<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 1138<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 1139<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 1140<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 1141</svg> 1142</span> 1143 </summary> 1144 <div 1145 id="link-shop" 1146 class="menu-drawer__submenu has-submenu gradient motion-reduce" 1147 tabindex="-1" 1148 > 1149 <div class="menu-drawer__inner-submenu"> 1150 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1151 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
1151ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 1152</span> 1153 Shop 1154 </button> 1155 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><a 1156 id="HeaderDrawer-shop-shop-all" 1157 href="/collections/all" 1158 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1159 1160 > 1161 Shop All 1162 </a></li><li><a 1163 id="HeaderDrawer-shop-sets" 1164 href="/collections/sets" 1165 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1166 1167 > 1168 Sets 1169 </a></li><li><a 1170 id="HeaderDrawer-shop-sunday" 1171 href="/collections/sunday" 1172 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1173 1174 > 1175 SunDay 1176 </a></li><li><a 1177 id="HeaderDrawer-shop-sundown" 1178 href="/collections/sundown" 1179 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1180 1181 > 1182 SunDown 1183 </a></li><li><a 1184 id="HeaderDrawer-shop-gifts-more" 1185 href="/collections/gifts" 1186 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1187 1188 > 1189 Gifts & More 1190 </a></li></ul> 1191 </div> 1192 </div> 1193 </details></li><li><a 1194 id="HeaderDrawer-sets" 1195 href="/collections/sets" 1196 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1197 1198 > 1199 Sets 1200 </a></li><li><details id="Details-menu-drawer-menu-item-3"> 1201 <summary 1202 id="HeaderDrawer-learn" 1203 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1204 > 1205 Learn 1206 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
1206ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 1207</span> 1208 <span class="svg-wrapper"><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 1209<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 1210<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 1211<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 1212<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 1213</svg> 1214</span> 1215 </summary> 1216 <div 1217 id="link-learn" 1218 class="menu-drawer__submenu has-submenu gradient motion-reduce" 1219 tabindex="-1" 1220 > 1221 <div class="menu-drawer__inner-submenu"> 1222 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1223 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
1223ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 1224</span> 1225 Learn 1226 </button> 1227 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><a 1228 id="HeaderDrawer-learn-science" 1229 href="/pages/science" 1230 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1231 1232 > 1233 Science 1234 </a></li><li><a 1235 id="HeaderDrawer-learn-sustainability" 1236 href="/pages/sustainability" 1237 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1238 1239 > 1240 Sustainability 1241 </a></li><li><a 1242 id="HeaderDrawer-learn-faq" 1243 href="/pages/faqs" 1244 class="menu-drawer__menu-item link link--text list-menu__item focus-inset" 1245 1246 > 1247 FAQ 1248 </a></li></ul> 1249 </div> 1250 </div> 1251 </details></li><li><a 1252 id="HeaderDrawer-about" 1253 href="/pages/about-us" 1254 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1255 1256 > 1257 About 1258 </a></li><li><a id="HeaderDrawer-product-finder" href="/pages/product-finder" class="menu-drawer__menu-item list-menu__item link link--text focus-inset">SPF Finder</a></li> 1259 <li><a id="HeaderDrawer-light-reading" href="/blogs/light-reading" class="menu-drawer__menu-item list-menu__item link link--text focus-inset">Blog</a></li> 1260 1261 <li><a href="https://sonniskin.com/customer_authentication/redirect?locale=en®ion_country=US" class="menu-drawer__menu-item list-menu__item link link--text focus-inset">Login</a></li> 1262 1263 </ul> 1264 </nav> 1265 <div class="menu-drawer__utility-links"><a 1266 href="https://sonniskin.com/customer_authentication/redirect?locale=en®ion_country=US" 1267 class="menu-drawer__account link focus-inset h5 medium-hide large-up-hide" 1268 rel="nofollow" 1269 ><span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-account" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M6 4.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8m5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15M9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35" clip-rule="evenodd"/></svg> 1270</span>Log in</a><div class="menu-drawer__localization header-localization"> 1271</div><ul class="list list-social list-unstyled" role="list"><li class="list-social__item"> 1272 <a href="https://instagram.com/sonniskin" class="list-social__link link"> 1273 <span class="svg-wrapper"><svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 1274<g clip-path="url(#clip0_150_565)"> 1275<path d="M10.6 1.80078C13.3257 1.80078 13.6485 1.8125 14.7204 1.85937C15.7167 1.90234 16.2546 2.06641 16.6133 2.20313C17.0875 2.38281 17.4302 2.60156 17.7849 2.94922C18.1435 3.30078 18.3627 3.63281 18.546 4.09766C18.6855 4.44922 18.8528 4.98047 18.8967 5.95312C18.9445 7.00781 18.9565 7.32422 18.9565 9.99219C18.9565 12.6641 18.9445 12.9805 18.8967 14.0313C18.8528 15.0078 18.6855 15.5352 18.546 15.8867C18.3627 16.3516 18.1395 16.6875 17.7849 17.0352C17.4262 17.3867 17.0875 17.6016 16.6133 17.7813C16.2546 17.918 15.7127 18.082 14.7204 18.125C13.6445 18.1719 13.3217 18.1836 10.6 18.1836C7.87425 18.1836 7.55146 18.1719 6.47951 18.125C5.48326 18.082 4.94529 17.918 4.58664 17.7813C4.11243 17.6016 3.76972 17.3828 3.41506 17.0352C3.05641 16.6836 2.83724 16.3516 2.65393 15.8867C2.51446 15.5352 2.34709 15.0039 2.30325 14.0313C2.25543 12.9766 2.24348 12.6602 2.24348 9.99219C2.24348 7.32031 2.25543 7.00391 2.30325 5.95312C2.34709 4.97656 2.51446 4.44922 2.65393 4.09766C2.83724 3.63281 3.0604 3.29688 3.41506 2.94922C3.77371 2.59766 4.11243 2.38281 4.58664 2.20313C4.94529 2.06641 5.48725 1.90234 6.47951 1.85937C7.55146 1.8125 7.87425 1.80078 10.6 1.80078ZM10.6 0C7.83041 0 7.48372 0.0117187 6.39582 0.0585938C5.31191 0.105469 4.56672 0.277344 3.92115 0.523438C3.24769 0.78125 2.67784 1.12109 2.11198 1.67969C1.54212 2.23438 1.19543 2.79297 0.932424 3.44922C0.681371 4.08594 0.506032 4.8125 0.458212 5.875C0.410392 6.94531 0.398438 7.28516 0.398438 10C0.398438 12.7148 0.410392 13.0547 0.458212 14.1211C0.506032 15.1836 0.681371 15.9141 0.932424 16.5469C1.19543 17.207 1.54212 17.7656 2.11198 18.3203C2.67784 18.875 3.24769 19.2188 3.91717 19.4727C4.56672 19.7188 5.30792 19.8906 6.39184 19.9375C7.47973 19.9844 7.82643 19.9961 10.596 19.9961C13.3655 19.9961 13.7122 19.9844 14.8001 19.9375C15.884 19.8906 16.6292 19.7188 17.2748 19.4727C17.9443 19.2188 18.5141 18.875 19.08 18.3203C19.6459 17.76
127556 19.9965 17.207 20.2556 16.5508C20.5066 15.9141 20.682 15.1875 20.7298 14.125C20.7776 13.0586 20.7895 12.7188 20.7895 10.0039C20.7895 7.28906 20.7776 6.94922 20.7298 5.88281C20.682 4.82031 20.5066 4.08984 20.2556 3.45703C20.0045 2.79297 19.6578 2.23438 19.088 1.67969C18.5221 1.125 17.9522 0.78125 17.2828 0.527344C16.6332 0.28125 15.892 0.109375 14.8081 0.0625C13.7162 0.0117188 13.3695 0 10.6 0Z" fill="white"/> 1276<path d="M10.6001 4.86328C7.70701 4.86328 5.35986 7.16406 5.35986 10C5.35986 12.8359 7.70701 15.1367 10.6001 15.1367C13.4932 15.1367 15.8403 12.8359 15.8403 10C15.8403 7.16406 13.4932 4.86328 10.6001 4.86328ZM10.6001 13.332C8.72318 13.332 7.20092 11.8398 7.20092 10C7.20092 8.16016 8.72318 6.66797 10.6001 6.66797C12.477 6.66797 13.9993 8.16016 13.9993 10C13.9993 11.8398 12.477 13.332 10.6001 13.332Z" fill="white"/> 1277<path d="M17.271 4.66016C17.271 5.32422 16.7211 5.85938 16.0476 5.85938C15.3702 5.85938 14.8242 5.32031 14.8242 4.66016C14.8242 3.99609 15.3741 3.46094 16.0476 3.46094C16.7211 3.46094 17.271 4 17.271 4.66016Z" fill="white"/> 1278</g> 1279<defs> 1280<clipPath id="clip0_150_565"> 1281<rect width="20.4031" height="20" fill="white" transform="translate(0.398438)"/> 1282</clipPath> 1283</defs> 1284</svg> 1285</span> 1286 <span class="visually-hidden">Instagram</span> 1287 </a> 1288 </li><li class="list-social__item"> 1289 <a href="https://tiktok.com/@sonniskin" class="list-social__link link"> 1290 <span class="svg-wrapper"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 1291<path d="M16.3241 5.57175C15.4919 5.39373 14.7383 4.95454 14.1732 4.31821C13.608 3.68188 13.2609 2.88167 13.1824 2.03425V1.66675H10.3116V13.0601C10.3098 13.5645 10.1501 14.0556 9.85474 14.4645C9.55943 14.8735 9.14341 15.1796 8.66515 15.3398C8.18689 15.5001 7.67044 15.5065 7.18836 15.3581C6.70628 15.2097 6.2828 14.914 5.97745 14.5126C5.66735 14.1044 5.49533 13.608 5.48633 13.0955C5.47734 12.583 5.63183 12.0809 5.92742 11.6621C6.223 11.2433 6.64431 10.9295 7.13024 10.7663C7.61617 10.603 8.14146 10.5988 8.62995 10.7542V7.83758C7.54066 7.687 6.43154 7.88066 5.45774 8.39147C4.48393 8.90228 3.69415 9.7047 3.19884 10.6865C2.70354 11.6683 2.5275 12.7803 2.69535 13.8671C2.86319 14.9538 3.36653 15.961 4.13495 16.7476C4.86774 17.4974 5.80735 18.0118 6.83383 18.2252C7.8603 18.4386 8.92708 18.3412 9.89799 17.9456C10.8689 17.55 11.6999 16.874 12.2849 16.004C12.8699 15.134 13.1824 14.1093 13.1824 13.0609V7.23925C14.3427 8.06869 15.7337 8.51345 17.1599 8.51091V5.65841C16.8791 5.65876 16.5989 5.62971 16.3241 5.57175Z" fill="white"/> 1292</svg> 1293</span> 1294 <span class="visually-hidden">TikTok</span> 1295 </a> 1296 </li></ul> 1297 </div> 1298 </div> 1299 </div> 1300 </div> 1301 </details> 1302</header-drawer> 1303 1304 1305<nav class="header__inline-menu"> 1306 <ul class="list-menu list-menu--inline" role="list"><li><header-menu> 1307 <details id="Details-HeaderMenu-1"> 1308 <summary 1309 id="HeaderMenu-shop" 1310 class="header__menu-item list-menu__item link focus-inset" 1311 > 1312 <span 1313 >Shop</span><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 1314<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 1315<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 1316<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 1317<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 1318</svg> 1319</summary> 1320 <ul 1321 id="HeaderMenu-MenuList-1" 1322 class="header__submenu list-menu list-menu--disclosure color-scheme-1 gradient caption-large motion-reduce global-settings-popup" 1323 role="list" 1324 tabindex="-1" 1325 ><li><a 1326 id="HeaderMenu-shop-shop-all" 1327 href="/collections/all" 1328 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1329 1330 > 1331 Shop All 1332 </a></li><li><a 1333 id="HeaderMenu-shop-sets" 1334 href="/collections/sets" 1335 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1336 1337 > 1338 Sets 1339 </a></li><li><a 1340 id="HeaderMenu-shop-sunday" 1341 href="/collections/sunday" 1342 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1343 1344 > 1345 SunDay 1346 </a></li><li><a 1347 id="HeaderMenu-shop-sundown" 1348 href="/collections/sundown" 1349 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1350 1351 > 1352 SunDown 1353 </a></li><li><a 1354 id="HeaderMenu-shop-gifts-more" 1355 href="/collections/gifts" 1356 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1357 1358 > 1359 Gifts & More 1360 </a></li></ul> 1361 </details> 1362 </header-menu></li><li><a 1363 id="HeaderMenu-sets" 1364 href="/collections/sets" 1365 class="header__menu-item list-menu__item link link--text focus-inset" 1366 1367 >
1368 <span 1369 >Sets</span> 1370 </a></li><li><header-menu> 1371 <details id="Details-HeaderMenu-3"> 1372 <summary 1373 id="HeaderMenu-learn" 1374 class="header__menu-item list-menu__item link focus-inset" 1375 > 1376 <span 1377 >Learn</span><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 1378<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 1379<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 1380<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 1381<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 1382</svg> 1383</summary> 1384 <ul 1385 id="HeaderMenu-MenuList-3" 1386 class="header__submenu list-menu list-menu--disclosure color-scheme-1 gradient caption-large motion-reduce global-settings-popup" 1387 role="list" 1388 tabindex="-1" 1389 ><li><a 1390 id="HeaderMenu-learn-science" 1391 href="/pages/science" 1392 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1393 1394 > 1395 Science 1396 </a></li><li><a 1397 id="HeaderMenu-learn-sustainability" 1398 href="/pages/sustainability" 1399 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1400 1401 > 1402 Sustainability 1403 </a></li><li><a 1404 id="HeaderMenu-learn-faq" 1405 href="/pages/faqs" 1406 class="header__menu-item list-menu__item link link--text focus-inset caption-large" 1407 1408 > 1409 FAQ 1410 </a></li></ul> 1411 </details> 1412 </header-menu></li><li><a 1413 id="HeaderMenu-about" 1414 href="/pages/about-us" 1415 class="header__menu-item list-menu__item link link--text focus-inset" 1416 1417 > 1418 <span 1419 >About</span> 1420 </a></li></ul> 1421</nav> 1422 1423<a href="/" class="header__heading-link link link--text focus-inset"> 1424 <svg width="170" height="40" viewBox="0 0 170 40" fill="none" xmlns="http://www.w3.org/2000/svg"> 1425<path d="M123.613 5.08664C123.613 5.73182 123.581 6.37701 123.62 7.01892C123.81 10.3038 123.905 13.6017 124.252 16.8735C124.576 19.9226 125.139 22.9454 125.663 25.9716C126.187 28.9912 126.806 31.9976 127.366 35.0107C127.511 35.7836 127.619 36.5663 127.701 37.3491C127.828 38.5608 127.258 39.2289 126.053 39.2519C124.563 39.2813 123.07 39.2584 121.465 39.2584C122.834 35.9965 122.441 32.6854 122.46 29.4235C122.5 22.916 122.5 16.4085 122.46 9.90095C122.444 6.85189 122.84 3.75043 121.481 0.779963C123.017 0.779963 124.491 0.632587 125.909 0.845464C126.597 0.950265 127.357 1.60855 127.792 2.22098C131.143 6.93704 134.434 11.6924 137.719 16.4543C141.462 21.8778 145.183 27.3176 148.916 32.7444C149.388 33.4288 149.892 34.0871 150.38 34.7585C150.419 34.7323 150.495 34.7028 150.495 34.6766C150.439 32.2302 150.439 29.7804 150.302 27.3405C150.197 25.4443 149.971 23.548 149.709 21.6649C149.352 19.0842 148.942 16.51 148.497 13.9424C147.924 10.6542 147.292 7.3759 146.689 4.0943C146.581 3.50807 146.457 2.91856 146.427 2.32906C146.375 1.37275 146.902 0.747213 147.839 0.707913C149.145 0.655512 150.455 0.688262 151.766 0.684987C152.034 0.684987 152.306 0.684987 152.673 0.684987C152.466 1.42187 152.214 2.06705 152.113 2.73844C151.949 3.83558 151.795 4.94909 151.792 6.05605C151.766 15.2589 151.772 24.4618 151.779 33.6646C151.779 35.5085 151.834 37.3523 152.751 39.1602C152.421 39.2027 152.198 39.2551 151.972 39.2584C151.045 39.2682 150.115 39.2191 149.191 39.2748C147.966 39.3436 147.118 38.7868 146.46 37.8272C143.273 33.1767 140.1 28.5196 136.894 23.8821C133.327 18.7272 129.724 13.5952 126.142 8.45011C125.346 7.30384 124.576 6.1412 123.793 4.98512C123.731 5.02114 123.669 5.
142505389 123.607 5.08992L123.613 5.08664Z" fill="white"/> 1426<path d="M35.48 18.4456C35.5946 12.8158 37.612 8.04411 42.0137 4.42846C44.2964 2.55186 46.9295 1.33682 49.8181 0.61304C52.5953 -0.0845433 55.3693 -0.222095 58.1465 0.383787C60.5701 0.911069 62.8233 1.86411 64.8505 3.36407C68.3614 5.96118 70.6768 9.38032 72.1637 13.4381C73.1593 16.1466 73.7685 18.9303 73.68 21.7993C73.513 27.095 71.5676 31.6473 67.5262 35.1811C65.1027 37.3 62.2534 38.6264 59.1356 39.4124C56.5876 40.0543 54.0102 40.2083 51.4458 39.6843C48.6882 39.121 46.1468 38.0304 43.887 36.2782C40.553 33.6909 38.3391 30.3111 36.9308 26.4204C36.0073 23.8724 35.4112 21.2098 35.48 18.4489V18.4456ZM68.5677 24.6322C68.3417 23.2829 68.1256 21.1377 67.595 19.0712C66.8352 16.1105 65.7119 13.2743 64.094 10.6347C61.7491 6.80614 58.8736 3.6097 54.4392 2.23091C50.5943 1.03552 47.1097 1.82808 44.1818 4.58566C41.5716 7.04849 40.7692 10.3137 40.6316 13.7427C40.4875 17.283 41.2932 20.689 42.4853 24.0066C43.7855 27.6223 45.5376 30.9759 48.2821 33.7335C50.6401 36.1046 53.2864 37.8928 56.771 38.1745C60.3998 38.4692 63.3964 37.3033 65.6726 34.4868C67.7981 31.8602 68.4203 28.7096 68.5677 24.6289V24.6322Z" fill="white"/> 1427<path d="M80.6885 39.2584C81.6382 37.0641 81.6251 34.9452 81.6219 32.8262C81.6186 24.0032 81.6219 15.1836 81.6219 6.3606C81.6219 4.5364 81.5957 2.71875 80.8097 1.01246C80.7802 0.95023 80.8228 0.855254 80.8391 0.724253C82.2212 0.724253 83.6065 0.652202 84.982 0.750453C85.886 0.815954 86.518 1.46441 87.0289 2.20457C89.6359 5.98069 92.2559 9.75026 94.8694 13.5198C98.3016 18.4684 101.74 23.4137 105.173 28.3656C106.542 30.3404 107.898 32.3251 109.263 34.3032C109.378 34.4703 109.512 34.6242 109.666 34.8174C109.666 32.5576 109.813 30.3568 109.633 28.1855C109.335 24.6124 108.89 21.0492 108.382 17.499C108.012 14.9216 107.429 12.3736 106.954 9.81249C106.535 7.54616 106.08 5.28311 105.739 3.00368C105.467 1.19586 105.982 0.681677 107.796 0.684952C109.077 0.684952 110.357 0.691502 111.641 0.698052C111.693 0.698052 111.746 0.727528 111.831 0.750453C111.608 1.62489 111.323 2.4895 111.176 3.37704C111.025 4.28422 110.947 5.21433 110.947 6.13462C110.93 15.2818 110.937 24.4323 110.937 33.5795C110.937 35.4626 111.084 37.3196 111.926 39.1405C111.647 39.1896 111.448 39.2486 111.248 39.2551C110.593 39.2682 109.931 39.1962 109.286 39.2715C107.459 39.4844 106.273 38.7508 105.241 37.2115C101.505 31.657 97.6401 26.1877 93.8279 20.6824C91.3553 17.106 88.8892 13.5264 86.4263 9.94022C85.3751 8.4075 84.3369 6.86495 83.2987 5.32241C83.1939 5.16848 83.1284 4.99163 83.0465 4.8246C82.9581 4.88355 82.8697 4.93923 82.7812 4.99818C82.8795 7.56909 82.9221 10.1433 83.0924 12.7076C83.2397 14.9019 83.5116 17.0929 83.7768 19.2774C83.9439 20.6496 84.1895 22.0153 84.422 23.381C84.7364 25.2248 85.0705 27.0687 85.4045 28.9093C85.8008 31.1003 86.2135 33.2847 86.6032 35.4757C86.7211 36.1438 86.8095 36.8218 86.8652 37.4964C86.9569 38.587 86.41 39.2224 85.3259 39.2453C83.8358 39.2748 82.3456 39.2518 80.6885 39.2518V39.2584Z" fill="white"/> 1428<path d="M15.58 0.0135457C18.1542 0.00372058 21.331 0.606328 24.2065 2.3159C26.558 3.71434 28.1464 5.74159 28.8505 8.4173C29.2075 9.76989 29.0961 10.176 27.809 10.6673C26.8364 11.0373 25.7949 11.2895 24.76 11.4303C23.9412 11.5417 23.7251 11.2044 23.7054 10.3725C23.6792 9.23278 23.748 8.07342 23.5482 6.96318C23.0537 4.2318 20.5876 2.0408 17.8824 1.46111C15.6324 0.979683 13.448 0.986233 11.293 1.73294C8.56819 2.67615 6.75709 4.44467 6.55076 7.48064C6.35753 10.3496 7.68392 12.403 10.0714 13.8604C12.5146 15.3538 15.2067 16.2676 17.8922 17.201C20.7841 18.2031 23.6628 19.2642 26.1748 21.0786C29.5022 23.4825 30.4029 26.9114 29.892 30.7858C29.4531 34.1165 27.4586 36.301 24.6716 37.8599C22.8867 38.8588 20.9282 39.5367 18.8944 39.6907C16.6805 39.8577 14.4076 39.9821 12.2231 39.6808C7.45467 39.0258 3.41982 37.0346 1.15022 32.4561C0.459187 31.0445 0.0825579 29.5544 0.000681894 28.002C-0.0156933 27.7106 0.26596 27.2095 0.511588 27.1342C1.74628 26.751 2.99734 26.3711 4.27133 26.1909C5.3652 26.037 5.70908 26.6003 5.68615 27.7335C5.65995 29.0271 5.65995 30.3404 5.84335 31.6177C6.19706 34.0805 7.5431 35.9899 9.6555 37.2639C12.0823 38.7278 14.7154 39.1863 17.5483 38.6787C19.6607 38.2988 21.557 37.6176 23.0471 35.9931C24.5766 34.3229 24.9237 32.3513 24.7371 30.1832C24.5078 27.4944 22.867 25.834 20.7153 24.5403C17.961 22.8864 14.9185 21.8974 11.9317 20.774C9.08564 19.7064 6.33461 18.4324 4.11413 16.261C1.92641 14.1191 1.18625 11.5024 1.6251 8.53192C2.20806 4.61825 4.80189 2.47965 8.28653 1.17618C10.3957 0.383625 12.5932 0.0430211 15.58 0.0135457Z" fill="white"/> 1429<path d="M162.384 0.721313H169.022C168.97 0.947291 168.931 1.12414 168.888 1.301C168.652 2.29661 168.217 3.28894 168.21 4.28456C168.161 14.7385 168.161 25.1891 168.21 35.6431C168.217 36.7992
1429168.636 37.9552 168.878 39.1768H162.423C162.636 38.0895 162.872 37.0415 163.039 35.9837C163.153 35.2632 163.229 34.5263 163.232 33.7959C163.245 24.5407 163.275 15.2854 163.206 6.03015C163.196 4.51053 162.741 2.99419 162.492 1.47457C162.453 1.23877 162.423 0.999692 162.384 0.721313Z" fill="white"/> 1430</svg> 1431 1432 </a><div class="header__icons"> 1433 <div class="desktop-localization-wrapper"> 1434</div> 1435 1436 1437 <a href="/pages/product-finder" class="header__menu-item link medium-hide small-hide"><span>SPF Finder</span></a> 1438 <a href="/blogs/light-reading" class="header__menu-item link medium-hide small-hide"><span>Blog</span></a><a 1439 href="https://sonniskin.com/customer_authentication/redirect?locale=en®ion_country=US" 1440 class="header__menu-item header__icon header__icon--account link focus-inset medium-hide small-hide" 1441 rel="nofollow" 1442 ><span>Login</span> 1443<span class="visually-hidden">Log in</span> 1444 </a><a href="/cart" class="header__icon header__icon--cart link focus-inset" id="cart-icon-bubble"> 1445 1446 <span class="svg-wrapper"><svg width="20" height="16" viewBox="0 0 20 16" class="icon icon-cart-empty" fill="none" xmlns="http://www.w3.org/2000/svg"> 1447<path d="M18.3335 5.90834H14.3418L10.6918 0.441675C10.5335 0.208342 10.2668 0.0916748 10.0002 0.0916748C9.7335 0.0916748 9.46683 0.208342 9.3085 0.450008L5.6585 5.90834H1.66683C1.2085 5.90834 0.833496 6.28334 0.833496 6.74167C0.833496 6.81667 0.841829 6.89167 0.866829 6.96667L2.9835 14.6917C3.17516 15.3917 3.81683 15.9083 4.5835 15.9083H15.4168C16.1835 15.9083 16.8252 15.3917 17.0252 14.6917L19.1418 6.96667L19.1668 6.74167C19.1668 6.28334 18.7918 5.90834 18.3335 5.90834ZM10.0002 2.40834L12.3335 5.90834H7.66683L10.0002 2.40834ZM15.4168 14.2417L4.59183 14.25L2.7585 7.57501H17.2502L15.4168 14.2417Z" fill="white"/> 1448</svg> 1449</span> 1450 1451 <span class="visually-hidden">Cart</span></a> 1452 </div> 1453 </header> 1454</sticky-header> 1455 1456<cart-notification> 1457 <div class="cart-notification-wrapper page-width"> 1458 <div 1459 id="cart-notification" 1460 class="cart-notification focus-inset color-scheme-1 gradient" 1461 aria-modal="true" 1462 aria-label="Item added to your cart" 1463 role="dialog" 1464 tabindex="-1" 1465 > 1466 <div class="cart-notification__header"> 1467 <h2 class="cart-notification__heading caption-large text-body"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1468Item added to your cart 1469 </h2> 1470 <button 1471 type="button" 1472 class="cart-notification__close modal__close-button link link--text focus-inset" 1473 aria-label="Close" 1474 > 1475 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1476</span> 1477 </button> 1478 </div> 1479 <div id="cart-notification-product" class="cart-notification-product"></div> 1480 <div class="cart-notification__links"> 1481 <a 1482 href="/cart" 1483 id="cart-notification-button" 1484 class="button button--secondary button--full-width" 1485 >View cart</a> 1486 <form action="/cart" method="post" id="cart-notification-form"> 1487 <button class="button button--primary button--full-width" name="checkout"> 1488 Check out 1489 </button> 1490 </form> 1491 <button type="button" class="link button-label">Continue shopping</button> 1492 </div> 1493 </div> 1494 </div> 1495</cart-notification> 1496<style data-shopify> 1497 .cart-notification { 1498 display: none; 1499 } 1500</style> 1501 1502
1503<script type="application/ld+json"> 1504 { 1505 "@context": "http://schema.org", 1506 "@type": "Organization", 1507 "name": "SONNI", 1508 1509 "sameAs": [ 1510 "", 1511 "", 1512 "", 1513 "https:\/\/instagram.com\/sonniskin", 1514 "https:\/\/tiktok.com\/@sonniskin", 1515 "", 1516 "", 1517 "", 1518 "" 1519 ], 1520 "url": "https:\/\/sonniskin.com" 1521 } 1522</script>
1522 1523</div> 1524<!-- END sections: header-group --> 1525 1526 <main id="MainContent" class=" content-for-layout focus-none" role="main" tabindex="-1"> 1527 <section id="shopify-section-template--26813936501052__main" class="shopify-section section"><link href="//sonniskin.com/cdn/shop/t/13/assets/component-article-card.css?v=135852286801414527911782903944" rel="stylesheet" type="text/css" media="all" /> 1528<link href="//sonniskin.com/cdn/shop/t/13/assets/component-card.css?v=108051552473074739101785334861" rel="stylesheet" type="text/css" media="all" /> 1529<link href="//sonniskin.com/cdn/shop/t/13/assets/section-main-blog.css?v=3664748673270112731782903944" rel="stylesheet" type="text/css" media="all" /> 1530<style data-shopify>.section-template--26813936501052__main-padding { 1531 padding-top: 48px; 1532 padding-bottom: 48px; 1533 } 1534 1535 @media screen and (min-width: 750px) { 1536 .section-template--26813936501052__main-padding { 1537 padding-top: 64px; 1538 padding-bottom: 64px; 1539 } 1540 }</style><div class="main-blog section-template--26813936501052__main-padding"> 1541 <div class="container-fluid"> 1542 <h1 class="h2 title--primary scroll-trigger animate--fade-in"> 1543 Light Reading 1544 </h1> 1545 1546 <div class="main-blog__nav"> 1547 <div class="main-blog__nav-wrapper"> 1548 <nav class="blog-nav"> 1549 <ul class="menu "> 1550 1551 1552 1553 1554 1555 1556 <li class="menu-item all"><a href="/blogs/light-reading" class="nav-item site-nav--active" title="">All</a></li> 1557 1558 1559 1560 1561 1562 1563 <li class="menu-item the-system"><a href="/blogs/light-reading/tagged/the-system" class="nav-item " title="">The System</a></li> 1564 1565 1566 1567 1568 1569 1570 <li class="menu-item ask-sonni"><a href="/blogs/light-reading/tagged/ask-sonni" class="nav-item " title="">
1570Ask SONNI</a></li> 1571 1572 1573 1574 1575 1576 1577 <li class="menu-item life-in-the-sun"><a href="/blogs/light-reading/tagged/life-in-the-sun" class="nav-item " title="">Life in the Sun</a></li> 1578 1579 </ul> 1580</nav> 1581 </div> 1582 </div> 1583 1584 <div class="blog-articles blog-articles--collage"><div 1585 class="blog-articles__article article scroll-trigger animate--slide-in" 1586 1587 data-cascade 1588 style="--animation-order: 1;" 1589 1590 > 1591<div class="article-card-wrapper card-wrapper underline-links-hover"> 1592 1593 <div 1594 class=" 1595 card article-card 1596 card--standard 1597 article-card__image--medium 1598 card--media 1599 1600 1601 " 1602 style="--ratio-percent: 66.6875%;" 1603 > 1604 <div 1605 class="card__inner color-scheme-2 gradient ratio" 1606 style="--ratio-percent: 66.6875%;" 1607 ><div class="article-card__image-wrapper card__media"> 1608 <div 1609 class="article-card__image media media--hover-effect" 1610 1611 > 1612 1613 <img 1614 srcset="//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=165 165w,//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=360 360w,//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=533 533w,//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=720 720w,//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=1000 1000w,//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=1500 1500w,//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089 1600w 1615 " 1616 src="//sonniskin.com/cdn/shop/articles/DTS_Key_Details_Nate_Embrey_Photos_ID2120_1.jpg?v=1790891089&width=533" 1617 sizes="(min-width: 1200px) 550px, (min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)" 1618 alt="Do I Need to Change My Skincare Routine for Fall?" 1619 class="motion-reduce" 1620 1621 loading="lazy" 1622 1623 width="1600" 1624 height="1067" 1625 > 1626 1627 </div> 1628 </div><div class="card__content"> 1629 <div class="card__information"> 1630 <h3 class="card__heading h2"> 1631 <a href="/blogs/light-reading/do-i-need-to-change-my-skincare-routine-for-fall" class="full-unstyled-link"> 1632 Do I Need to Change My Skincare Routine for Fall? 1633 </a> 1634 </h3> 1635 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width">Short answer: no, you don't need a new routine. You need two or three small adjustments. 1636</p><div class="article-card__footer"></div></div></div> 1637 </div> 1638 <div class="card__content"> 1639 <div class="card__information"> 1640 1641 1642 1643 1644 <p class="article-card__tag body3-text">Ask SONNI</p> 1645 1646 1647 <h3 class="card__heading"> 1648 <a href="/blogs/light-reading/do-i-need-to-change-my-skincare-routine-for-fall" class="full-unstyled-link"> 1649 Do I Need to Change My Skincare Routine for Fall? 1650 </a> 1651 </h3> 1652 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width body2-text">Short answer: no, you don't need a new routine. You need two or three small adjustments. 1653</p><div class="article-card__footer"></div></div></div> 1654 </div> 1655 </div></div><div
1656 class="blog-articles__article article scroll-trigger animate--slide-in" 1657 1658 data-cascade 1659 style="--animation-order: 2;" 1660 1661 > 1662<div class="article-card-wrapper card-wrapper underline-links-hover"> 1663 1664 <div 1665 class=" 1666 card article-card 1667 card--standard 1668 article-card__image--medium 1669 card--media 1670 1671 1672 " 1673 style="--ratio-percent: 56.75%;" 1674 > 1675 <div 1676 class="card__inner color-scheme-2 gradient ratio" 1677 style="--ratio-percent: 56.75%;" 1678 ><div class="article-card__image-wrapper card__media"> 1679 <div 1680 class="article-card__image media media--hover-effect" 1681 1682 > 1683 1684 <img 1685 srcset="//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=165 165w,//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=360 360w,//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=533 533w,//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=720 720w,//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=1000 1000w,//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=1500 1500w,//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482 2000w 1686 " 1687 src="//sonniskin.com/cdn/shop/articles/Desktop_Hero_-_SEAL_blog.png?v=1789674482&width=533" 1688 sizes="(min-width: 1200px) 550px, (min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)" 1689 alt="Why Allure Picked a Sheet Mask From a Suncare Brand" 1690 class="motion-reduce" 1691 1692 loading="lazy" 1693 1694 width="2000" 1695 height="1135" 1696 > 1697 1698 </div> 1699 </div><div class="card__content"> 1700 <div class="card__information"> 1701 <h3 class="card__heading h2"> 1702 <a href="/blogs/light-reading/why-allure-picked-a-sheet-mask-from-a-suncare-brand" class="full-unstyled-link"> 1703 Why Allure Picked a Sheet Mask From a Suncare B... 1704 </a> 1705 </h3> 1706 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width">SONNI's Restoration Electrolyte Sheet Mask is a 2026 Allure SKIN Best of Beauty winner, which raises a fair question: why did Allure pick a sheet mask from a skincare brand? 1707</p><div class="article-card__footer"></div></div></div> 1708 </div> 1709 <div class="card__content"> 1710 <div class="card__information"> 1711 1712 1713 1714 1715 <p class="article-card__tag body3-text">The System</p> 1716 1717 1718 <h3 class="card__heading"> 1719 <a href="/blogs/light-reading/why-allure-picked-a-sheet-mask-from-a-suncare-brand" class="full-unstyled-link"> 1720 Why Allure Picked a Sheet Mask From a Suncare Brand 1721 </a> 1722 </h3> 1723 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width body2-text">SONNI's Restoration Electrolyte Sheet Mask is a 2026 Allure SKIN Best of Beauty winner, which raises a fair question: why did Allure pick a sheet mask from a skincare brand? 1724</p><div class="article-card__footer"></div></div></div> 1725 </div> 1726 </div></div><div
1727 class="blog-articles__article article scroll-trigger animate--slide-in" 1728 1729 data-cascade 1730 style="--animation-order: 3;" 1731 1732 > 1733<div class="article-card-wrapper card-wrapper underline-links-hover"> 1734 1735 <div 1736 class=" 1737 card article-card 1738 card--standard 1739 article-card__image--medium 1740 card--media 1741 1742 1743 " 1744 style="--ratio-percent: 133.28125%;" 1745 > 1746 <div 1747 class="card__inner color-scheme-2 gradient ratio" 1748 style="--ratio-percent: 133.28125%;" 1749 ><div class="article-card__image-wrapper card__media"> 1750 <div 1751 class="article-card__image media media--hover-effect" 1752 1753 > 1754 1755 <img 1756 srcset="//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074&width=165 165w,//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074&width=360 360w,//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074&width=533 533w,//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074&width=720 720w,//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074&width=1000 1000w,//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074 1280w 1757 " 1758 src="//sonniskin.com/cdn/shop/articles/DTS_SUITE_TALK_PALI_MENDEZ_Photos_ID14173.jpg?v=1789083074&width=533" 1759 sizes="(min-width: 1200px) 550px, (min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)" 1760 alt="Why Fall Is the Season for Dark Spots (and What SPF Has to Do With It)" 1761 class="motion-reduce" 1762 1763 loading="lazy" 1764 1765 width="1280" 1766 height="1706" 1767 > 1768 1769 </div> 1770 </div><div class="card__content"> 1771 <div class="card__information"> 1772 <h3 class="card__heading h2"> 1773 <a href="/blogs/light-reading/why-fall-is-the-season-for-dark-spots-and-what-spf-has-to-do-with-it" class="full-unstyled-link"> 1774 Why Fall Is the Season for Dark Spots (and What... 1775 </a> 1776 </h3> 1777 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width">September and October are peak months for post-summer hyperpigmentation and melasma to surface, and while brightening actives can help, SPF remains the non-negotiable foundation. 1778</p><div class="article-card__footer"></div></div></div> 1779 </div> 1780 <div class="card__content"> 1781 <div class="card__information"> 1782 1783 1784 1785 1786 <p class="article-card__tag body3-text">The System</p> 1787 1788 1789 <h3 class="card__heading"> 1790 <a href="/blogs/light-reading/why-fall-is-the-season-for-dark-spots-and-what-spf-has-to-do-with-it" class="full-unstyled-link"> 1791 Why Fall Is the Season for Dark Spots (and What SPF Has to Do With It) 1792 </a> 1793 </h3> 1794 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width body2-text">September and October are peak months for post-summer hyperpigmentation and melasma to surface, and while brightening actives can help, SPF remains the non-negotiable foundation. 1795</p><div class="article-card__footer"></div></div></div> 1796 </div> 1797 </div></div><div
1798 class="blog-articles__article article scroll-trigger animate--slide-in" 1799 1800 data-cascade 1801 style="--animation-order: 4;" 1802 1803 > 1804<div class="article-card-wrapper card-wrapper underline-links-hover"> 1805 1806 <div 1807 class=" 1808 card article-card 1809 card--standard 1810 article-card__image--medium 1811 card--media 1812 1813 1814 " 1815 style="--ratio-percent: 150.00000000000003%;" 1816 > 1817 <div 1818 class="card__inner color-scheme-2 gradient ratio" 1819 style="--ratio-percent: 150.00000000000003%;" 1820 ><div class="article-card__image-wrapper card__media"> 1821 <div 1822 class="article-card__image media media--hover-effect" 1823 1824 > 1825 1826 <img 1827 srcset="//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=165 165w,//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=360 360w,//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=533 533w,//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=720 720w,//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=1000 1000w,//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=1500 1500w,//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092 1600w 1828 " 1829 src="//sonniskin.com/cdn/shop/articles/DTS_BY_WATER_Daniel_Faro_Photos_ID7959_1.jpg?v=1788471092&width=533" 1830 sizes="(min-width: 1200px) 550px, (min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)" 1831 alt="The End-of-Summer Skin Reset" 1832 class="motion-reduce" 1833 1834 loading="lazy" 1835 1836 width="1600" 1837 height="2400" 1838 > 1839 1840 </div> 1841 </div><div class="card__content"> 1842 <div class="card__information"> 1843 <h3 class="card__heading h2"> 1844 <a href="/blogs/light-reading/the-end-of-summer-skin-reset" class="full-unstyled-link"> 1845 The End-of-Summer Skin Reset 1846 </a> 1847 </h3> 1848 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width">Feeling like your skin is off leading into Labor Day? Youâre not alone. 1849The good news: your skin can bounce back with the right reset. 1850</p><div class="article-card__footer"></div></div></div> 1851 </div> 1852 <div class="card__content"> 1853 <div class="card__information"> 1854 1855 1856 1857 1858 <p class="article-card__tag body3-text">Life in the Sun</p> 1859 1860 1861 <h3 class="card__heading"> 1862 <a href="/blogs/light-reading/the-end-of-summer-skin-reset" class="full-unstyled-link"> 1863 The End-of-Summer Skin Reset 1864 </a> 1865 </h3> 1866 <div class="article-card__info caption-with-letter-spacing h5"></div><p class="article-card__excerpt rte-width body2-text">Feeling like your skin is off leading into Labor Day? Youâre not alone. 1867The good news: your skin can bounce back with the right reset. 1868</p><div class="article-card__footer"></div></div></div> 1869 </div> 1870 </div></div></div> 1871 1872<link href="//sonniskin.com/cdn/shop/t/13/assets/component-pagination.css?v=136206814810731739951782903944" rel="stylesheet" type="text/css" media="all" /> 1873<div class="pagination-wrapper" data-page="1"> 1874 <nav class="pagination" role="navigation" aria-label="Pagination"> 1875 <ul class="pagination__list list-unstyled" role="list"><li><a 1876 role="link" 1877 aria-disabled="true" 1878 class="pagination__item pagination__item--current light" 1879 aria-current="page" 1880 aria-label="Page 1" 1881 >1</a></li><li><a 1882 href="/blogs/light-reading?page=2" 1883 class="pagination__item link" 1884 aria-label="Page 2" 1885 >2</a></li><li><a 1886 href="/blogs/light-reading?page=3" 1887 class="pagination__item link" 1888 aria-label="Page 3" 1889 >3</a></li><li><span class="pagination__item">…</span></li><li><a 1890 href="/blogs/light-reading?page=9" 1891 class="pagination__item link" 1892 aria-label="Page 9" 1893 >9</a></li><li> 1894 <a 1895 href="/blogs/light-reading?page=2" 1896 class="pagination__item pagination__item--prev pagination__item-arrow link motion-reduce" 1897 aria-label="Next page" 1898 >
1899 <span class="svg-wrapper"><svg class="icon icon-caret" width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"> 1900<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="white"/> 1901<line x1="0.353553" y1="0.646447" x2="6.35355" y2="6.64645" stroke="#002459"/> 1902<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="white"/> 1903<line y1="-0.5" x2="8.48528" y2="-0.5" transform="matrix(-0.707107 0.707107 0.707107 0.707107 12 1)" stroke="#002459"/> 1904</svg> 1905</span> 1906 </a> 1907 </li></ul> 1908 </nav> 1909 </div></div> 1910 </div> 1911</section> 1912 </main> 1913 1914 <!-- BEGIN sections: footer-group --> 1915<div id="shopify-section-sections--26813932601660__footer" class="shopify-section shopify-section-group-footer-group"> 1916<link href="//sonniskin.com/cdn/shop/t/13/assets/section-footer.css?v=60318643098753476351782903944" rel="stylesheet" type="text/css" media="all" /> 1917<link href="//sonniskin.com/cdn/shop/t/13/assets/component-newsletter.css?v=4727253280200485261782903944" rel="stylesheet" type="text/css" media="all" /> 1918<link href="//sonniskin.com/cdn/shop/t/13/assets/component-list-menu.css?v=151968516119678728991782903944" rel="stylesheet" type="text/css" media="all" /> 1919<link href="//sonniskin.com/cdn/shop/t/13/assets/component-list-payment.css?v=69253961410771838501782903944" rel="stylesheet" type="text/css" media="all" /> 1920<link href="//sonniskin.com/cdn/shop/t/13/assets/component-list-social.css?v=35792976012981934991782903944" rel="stylesheet" type="text/css" media="all" /> 1921 1922 1923 1924<footer class="footer color- gradient section-sections--26813932601660__footer-padding"> 1925 1926 1927 <div class="footer__content-wrapper body3-text"> 1928 <div class="footer__content-left"> 1929 <div class="footer__content-left--top"> 1930 1931 <div class="footer__menus"> 1932 1933 <div class="footer__menu-column"> 1934 1935 <h4 class="title body3-text">Shop</h4> 1936 1937 1938 1939 1940 <ul class="menu vertical"> 1941 1942 1943 1944 1945 1946 1947 <li class="menu-item shop-all"><a href="/collections/all" class="nav-item " title="">Shop All</a></li> 1948 1949 1950 1951 1952 1953 1954 <li class="menu-item sunday"><a href="/collections/sunday" class="nav-item " title="">SunDay</a></li> 1955 1956 1957 1958 1959 1960 1961 <li class="menu-item sundown"><a href="/collections/sundown" class="nav-item " title="">SunDown</a></li> 1962 1963 1964 1965 1966 1967 1968 <li class="menu-item sets"><a href="/collections/sets" class="nav-item " title="">Sets</a></li> 1969 1970 1971 1972 1973 1974 1975 <li class="menu-item gifts-more"><a href="/collections/gifts" class="nav-item " title="">Gifts & More</a></li> 1976 1977 </ul> 1978 1979 1980 1981 </div> 1982 1983 <div class="footer__menu-column"> 1984 1985 <h4 class="title body3-text">Learn</h4> 1986 1987 1988 1989 1990 <ul class="menu vertical"> 1991 1992 1993 1994 1995 1996 1997 <li class="menu-item science"><a href="/pages/science" class="nav-item " title="">Science</a></li> 1998 1999 2000 2001 2002 2003 2004 <li class="menu-item sustainability"><a href="/pages/sustainability" class="nav-item " title="">Sustainability</a></li> 2005 2006 2007 2008 2009 2010 2011 <li class="menu-item about-sonni"><a href="/pages/about-us" class="nav-item " title="">About SONNI</a></li> 2012 2013 2014 2015 2016 2017 2018 <li class="menu-item light-reading"><a href="/blogs/light-reading" class="nav-item " title="">Light Reading</a></li> 2019 2020 </ul> 2021 2022 2023 2024 </div> 2025 2026 <div class="footer__menu-column"> 2027 2028 <h4 class="title body3-text">Support</h4> 2029 2030 2031 2032 2033 <ul class="menu vertical"> 2034 2035 2036 2037 2038 2039 2040 <li class="menu-item faq"><a href="/pages/faqs" class="nav-item " title="">FAQ</a></li> 2041 2042 2043 2044 2045 2046 2047 <li class="menu-item returns-exchanges"><a href="/policies/refund-policy" class="nav-item " title="">Returns & Exchanges</a></li> 2048 2049 2050 2051 2052 2053 2054 <li class="menu-item press"><a href="/pages/press" class="nav-item " title="">Press</a></li> 2055 2056 2057 2058 2059 2060 2061 <li class="menu-item retail-wholesale-partners"><a href="/pages/wholesale" class="nav-item " title="">Retail & Wholesale Partners</a></li> 2062 2063 2064 2065 2066 2067 2068 <li class="menu-item contact-us"><a href="/pages/contact" class="nav-item " title="">Contact Us</a></li> 2069 2070 2071 2072 2073 2074 2075 <li class="menu-item pay-with-hsa-fsa"><a href="/pages/sonni-hsa-or-fsa" class="nav-item " title="">Pay with HSA/FSA</a></li> 2076 2077 2078 2079 2080 2081 2082 <li class="menu-item where-to-find-us"><a href="/pages/where-to-find-us" class="nav-item " title="">Where to Find Us</a></li> 2083 2084 </ul> 2085 2086 2087 2088 </div> 2089 2090 </div> 2091 2092 </div>
2093 <div class="footer__content-left--bottom"> 2094 <div class="footer-logo d-none d-lg-block"> 2095 <a href="/"><svg width="170" height="40" viewBox="0 0 170 40" fill="none" xmlns="http://www.w3.org/2000/svg"> 2096<path d="M123.613 5.08664C123.613 5.73182 123.581 6.37701 123.62 7.01892C123.81 10.3038 123.905 13.6017 124.252 16.8735C124.576 19.9226 125.139 22.9454 125.663 25.9716C126.187 28.9912 126.806 31.9976 127.366 35.0107C127.511 35.7836 127.619 36.5663 127.701 37.3491C127.828 38.5608 127.258 39.2289 126.053 39.2519C124.563 39.2813 123.07 39.2584 121.465 39.2584C122.834 35.9965 122.441 32.6854 122.46 29.4235C122.5 22.916 122.5 16.4085 122.46 9.90095C122.444 6.85189 122.84 3.75043 121.481 0.779963C123.017 0.779963 124.491 0.632587 125.909 0.845464C126.597 0.950265 127.357 1.60855 127.792 2.22098C131.143 6.93704 134.434 11.6924 137.719 16.4543C141.462 21.8778 145.183 27.3176 148.916 32.7444C149.388 33.4288 149.892 34.0871 150.38 34.7585C150.419 34.7323 150.495 34.7028 150.495 34.6766C150.439 32.2302 150.439 29.7804 150.302 27.3405C150.197 25.4443 149.971 23.548 149.709 21.6649C149.352 19.0842 148.942 16.51 148.497 13.9424C147.924 10.6542 147.292 7.3759 146.689 4.0943C146.581 3.50807 146.457 2.91856 146.427 2.32906C146.375 1.37275 146.902 0.747213 147.839 0.707913C149.145 0.655512 150.455 0.688262 151.766 0.684987C152.034 0.684987 152.306 0.684987 152.673 0.684987C152.466 1.42187 152.214 2.06705 152.113 2.73844C151.949 3.83558 151.795 4.94909 151.792 6.05605C151.766 15.2589 151.772 24.4618 151.779 33.6646C151.779 35.5085 151.834 37.3523 152.751 39.1602C152.421 39.2027 152.198 39.2551 151.972 39.2584C151.045 39.2682 150.115 39.2191 149.191 39.2748C147.966 39.3436 147.118 38.7868 146.46 37.8272C143.273 33.1767 140.1 28.5196 136.894 23.8821C133.327 18.7272 129.724 13.5952 126.142 8.45011C125.346 7.30384 124.576 6.1412 123.793 4.98512C123.731 5.02114 123.669 5.05389 123.607 5.08992L123.613 5.08664Z" fill="white"/> 2097<path d="M35.48 18.4456C35.5946 12.8158 37.612 8.04411 42.0137 4.42846C44.2964 2.55186 46.9295 1.33682 49.8181 0.61304C52.5953 -0.0845433 55.3693 -0.222095 58.1465 0.383787C60.5701 0.911069 62.8233 1.86411 64.8505 3.36407C68.3614 5.96118 70.6768 9.38032 72.1637 13.4381C73.1593 16.1466 73.7685 18.9303 73.68 21.7993C73.513 27.095 71.5676 31.6473 67.5262 35.1811C65.1027 37.3 62.2534 38.6264 59.1356 39.4124C56.5876 40.0543 54.0102 40.2083 51.4458 39.6843C48.6882 39.121 46.1468 38.0304 43.887 36.2782C40.553 33.6909 38.3391 30.3111 36.9308 26.4204C36.0073 23.8724 35.4112 21.2098 35.48 18.4489V18.4456ZM68.5677 24.6322C68.3417 23.2829 68.1256 21.1377 67.595 19.0712C66.8352 16.1105 65.7119 13.2743 64.094 10.6347C61.7491 6.80614 58.8736 3.6097 54.4392 2.23091C50.5943 1.03552 47.1097 1.82808 44.1818 4.58566C41.5716 7.04849 40.7692 10.3137 40.6316 13.7427C40.4875 17.283 41.2932 20.689 42.4853 24.0066C43.7855 27.6223 45.5376 30.9759 48.2821 33.7335C50.6401 36.1046 53.2864 37.8928 56.771 38.1745C60.3998 38.4692 63.3964 37.3033 65.6726 34.4868C67.7981 31.8602 68.4203 28.7096 68.5677 24.6289V24.6322Z" fill="white"/> 2098<path d="M80.6885 39.2584C81.6382 37.0641 81.6251 34.9452 81.6219 32.8262C81.6186 24.0032 81.6219 15.1836 81.6219 6.3606C81.6219 4.5364 81.5957 2.71875 80.8097 1.01246C80.7802 0.95023 80.8228 0.855254 80.8391 0.724253C82.2212 0.724253 83.6065 0.652202 84.982 0.750453C85.886 0.815954 86.518 1.46441 87.0289 2.20457C89.6359 5.98069 92.2559 9.75026 94.8694 13.5198C98.3016 18.4684 101.74 23.4137 105.173 28.3656C106.542 30.3404 107.898 32.3251 109.263 34.3032C109.378 34.4703 109.512 34.6242 109.666 34.8174C109.666 32.5576 109.813 30.3568 109.633 28.1855C109.335 24.6124 108.89 21.0492 108.382 17.499C108.012 14.9216 107.429 12.3736 106.954 9.81249C106.535 7.54616 106.08 5.28311 105.739 3.00368C105.467 1.19586 105.982 0.681677 107.796 0.684952C109.077 0.684952 110.357 0.691502 111.641 0.698052C111.693 0.698052 111.746 0.727528 111.831 0.750453C111.608 1.62489 111.323 2.4895 111.176 3.37704C111.025 4.28422 110.947 5.21433 110.947 6.13462C110.93 15.2818 110.937 24.4323 110.937 33.5795C110.937 35.4626 111.084 37.3196 111.926 39.1405C111.647 39.1896 111.448 39.2486 111.248 39.2551C110.593 39.2682 109.931 39.1962 109.286 39.2715C107.459 39.4844 106.273 38.7508 105.241 37.2115C101.505 31.657 97.6401 26.1877 93.8279 20.6824C91.3553 17.106 88.8892 13.5264 86.4263 9.94022C85.3751 8.4075 84.3369 6.86495 83.2987 5.32241C83.1939 5.
209816848 83.1284 4.99163 83.0465 4.8246C82.9581 4.88355 82.8697 4.93923 82.7812 4.99818C82.8795 7.56909 82.9221 10.1433 83.0924 12.7076C83.2397 14.9019 83.5116 17.0929 83.7768 19.2774C83.9439 20.6496 84.1895 22.0153 84.422 23.381C84.7364 25.2248 85.0705 27.0687 85.4045 28.9093C85.8008 31.1003 86.2135 33.2847 86.6032 35.4757C86.7211 36.1438 86.8095 36.8218 86.8652 37.4964C86.9569 38.587 86.41 39.2224 85.3259 39.2453C83.8358 39.2748 82.3456 39.2518 80.6885 39.2518V39.2584Z" fill="white"/> 2099<path d="M15.58 0.0135457C18.1542 0.00372058 21.331 0.606328 24.2065 2.3159C26.558 3.71434 28.1464 5.74159 28.8505 8.4173C29.2075 9.76989 29.0961 10.176 27.809 10.6673C26.8364 11.0373 25.7949 11.2895 24.76 11.4303C23.9412 11.5417 23.7251 11.2044 23.7054 10.3725C23.6792 9.23278 23.748 8.07342 23.5482 6.96318C23.0537 4.2318 20.5876 2.0408 17.8824 1.46111C15.6324 0.979683 13.448 0.986233 11.293 1.73294C8.56819 2.67615 6.75709 4.44467 6.55076 7.48064C6.35753 10.3496 7.68392 12.403 10.0714 13.8604C12.5146 15.3538 15.2067 16.2676 17.8922 17.201C20.7841 18.2031 23.6628 19.2642 26.1748 21.0786C29.5022 23.4825 30.4029 26.9114 29.892 30.7858C29.4531 34.1165 27.4586 36.301 24.6716 37.8599C22.8867 38.8588 20.9282 39.5367 18.8944 39.6907C16.6805 39.8577 14.4076 39.9821 12.2231 39.6808C7.45467 39.0258 3.41982 37.0346 1.15022 32.4561C0.459187 31.0445 0.0825579 29.5544 0.000681894 28.002C-0.0156933 27.7106 0.26596 27.2095 0.511588 27.1342C1.74628 26.751 2.99734 26.3711 4.27133 26.1909C5.3652 26.037 5.70908 26.6003 5.68615 27.7335C5.65995 29.0271 5.65995 30.3404 5.84335 31.6177C6.19706 34.0805 7.5431 35.9899 9.6555 37.2639C12.0823 38.7278 14.7154 39.1863 17.5483 38.6787C19.6607 38.2988 21.557 37.6176 23.0471 35.9931C24.5766 34.3229 24.9237 32.3513 24.7371 30.1832C24.5078 27.4944 22.867 25.834 20.7153 24.5403C17.961 22.8864 14.9185 21.8974 11.9317 20.774C9.08564 19.7064 6.33461 18.4324 4.11413 16.261C1.92641 14.1191 1.18625 11.5024 1.6251 8.53192C2.20806 4.61825 4.80189 2.47965 8.28653 1.17618C10.3957 0.383625 12.5932 0.0430211 15.58 0.0135457Z" fill="white"/> 2100<path d="M162.384 0.721313H169.022C168.97 0.947291 168.931 1.12414 168.888 1.301C168.652 2.29661 168.217 3.28894 168.21 4.28456C168.161 14.7385 168.161 25.1891 168.21 35.6431C168.217 36.7992 168.636 37.9552 168.878 39.1768H162.423C162.636 38.0895 162.872 37.0415 163.039 35.9837C163.153 35.2632 163.229 34.5263 163.232 33.7959C163.245 24.5407 163.275 15.2854 163.206 6.03015C163.196 4.51053 162.741 2.99419 162.492 1.47457C162.453 1.23877 162.423 0.999692 162.384 0.721313Z" fill="white"/> 2101</svg></a> 2102 </div> 2103 </div> 2104 </div> 2105 <div class="footer__content-spacer d-none d-lg-block"> </div> 2106 <div class="footer__content-right"> 2107 2108 <div class="footer__newsletter"> 2109 2110 2111 <h3 class="newsletter-title">Brighten your day.</h3> 2112 2113 2114 2115 <p class="newsletter-description">Join our email list to receive 15% off your first order, plus early access to new launches, exclusive offers, and more.</p> 2116 2117 2118 <div class="klaviyo-form-UWfhVc"></div> 2119 2120 </div> 2121 2122 <div class="footer__social"> 2123 2124 <p class="footer__social-text">Looking to collaborate? <span><a href="mailto:[email protected]">Get in touch</a>.</span></p> 2125 2126 2127 <div class="footer__social-links"> 2128 <ul class="menu"> 2129 2130 2131 2132 2133 2134 <li><a href="https://www.instagram.com/sonniskin"><svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 2135<g clip-path="url(#clip0_150_565)"> 2136<path d="M10.6 1.80078C13.3257 1.80078 13.6485 1.8125 14.7204 1.85937C15.7167 1.90234 16.2546 2.06641 16.6133 2.20313C17.0875 2.38281 17.4302 2.60156 17.7849 2.94922C18.1435 3.30078 18.3627 3.63281 18.546 4.09766C18.6855 4.44922 18.8528 4.98047 18.8967 5.95312C18.9445 7.00781 18.9565 7.32422 18.9565 9.99219C18.9565 12.6641 18.9445 12.9805 18.8967 14.0313C18.8528 15.0078 18.6855 15.5352 18.546 15.8867C18.3627 16.3516 18.1395 16.6875 17.7849 17.0352C17.4262 17.3867 17.0875 17.6016 16.6133 17.7813C16.2546 17.918 15.7127 18.082 14.7204 18.125C13.6445 18.1719 13.3217 18.1836 10.6 18.1836C7.87425 18.1836 7.55146 18.1719 6.47951 18.125C5.48326 18.082 4.94529 17.918 4.58664 17.7813C4.11243 17.6016 3.76972 17.3828 3.41506 17.0352C3.05641 16.6836 2.83724 16.3516 2.65393 15.8867C2.51446 15.5352 2.34709 15.0039 2.30325 14.0313C2.25543 12.9766 2.24348 12.6602 2.24348 9.99219C2.24348 7.32031 2.25543 7.00391 2.30325 5.95312C2.34709 4.97656 2.51446 4.44922 2.65393 4.09766C2.83724 3.63281 3.0604 3.29688 3.41506 2.94922C3.77371 2.59766 4.11243 2.38281 4.58664 2.20313C4.94529 2.06641 5.48725 1.90234 6.47951 1.85937C7.55146 1.8125 7.87425 1.80078 10.6 1.80078ZM10.6 0C7.83041 0 7.48372 0.0117187 6.39582 0.0585938C5.31191 0.105469 4.56672 0.277344 3.92115 0.523438C3.24769 0.78125 2.67784 1.12109 2.11198 1.67969C1.54212 2.23438 1.19543 2.79297 0.932424 3.44922C0.681371 4.08594 0.506032 4.8125 0.458212 5.875C0.410392 6.94531 0.398438 7.28516 0.398438 10C0.398438 12.7148 0.410392 13.0547 0.458212 14.1211C0.506032 15.1836 0.681371 15.9141 0.932424 16.5469C1.19543 17.207 1.54212 17.7656 2.11198 18.3203C2.67784 18.875 3.24769 19.2188 3.91717 19.4727C4.56672 19.7188 5.30792 19.8906 6.39184 19.9375C7.47973 19.9844 7.82643 19.9961 10.596 19.9961C13.3655 19.9961 13.7122 19.9844 14.8001 19.9375C15.884 19.8906 16.6292 19.7188 17.2748 19.4727C17.9443 19.2188 18.5141 18.875 19.08 18.3203C19.6459 17.76
213656 19.9965 17.207 20.2556 16.5508C20.5066 15.9141 20.682 15.1875 20.7298 14.125C20.7776 13.0586 20.7895 12.7188 20.7895 10.0039C20.7895 7.28906 20.7776 6.94922 20.7298 5.88281C20.682 4.82031 20.5066 4.08984 20.2556 3.45703C20.0045 2.79297 19.6578 2.23438 19.088 1.67969C18.5221 1.125 17.9522 0.78125 17.2828 0.527344C16.6332 0.28125 15.892 0.109375 14.8081 0.0625C13.7162 0.0117188 13.3695 0 10.6 0Z" fill="white"/> 2137<path d="M10.6001 4.86328C7.70701 4.86328 5.35986 7.16406 5.35986 10C5.35986 12.8359 7.70701 15.1367 10.6001 15.1367C13.4932 15.1367 15.8403 12.8359 15.8403 10C15.8403 7.16406 13.4932 4.86328 10.6001 4.86328ZM10.6001 13.332C8.72318 13.332 7.20092 11.8398 7.20092 10C7.20092 8.16016 8.72318 6.66797 10.6001 6.66797C12.477 6.66797 13.9993 8.16016 13.9993 10C13.9993 11.8398 12.477 13.332 10.6001 13.332Z" fill="white"/> 2138<path d="M17.271 4.66016C17.271 5.32422 16.7211 5.85938 16.0476 5.85938C15.3702 5.85938 14.8242 5.32031 14.8242 4.66016C14.8242 3.99609 15.3741 3.46094 16.0476 3.46094C16.7211 3.46094 17.271 4 17.271 4.66016Z" fill="white"/> 2139</g> 2140<defs> 2141<clipPath id="clip0_150_565"> 2142<rect width="20.4031" height="20" fill="white" transform="translate(0.398438)"/> 2143</clipPath> 2144</defs> 2145</svg> 2146</a></li> 2147 2148 2149 2150 2151 2152 <li><a href="https://www.tiktok.com/@sonniskin"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 2153<path d="M16.3241 5.57175C15.4919 5.39373 14.7383 4.95454 14.1732 4.31821C13.608 3.68188 13.2609 2.88167 13.1824 2.03425V1.66675H10.3116V13.0601C10.3098 13.5645 10.1501 14.0556 9.85474 14.4645C9.55943 14.8735 9.14341 15.1796 8.66515 15.3398C8.18689 15.5001 7.67044 15.5065 7.18836 15.3581C6.70628 15.2097 6.2828 14.914 5.97745 14.5126C5.66735 14.1044 5.49533 13.608 5.48633 13.0955C5.47734 12.583 5.63183 12.0809 5.92742 11.6621C6.223 11.2433 6.64431 10.9295 7.13024 10.7663C7.61617 10.603 8.14146 10.5988 8.62995 10.7542V7.83758C7.54066 7.687 6.43154 7.88066 5.45774 8.39147C4.48393 8.90228 3.69415 9.7047 3.19884 10.6865C2.70354 11.6683 2.5275 12.7803 2.69535 13.8671C2.86319 14.9538 3.36653 15.961 4.13495 16.7476C4.86774 17.4974 5.80735 18.0118 6.83383 18.2252C7.8603 18.4386 8.92708 18.3412 9.89799 17.9456C10.8689 17.55 11.6999 16.874 12.2849 16.004C12.8699 15.134 13.1824 14.1093 13.1824 13.0609V7.23925C14.3427 8.06869 15.7337 8.51345 17.1599 8.51091V5.65841C16.8791 5.65876 16.5989 5.62971 16.3241 5.57175Z" fill="white"/> 2154</svg> 2155</a></li> 2156 2157 </ul> 2158 2159 2160 <a href="https://www.instagram.com/sonniskin" class="instagram-user">@SONNISKIN</a> 2161 2162 </div> 2163 2164 </div> 2165 2166 2167 <div class="footer__copyright"> 2168 <p class="copyright-links body4-text">SONNI 2026. <a href="/policies/privacy-policy">Privacy Policy.</a> <a href="/policies/privacy-policy">Terms and Conditions.</a></p> 2169 </div> 2170 2171 </div> 2172 </div> 2173 2174 <div class="footer-logo d-block d-lg-none"> 2175 <a href="/"><svg width="170" height="40" viewBox="0 0 170 40" fill="none" xmlns="http://www.w3.org/2000/svg"> 2176<path d="M123.613 5.08664C123.613 5.73182 123.581 6.37701 123.62 7.01892C123.81 10.3038 123.905 13.6017 124.252 16.8735C124.576 19.9226 125.139 22.9454 125.663 25.9716C126.187 28.9912 126.806 31.9976 127.366 35.0107C127.511 35.7836 127.619 36.5663 127.701 37.3491C127.828 38.5608 127.258 39.2289 126.053 39.2519C124.563 39.2813 123.07 39.2584 121.465 39.2584C122.834 35.9965 122.441 32.6854 122.46 29.4235C122.5 22.916 122.5 16.4085 122.46 9.90095C122.444 6.85189 122.84 3.75043 121.481 0.779963C123.017 0.779963 124.491 0.632587 125.909 0.845464C126.597 0.950265 127.357 1.60855 127.792 2.22098C131.143 6.93704 134.434 11.6924 137.719 16.4543C141.462 21.8778 145.183 27.3176 148.916 32.7444C149.388 33.4288 149.892 34.0871 150.38 34.7585C150.419 34.7323 150.495 34.7028 150.495 34.6766C150.439 32.2302 150.439 29.7804 150.302 27.3405C150.197 25.4443 149.971 23.548 149.709 21.6649C149.352 19.0842 148.942 16.51 148.497 13.9424C147.924 10.6542 147.292 7.3759 146.689 4.0943C146.581 3.50807 146.457 2.91856 146.427 2.32906C146.375 1.37275 146.902 0.747213
2176147.839 0.707913C149.145 0.655512 150.455 0.688262 151.766 0.684987C152.034 0.684987 152.306 0.684987 152.673 0.684987C152.466 1.42187 152.214 2.06705 152.113 2.73844C151.949 3.83558 151.795 4.94909 151.792 6.05605C151.766 15.2589 151.772 24.4618 151.779 33.6646C151.779 35.5085 151.834 37.3523 152.751 39.1602C152.421 39.2027 152.198 39.2551 151.972 39.2584C151.045 39.2682 150.115 39.2191 149.191 39.2748C147.966 39.3436 147.118 38.7868 146.46 37.8272C143.273 33.1767 140.1 28.5196 136.894 23.8821C133.327 18.7272 129.724 13.5952 126.142 8.45011C125.346 7.30384 124.576 6.1412 123.793 4.98512C123.731 5.02114 123.669 5.05389 123.607 5.08992L123.613 5.08664Z" fill="white"/> 2177<path d="M35.48 18.4456C35.5946 12.8158 37.612 8.04411 42.0137 4.42846C44.2964 2.55186 46.9295 1.33682 49.8181 0.61304C52.5953 -0.0845433 55.3693 -0.222095 58.1465 0.383787C60.5701 0.911069 62.8233 1.86411 64.8505 3.36407C68.3614 5.96118 70.6768 9.38032 72.1637 13.4381C73.1593 16.1466 73.7685 18.9303 73.68 21.7993C73.513 27.095 71.5676 31.6473 67.5262 35.1811C65.1027 37.3 62.2534 38.6264 59.1356 39.4124C56.5876 40.0543 54.0102 40.2083 51.4458 39.6843C48.6882 39.121 46.1468 38.0304 43.887 36.2782C40.553 33.6909 38.3391 30.3111 36.9308 26.4204C36.0073 23.8724 35.4112 21.2098 35.48 18.4489V18.4456ZM68.5677 24.6322C68.3417 23.2829 68.1256 21.1377 67.595 19.0712C66.8352 16.1105 65.7119 13.2743 64.094 10.6347C61.7491 6.80614 58.8736 3.6097 54.4392 2.23091C50.5943 1.03552 47.1097 1.82808 44.1818 4.58566C41.5716 7.04849 40.7692 10.3137 40.6316 13.7427C40.4875 17.283 41.2932 20.689 42.4853 24.0066C43.7855 27.6223 45.5376 30.9759 48.2821 33.7335C50.6401 36.1046 53.2864 37.8928 56.771 38.1745C60.3998 38.4692 63.3964 37.3033 65.6726 34.4868C67.7981 31.8602 68.4203 28.7096 68.5677 24.6289V24.6322Z" fill="white"/> 2178<path d="M80.6885 39.2584C81.6382 37.0641 81.6251 34.9452 81.6219 32.8262C81.6186 24.0032 81.6219 15.1836 81.6219 6.3606C81.6219 4.5364 81.5957 2.71875 80.8097 1.01246C80.7802 0.95023 80.8228 0.855254 80.8391 0.724253C82.2212 0.724253 83.6065 0.652202 84.982 0.750453C85.886 0.815954 86.518 1.46441 87.0289 2.20457C89.6359 5.98069 92.2559 9.75026 94.8694 13.5198C98.3016 18.4684 101.74 23.4137 105.173 28.3656C106.542 30.3404 107.898 32.3251 109.263 34.3032C109.378 34.4703 109.512 34.6242 109.666 34.8174C109.666 32.5576 109.813 30.3568 109.633 28.1855C109.335 24.6124 108.89 21.0492 108.382 17.499C108.012 14.9216 107.429 12.3736 106.954 9.81249C106.535 7.54616 106.08 5.28311 105.739 3.00368C105.467 1.19586 105.982 0.681677 107.796 0.684952C109.077 0.684952 110.357 0.691502 111.641 0.698052C111.693 0.698052 111.746 0.727528 111.831 0.750453C111.608 1.62489 111.323 2.4895 111.176 3.37704C111.025 4.28422 110.947 5.21433 110.947 6.13462C110.93 15.2818 110.937 24.4323 110.937 33.5795C110.937 35.4626 111.084 37.3196 111.926 39.1405C111.647 39.1896 111.448 39.2486 111.248 39.2551C110.593 39.2682 109.931 39.1962 109.286 39.2715C107.459 39.4844 106.273 38.7508 105.241 37.2115C101.505 31.657 97.6401 26.1877 93.8279 20.6824C91.3553 17.106 88.8892 13.5264 86.4263 9.94022C85.3751 8.4075 84.3369 6.86495 83.2987 5.32241C83.1939 5.16848 83.1284 4.99163 83.0465 4.8246C82.9581 4.88355 82.8697 4.93923 82.7812 4.99818C82.8795 7.56909 82.9221 10.1433 83.0924 12.7076C83.2397 14.9019 83.5116 17.0929 83.7768 19.2774C83.9439 20.6496 84.1895 22.0153 84.422 23.381C84.7364 25.2248 85.0705 27.0687 85.4045 28.9093C85.8008 31.1003 86.2135 33.2847 86.6032 35.4757C86.7211 36.1438 86.8095 36.8218 86.8652 37.4964C86.9569 38.587 86.41 39.2224 85.3259 39.2453C83.8358 39.2748 82.3456 39.2518 80.6885 39.2518V39.2584Z" fill="white"/> 2179<path d="M15.58 0.0135457C18.1542 0.00372058 21.331 0.606328 24.2065 2.3159C26.558 3.71434 28.1464 5.74159 28.8505 8.4173C29.2075 9.76989 29.0961 10.176 27.809 10.6673C26.8364 11.0373 25.7949 11.2895 24.76 11.4303C23.9412 11.5417 23.7251 11.2044 23.7054 10.3725C23.6792 9.23278 23.748 8.07342 23.5482 6.96318C23.0537 4.2318 20.5876 2.0408 17.8824 1.46111C15.6324 0.979683 13.448 0.986233 11.293 1.73294C8.56819 2.67615 6.75709 4.44467 6.55076 7.48064C6.35753 10.3496 7.68392 12.403 10.0714 13.8604C12.5146 15.3538 15.2067 16.2676 17.8922 17.201C20.7841 18.2031 23.6628 19.2642 26.1748 21.0786C29.5022 23.4825 30.4029 26.9114 29.892 30.7858C29.4531 34.1165 27.4586 36.301 24.6716 37.8599C22.8867 38.8588 20.9282 39.5367 18.8944 39.6907C16.6805 39.8577 14.4076 39.9821 12.2231 39.6808C7.45467 39.0258 3.41982 37.0346 1.15022 32.4561C0.459187 31.0445 0.0825579 29.5544 0.000681894 28.002C-0.0156933 27.7106 0.26596 27.2095 0.511588 27.1342C1.74628 26.751 2.99734 26.3711 4.27133 26.1909C5.3652 26.037 5.70908 26.6003 5.68615 27.7335C5.65995 29.0271 5.65995 30.3404 5.84335 31.6177C6.19706 34.0805 7.5431 35.9899 9.6555 37.2639C12.0823 38.7278 14.7154 39.1863 17.5483 38.6787C19.6607 38.2988 21.557 37.6176 23.0471 35.9931C24.5766 34.3229 24.9237 32.3513 24.7371 30.1832C24.5078 27.4944 22.867 25.834 20.7153 24.5403C17.961 22.8864 14.9185 21.8974 11.9317 20.774C9.08564 19.7064 6.33461 18.4324 4.11413 16.261C1.92641 14.1191 1.18625 11.5024 1.6251 8.53192C2.20806 4.61825 4.80189 2.47965 8.28653 1.17618C10.3957 0.383625 12.5932 0.0430211 15.58 0.0135457Z" fill="white"/> 2180<path d="M162.384 0.721313H169.022C168.97 0.947291 168.931 1.12414 168.888 1.301C168.652 2.29661 168.217 3.28894 168.21 4.28456C168.161 14.7385 168.161 25.1891 168.21 35.6431C168.217 36.7992
2180168.636 37.9552 168.878 39.1768H162.423C162.636 38.0895 162.872 37.0415 163.039 35.9837C163.153 35.2632 163.229 34.5263 163.232 33.7959C163.245 24.5407 163.275 15.2854 163.206 6.03015C163.196 4.51053 162.741 2.99419 162.492 1.47457C162.453 1.23877 162.423 0.999692 162.384 0.721313Z" fill="white"/> 2181</svg></a> 2182 </div> 2183 2184 </div> 2185</footer> 2186 2187 2188 2189</div> 2190<!-- END sections: footer-group --> 2191 2192 <ul hidden> 2193 <li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li> 2194 <li id="a11y-new-window-message">Opens in a new window.</li> 2195 </ul> 2196 2197
2197<script> 2198 window.shopUrl = 'https://sonniskin.com'; 2199 window.routes = { 2200 cart_add_url: '/cart/add', 2201 cart_change_url: '/cart/change', 2202 cart_update_url: '/cart/update', 2203 cart_url: '/cart', 2204 predictive_search_url: '/search/suggest', 2205 }; 2206 2207 window.cartStrings = { 2208 error: `There was an error while updating your cart. Please try again.`, 2209 quantityError: `You can only add [quantity] of this item to your cart.`, 2210 }; 2211 2212 window.variantStrings = { 2213 addToCart: `Add to bag`, 2214 soldOut: `Sold out`, 2215 unavailable: `Unavailable`, 2216 unavailable_with_option: `[value] - Unavailable`, 2217 }; 2218 2219 window.quickOrderListStrings = { 2220 itemsAdded: `[quantity] items added`, 2221 itemAdded: `[quantity] item added`, 2222 itemsRemoved: `[quantity] items removed`, 2223 itemRemoved: `[quantity] item removed`, 2224 viewCart: `View cart`, 2225 each: `[money]/ea`, 2226 min_error: `This item has a minimum of [min]`, 2227 max_error: `This item has a maximum of [max]`, 2228 step_error: `You can only add this item in increments of [step]`, 2229 }; 2230 2231 window.accessibilityStrings = { 2232 imageAvailable: `Image [index] is now available in gallery view`, 2233 shareSuccess: `Link copied to clipboard`, 2234 pauseSlideshow: `Pause slideshow`, 2235 playSlideshow: `Play slideshow`, 2236 recipientFormExpanded: `Gift card recipient form expanded`, 2237 recipientFormCollapsed: `Gift card recipient form collapsed`, 2238 countrySelectorSearchCount: `[count] countries/regions found`, 2239 }; 2240 </script>
2240<script src="//sonniskin.com/cdn/shop/t/13/assets/predictive-search.js?v=57209189334897115771782903944" defer="defer"></script>
2240<script async src="https://static.shopmy.us/Affiliates/sms_aff_clicktrack.js?domain=sonniskin.com&expires=30"></script>
2240 2241 2242 <style> cart-notification {display: none !important;} div[aria-label="POPUP Form"] div.needsclick button[type="button"] {padding: 10px !important;} </style> 2243<div id="shopify-block-AdTBORzdUdm95L0F1Z__1537173939754162885" class="shopify-block shopify-app-block"> 2244
2245<script> 2246 window.accessProWidgetSettings = {"icon":"default","icon_size":"default","icon_style":"thick","widget_size":"large","icon_position":"BR","color_template":"custom","enable_features":true,"icon_color_fill":"#002459","icon_color_stroke":"#002459","enableMenuSettings":{"links":true,"reset":true,"cursor":true,"images":true,"sounds":true,"videos":true,"mission":true,"contrast":true,"dyslexic":true,"headings":true,"profiles":true,"alignment":true,"animation":true,"fontscale":true,"languages":true,"magnifier":true,"fontweight":true,"hidewidget":false,"saturation":true,"adhdprofile":true,"linespacing":true,"readingmask":true,"text2speech":false,"textsummary":true,"readingguide":false,"letterspacing":true,"pagestructure":true,"readerprofile":true,"describeimages":false,"seizureprofile":true,"cognitiveprofile":true},"menu_content_color":"#002459","selected_languages":["en","fr","es","de"],"default_menu_language":"en","menu_header_font_color":"#ffffff","open_accessibility_profile":true,"menu_header_background_color":"#002459"}; 2247 window.accessProComplianceSettings = {"compliance_title":"Our Mission","compliance_content":"\u003cdiv class=\"ap-compliance-main-title\"\u003e\u003cstrong\u003eAccessPro Compliance Mission Statement\u003c\/strong\u003e\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eWCAG 2.2 Commitment:\u003c\/strong\u003e We strictly adhere to WCAG 2.2 AA guidelines.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003ePersonalized UI:\u003c\/strong\u003e Users with disabilities can personalize the interface.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eAI-Based Compliance:\u003c\/strong\u003e We use AI to maintain accessibility during updates.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eARIA Attributes:\u003c\/strong\u003e Meaningful data for screen-readers using ARIA attributes.\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eOptimized Screen Reader and Keyboard Navigation:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eScreen-reader Optimization:\u003c\/strong\u003e ARIA attributes for meaningful data.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eImage Description:\u003c\/strong\u003e Auto image descriptions for better understanding.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eOCR Technology:\u003c\/strong\u003e Text extraction from images.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eKeyboard Navigation:\u003c\/strong\u003e Enhanced keyboard operability. \u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eContent-skip Menus:\u003c\/strong\u003e Easy navigation with shortcuts.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003ePopup Handling:\u003c\/strong\u003e Improved handling of popups.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eShortcuts:\u003c\/strong\u003e Quick access to key elements with shortcuts.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eSpecialized Profiles for Disabilities:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eEpilepsy Safe Profile:\u003c\/strong\u003e Safe browsing with reduced triggers.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eVision Impaired Profile:\u003c\/strong\u003e Enhanced interface for visual impairments.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eCognitive Disability Profile:\u003c\/strong\u003e Assistive features for cognitive disabilities.\u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eADHD-Friendly Profile:\u003c\/strong\u003e Minimized distractions for ADHD users.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eBlind Users Profile:\u003c\/strong\u003e Compatibility with popular screen-readers.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eKe
2247yboard Navigation Profile:\u003c\/strong\u003e Navigate with keyboard commands.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eCustomizable User Interface Adjustments:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eFont Adjustments:\u003c\/strong\u003e Customize font settings for readability.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eColour Adjustments:\u003c\/strong\u003e Choose contrast profiles and color schemes.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eAnimations:\u003c\/strong\u003e Disable animations for user safety.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eContent Highlighting:\u003c\/strong\u003e Emphasize key elements.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eAudio Muting:\u003c\/strong\u003e Instantly mute the website.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eCognitive Disorders:\u003c\/strong\u003e Linked search engine for better understanding.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eAdditional Functions:\u003c\/strong\u003e Various customizable options.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eBrowser and Assistive Technology Support:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eSupported Browsers:\u003c\/strong\u003e Google Chrome, Mozilla Firefox, Apple Safari, Opera, Microsoft Edge.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eSupported Screen Readers:\u003c\/strong\u003e JAWS (Windows\/MAC), NVDA (Windows\/MAC).\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-wrapper\"\u003e\u003cdiv class=\"ap-compliance-list-title\"\u003e\u003cstrong\u003eContinual Accessibility Improvement:\u003c\/strong\u003e\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list\"\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eOngoing Efforts:\u003c\/strong\u003e We continuously enhance accessibility. \u003c\/div\u003e \u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eGoal:\u003c\/strong\u003e Achieve maximum accessibility with evolving technology.\u003c\/div\u003e\u003cdiv class=\"ap-compliance-list-item\"\u003e⢠\u003cstrong\u003eContact Us:\u003c\/strong\u003e Reach out via the websiteâs contact form for queries or concerns.\u003c\/div\u003e\u003c\/div\u003e \u003c\/div\u003e","statement_action":"popup","statement_redirect_url":"","statement_redirect_page_id":""}; 2248 window.accessProCurrentPage = { 2249 pageType: "blog", 2250 path: "\/blogs\/light-reading" 2251 }; 2252</script>
2252 2253 2254<style> 2255 2256 2257 .asw-widget-button-top { 2258 position: absolute !important; 2259 top: 10px !important; 2260 left: 10px !important; 2261 background-color: #000 !important; 2262 color: #fff !important; 2263 text-decoration: none !important; 2264 overflow: hidden; 2265 width: 1px !important; 2266 height: 1px !important; 2267 margin: -1px !important; 2268 padding: 0 !important; 2269 border: 0 !important; 2270 clip: rect(0 0 0 0) !important; 2271 word-wrap: normal !important; 2272 } 2273 .asw-widget-button-top-focused, 2274 .asw-widget-button-top:focus { 2275 z-index: 9999 !important; 2276 overflow: auto !important; 2277 width: auto !important; 2278 height: auto !important; 2279 clip: auto !important; 2280 padding: 10px 15px !important; 2281 } 2282 2283 #acp-virtualKeyboardPopup { 2284 position: fixed; 2285 bottom: 80px; 2286 left: 50%; 2287 transform: translateX(-50%); 2288 background: #ffffff !important; 2289 border: 1px solid #ccc; 2290 padding: 8px; 2291 box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); 2292 z-index: 9999; 2293 display: none; 2294 width: 90%; 2295 max-width: 600px; 2296 border-radius: 10px; 2297 } 2298 2299 #acp-virtual-input { 2300 width: 100%; 2301 padding: 10px; 2302 font-size: 16px; 2303 margin-bottom: 10px; 2304 } 2305 2306 #acp-closeKeyboardBtn { 2307 color: #fff; 2308 border: none; 2309 padding: 1px 3px; 2310 cursor: pointer; 2311 float: right; 2312 border-radius: 4px; 2313 margin-bottom: 5px; 2314 } 2315 #acp-definition-popup { 2316 position: absolute; 2317 display: none; 2318 padding: 10px; 2319 background: white; 2320 border: 1px solid #ccc; 2321 z-index: 1000; 2322 border-radius: 14px; 2323 } 2324</style> 2325 2326<div id="acp-icon"></div> 2327<div id="acp-widget"></div> 2328 2329<!-- Virtual Keyboard Input and Keyboard --> 2330<div 2331 id="acp-definition-popup" 2332></div> 2333<div 2334 id="acp-dictionary-toast" 2335 class="asw-text-speech-bar" 2336 style="display: none;" 2337 data-ap-translate="DICTIONARY DESC" 2338> 2339 Double click on a word to see the definition. 2340</div> 2341<div id="acp-virtualKeyboardPopup" role="dialog" aria-modal="true" aria-label="Virtual keyboard popup"> 2342 <button id="acp-closeKeyboardBtn" aria-label="Close virtual keyboard"> 2343 <svg 2344 xmlns="http://www.w3.org/2000/svg" 2345 width="24" 2346 height="24" 2347 viewBox="0 0 24 24" 2348 fill="none" 2349 > 2350 <path 2351 d="M18 6L6 18" 2352 stroke="black" 2353 strokeWidth="2" 2354 strokeLinecap="round" 2355 strokeLinejoin="round" 2356 /> 2357 <path 2358 d="M6 6L18 18" 2359 stroke="black" 2360 strokeWidth="2" 2361 strokeLinecap="round" 2362 strokeLinejoin="round" 2363 /> 2364 </svg> 2365 </button> 2366 2367 <div id="acp-virtual-keyboard" class="simple-keyboard"></div> 2368
2368<script> 2369 function makeDraggableVirtualKeyboard(el) { 2370 let pos1 = 0, 2371 pos2 = 0, 2372 pos3 = 0, 2373 pos4 = 0; 2374 2375 el.onmousedown = dragMouseDown; 2376 2377 function dragMouseDown(e) { 2378 e.preventDefault(); 2379 pos3 = e.clientX; 2380 pos4 = e.clientY; 2381 document.onmouseup = closeDragElement; 2382 document.onmousemove = elementDrag; 2383 } 2384 2385 function elementDrag(e) { 2386 e.preventDefault(); 2387 pos1 = pos3 - e.clientX; 2388 pos2 = pos4 - e.clientY; 2389 pos3 = e.clientX; 2390 pos4 = e.clientY; 2391 el.style.top = el.offsetTop - pos2 + 'px'; 2392 el.style.left = el.offsetLeft - pos1 + 'px'; 2393 el.style.bottom = 'unset'; 2394 el.style.right = 'unset'; 2395 } 2396 2397 function closeDragElement() { 2398 document.onmouseup = null; 2399 document.onmousemove = null; 2400 } 2401 } 2402 2403 makeDraggableVirtualKeyboard(document.getElementById('acp-virtualKeyboardPopup')); 2404 </script>
2404 2405</div>
2406<script> 2407 // App Procxy Handle 2408 2409 window.accessProProxyHandle = '/apps/access-pro'; 2410 2411 2412 // URLs 2413 window.accessProSettingsUrl = `${window.accessProProxyHandle}/theme/settings/`; 2414 window.accessProPageViewsCountUrl = `${window.accessProProxyHandle}/theme/views/update/count`; 2415 2416 2417 // Translation URL 2418 var shopify_domain = `uijg2k-cd.myshopify.com`; 2419 window.accessProTranslationUrl = `https://access-pro-api.entanglecommerce.com/api/v1/language/translate/?domain=${shopify_domain}`; 2420 window.pageViewsCountURL = `${window.accessProProxyHandle}/theme/views/update/count`; 2421</script>
2421 2422
2423<script src="https://cdn.shopify.com/extensions/01a1115f-a4db-79a9-998b-83572f4594c6/access-pro-2-247/assets/main.js" defer></script>
vendor: 1 bytes, line 2423
2423
2424<script> 2425 (function () { 2426 var params = new URLSearchParams(window.location.search); 2427 var token = params.get('acp_scan'); 2428 if (!token) return; 2429 2430 function showScanOverlay(message) { 2431 var el = document.getElementById('acp-scan-overlay'); 2432 if (!el) { 2433 el = document.createElement('div'); 2434 el.id = 'acp-scan-overlay'; 2435 el.style.cssText = 2436 'position:fixed;inset:0;background:rgba(255,255,255,0.94);z-index:2147483647;display:flex;align-items:center;justify-content:center;font-family:system-ui,-apple-system,sans-serif;'; 2437 el.innerHTML = 2438 '<div style="text-align:center;max-width:320px;padding:24px">' + 2439 '<p style="font-size:18px;font-weight:600;margin:0 0 8px;color:#111">Scanning for accessibility</p>' + 2440 '<p id="acp-scan-overlay-status" style="font-size:14px;color:#666;margin:0"></p>' + 2441 '</div>'; 2442 document.body.appendChild(el); 2443 } 2444 var status = document.getElementById('acp-scan-overlay-status'); 2445 if (status) status.textContent = message || 'Please waitâ¦'; 2446 } 2447 2448 showScanOverlay('Preparing accessibility scanâ¦'); 2449 2450 function hideOverlay() { 2451 var el = document.getElementById('acp-scan-overlay'); 2452 if (el) el.style.display = 'none'; 2453 } 2454 2455 function pageIsThemePreview() { 2456 try { 2457 return Boolean(new URLSearchParams(window.location.search).get('preview_theme_id')); 2458 } catch (e) { 2459 return false; 2460 } 2461 } 2462 2463 // Shopify stores the unpublished theme in a storefront cookie. Clear it 2464 // here so the scan window never has to navigate to the live theme. 2465 var previewExitPromise = null; 2466 function exitThemePreviewQuietly() { 2467 if (!pageIsThemePreview()) return Promise.resolve(); 2468 if (previewExitPromise) return previewExitPromise; 2469 previewExitPromise = new Promise(function (resolve) { 2470 var settled = false; 2471 function finish() { 2472 if (settled) return; 2473 settled = true; 2474 resolve(); 2475 } 2476 setTimeout(finish, 2000); 2477 try { 2478 var frame = document.createElement('iframe'); 2479 frame.setAttribute('aria-hidden', 'true'); 2480 frame.title = ''; 2481 frame.style.cssText = 2482 'position:absolute;width:0;height:0;border:0;visibility:hidden'; 2483 frame.src = window.location.origin + '/?exitPreview=1'; 2484 (document.body || document.documentElement).appendChild(frame); 2485 } catch (e) {} 2486 try { 2487 fetch(window.location.origin + '/?exitPreview=1', { 2488 credentials: 'include', 2489 cache: 'no-store', 2490 redirect: 'follow', 2491 }).catch(function () {}); 2492 } catch (e) {} 2493 }); 2494 return previewExitPromise; 2495 } 2496 2497 window.addEventListener('message', function (event) { 2498 if (event.source !== window.opener) return; 2499 var data = event.data; 2500 if (!data || data.type !== 'accesspro-exit-preview') return; 2501 exitThemePreviewQuietly().then(function () { 2502 if (window.opener) { 2503 window.opener.postMessage({ type: 'accesspro-preview-exited' }, '*'); 2504 } 2505 }); 2506 }); 2507 2508 function submitScanResult(payload) { 2509 var params = new URLSearchParams(window.location.search); 2510 var jobId = params.get('acp_job'); 2511 if (!jobId) { 2512 return; 2513 } 2514 2515 var pageUrl = window.location.origin + window.location.pathname; 2516 fetch(window.accessProProxyHandle + '/theme/accessibility-scan/complete', { 2517 method: 'POST', 2518 headers: { 'Content-Type': 'application/json' }, 2519 body: JSON.stringify({ 2520 jobId: jobId, 2521 scanToken: token, 2522 url: pageUrl, 2523 axeResults: payload.results || null, 2524 error: 2525 payload.type === 'accesspro-axe-scan-error' 2526 ? payload.message || 'Accessibility scan failed' 2527 : null, 2528 }), 2529 }) 2530 .then(function (response) { 2531 return response.json().catch(function () { 2532 return {}; 2533 }); 2534 }) 2535 .then(function (data) { 2536 if (window.opener) { 2537 var isFinal = data.reportId != null; 2538 var hasError = !data.success; 2539 var isNextScanPage = false;
2540 if (data.redirectUrl) { 2541 try { 2542 isNextScanPage = new URL(data.redirectUrl).searchParams.has('acp_scan'); 2543 } catch (e) {} 2544 } 2545 var continuing = isNextScanPage && data.redirectUrl && !isFinal && !hasError; 2546 2547 function deliver() { 2548 window.opener.postMessage( 2549 { 2550 type: 'accesspro-axe-scan-progress', 2551 jobId: jobId, 2552 redirectUrl: data.redirectUrl || null, 2553 reportId: data.reportId != null ? data.reportId : null, 2554 error: data.success ? null : (data.message || 'Scan failed'), 2555 }, 2556 '*', 2557 ); 2558 2559 if (isFinal) { 2560 showScanOverlay('Returning to your audit reportâ¦'); 2561 return; 2562 } 2563 2564 if (continuing) { 2565 showScanOverlay('Scanning next pageâ¦'); 2566 window.location.href = data.redirectUrl; 2567 return; 2568 } 2569 2570 setTimeout(function () { 2571 window.close(); 2572 }, 400); 2573 } 2574 2575 if (pageIsThemePreview() && !continuing) { 2576 if (isFinal) showScanOverlay('Returning to your audit reportâ¦'); 2577 exitThemePreviewQuietly().then(deliver); 2578 return; 2579 } 2580 2581 deliver(); 2582 return; 2583 } 2584 if (data.redirectUrl) { 2585 showScanOverlay('Returning to your audit reportâ¦'); 2586 window.location.href = data.redirectUrl; 2587 return; 2588 } 2589 showScanOverlay(data.message || 'Scan failed'); 2590 if (window.opener) { 2591 window.opener.postMessage( 2592 { 2593 type: 'accesspro-axe-scan-progress', 2594 jobId: jobId, 2595 error: data.message || 'Scan failed', 2596 }, 2597 '*', 2598 ); 2599 } 2600 }) 2601 .catch(function (err) { 2602 var message = 2603 (err && err.message) || 'Scan failed'; 2604 showScanOverlay(message); 2605 function deliver() { 2606 if (!window.opener) return; 2607 var jobIdErr = new URLSearchParams(window.location.search).get('acp_job'); 2608 window.opener.postMessage( 2609 { 2610 type: 'accesspro-axe-scan-progress', 2611 jobId: jobIdErr, 2612 error: message, 2613 }, 2614 '*', 2615 ); 2616 } 2617 if (pageIsThemePreview()) { 2618 exitThemePreviewQuietly().then(deliver); 2619 return; 2620 } 2621 deliver(); 2622 }); 2623 } 2624 2625 function waitForFullPageLoad() { 2626 return new Promise(function (resolve) { 2627 function settle() { 2628 // Extended settle time for dynamic content, carousels, lazy sections 2629 // Wait for network idle + animations + JS state changes 2630 setTimeout(function() { 2631 // Wait for any lazy images to finish loading 2632 var images = Array.prototype.slice.call(document.querySelectorAll('img[loading="lazy"]')); 2633 var pendingImages = images.filter(function(img) { 2634 return !img.complete; 2635 }); 2636 2637 if (pendingImages.length > 0) { 2638 var loaded = 0; 2639 var timeout = setTimeout(function() { 2640 resolve(); // Don't wait forever 2641 }, 2000); 2642 2643 pendingImages.forEach(function(img) { 2644 function handleLoad() { 2645 loaded++; 2646 if (loaded >= pendingImages.length) { 2647 clearTimeout(timeout); 2648 // Additional wait for any pending RAF or microtasks 2649 requestAnimationFrame(function() { 2650 setTimeout(resolve, 100); 2651 }); 2652 } 2653 } 2654 img.addEventListener('load', handleLoad, { once: true }); 2655 img.addEventListener('error', handleLoad, { once: true }); 2656 }); 2657 } else {
2658 // Additional wait for any pending RAF or microtasks 2659 requestAnimationFrame(function() { 2660 setTimeout(resolve, 100); 2661 }); 2662 } 2663 }, 3000); 2664 } 2665 if (document.readyState === 'complete') { 2666 settle(); 2667 return; 2668 } 2669 window.addEventListener('load', settle, { once: true }); 2670 }); 2671 } 2672 2673 // Port of accessibility-scanner Phase 3 WCAG 2.2 / APG checks (browser-side). 2674 // Findings are merged into axe violations/incomplete so the existing pipeline needs no changes. 2675 function isAccessProScanElement(el) { 2676 if (!el || !el.closest) return false; 2677 return !!( 2678 el.closest('#acp-icon') || 2679 el.closest('#acp-widget') || 2680 el.closest('#acp-virtualKeyboardPopup') || 2681 el.closest('#acp-definition-popup') || 2682 el.closest('#acp-dictionary-toast') || 2683 el.closest('#acp-scan-overlay') || 2684 el.closest('[id^="acp-"]') || 2685 el.closest('.asw-widget-button-top') 2686 ); 2687 } 2688 2689 // Enhanced element visibility check including all CSS hiding techniques 2690 function isElementVisible(el) { 2691 if (!el || !el.getBoundingClientRect) return false; 2692 var style = window.getComputedStyle(el); 2693 if (style.display === 'none' || style.visibility === 'hidden') return false; 2694 if (style.opacity === '0') return false; 2695 if (style.position === 'absolute' && style.clip === 'rect(0px, 0px, 0px, 0px)') return false; 2696 if (style.width === '1px' && style.height === '1px' && style.overflow === 'hidden') return false; 2697 var rect = el.getBoundingClientRect(); 2698 if (rect.width === 0 || rect.height === 0) return false; 2699 return true; 2700 } 2701 2702 function runWcag22Checks() { 2703 var violations = []; 2704 var incomplete = []; 2705 2706 try { 2707 // WCAG 2.4.11 Focus Not Obscured â sticky/fixed heuristic (manual review) 2708 var stickyElements = Array.prototype.slice 2709 .call(document.querySelectorAll('*')) 2710 .filter(function (el) { 2711 if (isAccessProScanElement(el)) return false; 2712 if (!isElementVisible(el)) return false; 2713 var style = getComputedStyle(el); 2714 return ( 2715 (style.position === 'sticky' || style.position === 'fixed') && 2716 el.getBoundingClientRect().height > 40 2717 ); 2718 }) 2719 .slice(0, 5) 2720 .map(function (el) { 2721 var style = getComputedStyle(el); 2722 return { 2723 tag: el.tagName.toLowerCase(), 2724 id: el.id || null, 2725 height: Math.round(el.getBoundingClientRect().height), 2726 position: style.position, 2727 }; 2728 }); 2729 2730 if (stickyElements.length > 0) { 2731 incomplete.push({ 2732 id: 'focus-not-obscured', 2733 impact: 'serious', 2734 tags: ['wcag22aa', 'wcag2411'], 2735 description: 2736 'WCAG 2.4.11: Focused elements must not be entirely obscured. Fixed/sticky elements detected â manual keyboard testing required.', 2737 helpUrl: 2738 'https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html', 2739 nodes: stickyElements.map(function (e) { 2740 return { 2741 html: 2742 '<' + 2743 e.tag + 2744 (e.id ? ' id="' + e.id + '"' : '') + 2745 '> (' + 2746 e.position + 2747 ', ' + 2748 e.height + 2749 'px tall)', 2750 target: [e.tag + (e.id ? '#' + e.id : '')], 2751 failureSummary: 2752 'Fixed/sticky element may obscure focused components. Verify with keyboard navigation.', 2753 }; 2754 }), 2755 }); 2756 } 2757 2758 // NEW: aria-hidden-focus check - elements with aria-hidden="true" that are focusable 2759 var hiddenFocusable = []; 2760 document.querySelectorAll('[aria-hidden="true"]').forEach(function(el) { 2761 if (isAccessProScanElement(el)) return; 2762 // Check if this element or any descendant is focusable 2763 var focusableSelectors = 'a[href], button, input, select, textarea, [tabindex]:not
2763([tabindex="-1"])'; 2764 var focusables = el.matches(focusableSelectors) ? [el] : Array.prototype.slice.call(el.querySelectorAll(focusableSelectors)); 2765 focusables.forEach(function(focusEl) { 2766 if (isElementVisible(focusEl) && focusEl.tabIndex >= 0) { 2767 hiddenFocusable.push({ 2768 html: focusEl.outerHTML.slice(0, 500), 2769 selector: buildScanSelector(focusEl), 2770 parentHiddenHtml: el.outerHTML.slice(0, 200) 2771 }); 2772 } 2773 }); 2774 }); 2775 2776 if (hiddenFocusable.length > 0) { 2777 violations.push({ 2778 id: 'aria-hidden-focus', 2779 impact: 'serious', 2780 tags: ['wcag2aa', 'wcag412'], 2781 description: 'WCAG 4.1.2: Focusable elements must not be hidden with aria-hidden="true"', 2782 helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html', 2783 nodes: hiddenFocusable.slice(0, 10).map(function(item) { 2784 return { 2785 html: item.html, 2786 target: [item.selector], 2787 failureSummary: 'Focusable element is inside aria-hidden="true" container' 2788 }; 2789 }) 2790 }); 2791 } 2792 2793 // WCAG 2.5.3 Label in Name - Enhanced with better visible text extraction 2794 // Visible text = text rendered on screen (excludes aria-hidden, sr-only, SVG internals). 2795 function getVisibleText(el) { 2796 var text = ''; 2797 for (var i = 0; i < el.childNodes.length; i++) { 2798 var child = el.childNodes[i]; 2799 if (child.nodeType === 3) { text += child.textContent; continue; } 2800 if (child.nodeType !== 1) continue; 2801 if (child.getAttribute('aria-hidden') === 'true') continue; 2802 var st = window.getComputedStyle(child); 2803 if (st.display === 'none' || st.visibility === 'hidden') continue; 2804 if (st.opacity === '0') continue; 2805 if (st.position === 'absolute') { 2806 var clip = st.clip; 2807 if (clip === 'rect(0px, 0px, 0px, 0px)' || clip === 'rect(0, 0, 0, 0)') continue; 2808 } 2809 if (st.width === '1px' && st.height === '1px' && st.overflow === 'hidden') continue; 2810 if (st.fontSize === '0px' || st.width === '0px' || st.height === '0px') continue; 2811 text += getVisibleText(child); 2812 } 2813 return text; 2814 } 2815 function buildScanSelector(el) { 2816 if (el.id) return '#' + CSS.escape(el.id); 2817 var testId = el.getAttribute('data-testid') || el.getAttribute('data-test-id'); 2818 if (testId) return '[data-testid="' + testId + '"]'; 2819 var tag = el.tagName.toLowerCase(); 2820 var cls = (el.getAttribute('class') || '').split(/\s+/).filter(function (c) { 2821 return c && c.length < 60 && !/^(active|is-|js-|open|hidden|focus|hover)/i.test(c); 2822 }).slice(0, 3); 2823 return cls.length ? tag + '.' + cls.join('.') : tag; 2824 } 2825 2826 // Enhanced selector to catch more interactive elements 2827 var interactiveSelector = 'button, [role="button"], a[aria-label], [role="link"][aria-label], ' + 2828 '[role="menuitem"][aria-label], [role="tab"][aria-label], [role="checkbox"][aria-label], ' + 2829 '[role="radio"][aria-label], [role="switch"][aria-label], [role="combobox"][aria-label], ' + 2830 '[role="searchbox"][aria-label], [role="textbox"][aria-label]'; 2831 2832 var mismatches = Array.prototype.slice 2833 .call(document.querySelectorAll(interactiveSelector)) 2834 .filter(function (el) { 2835 return !isAccessProScanElement(el) && isElementVisible(el); 2836 }) 2837 .map(function (el) { 2838 var ariaLabel = el.getAttribute('aria-label') || ''; 2839 var visibleText = getVisibleText(el).replace(/\s+/g, ' ').trim(); 2840 if (!ariaLabel || !visibleText) return null; 2841 if (visibleText.length <= 1) return null; 2842 2843 // Normalize for comparison - remove punctuation and make case-insensitive 2844 var normalizedLabel = ariaLabel.toLowerCase().replace(/[^\w\s]/g, ''); 2845 var normalizedVisible = visibleText.toLowerCase().replace(/[^\w\s]/g, ''); 2846 2847 // Check if visible text is substring of aria-label
2848 if (normalizedLabel.includes(normalizedVisible)) return null; 2849 2850 // Check word-by-word containment for multi-word labels 2851 var visibleWords = normalizedVisible.split(/\s+/).filter(Boolean); 2852 if (visibleWords.length > 0) { 2853 var allWordsPresent = visibleWords.every(function(word) { 2854 return normalizedLabel.includes(word); 2855 }); 2856 if (allWordsPresent) return null; 2857 } 2858 2859 return { 2860 html: el.outerHTML.slice(0, 500), 2861 selector: buildScanSelector(el), 2862 ariaLabel: ariaLabel, 2863 visibleText: visibleText, 2864 }; 2865 }) 2866 .filter(Boolean) 2867 .slice(0, 10); 2868 2869 if (mismatches.length > 0) { 2870 violations.push({ 2871 id: 'label-in-name', 2872 impact: 'serious', 2873 tags: ['wcag21a', 'wcag253'], 2874 description: 'WCAG 2.5.3: Accessible name must contain visible label text', 2875 helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/label-in-name.html', 2876 nodes: mismatches.map(function (m) { 2877 return { 2878 html: m.html, 2879 target: [m.selector], 2880 failureSummary: 2881 'aria-label="' + 2882 m.ariaLabel + 2883 '" does not contain visible text "' + 2884 m.visibleText + 2885 '"', 2886 }; 2887 }), 2888 }); 2889 } 2890 2891 // 2.5.7 Dragging Movements 2892 var draggableElements = Array.prototype.slice 2893 .call( 2894 document.querySelectorAll( 2895 '[draggable="true"], [data-sortable], .sortable-item', 2896 ), 2897 ) 2898 .filter(function (el) { 2899 return !isAccessProScanElement(el); 2900 }) 2901 .slice(0, 5) 2902 .map(function (el) { 2903 return { 2904 html: el.outerHTML.slice(0, 500), 2905 selector: buildScanSelector(el), 2906 }; 2907 }); 2908 2909 if (draggableElements.length > 0) { 2910 incomplete.push({ 2911 id: 'dragging-movements', 2912 impact: 'serious', 2913 tags: ['wcag22aa', 'wcag257'], 2914 description: 2915 'WCAG 2.5.7: Draggable elements must have a single-pointer alternative. Manual verification required.', 2916 helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/dragging-movements.html', 2917 nodes: draggableElements.map(function (e) { 2918 return { 2919 html: e.html, 2920 target: [e.selector], 2921 failureSummary: 2922 'Verify that a keyboard or single-pointer alternative exists for this drag operation.', 2923 }; 2924 }), 2925 }); 2926 } 2927 2928 // ARIA APG: Dialog Pattern 2929 var badDialogs = Array.prototype.slice 2930 .call(document.querySelectorAll('[role="dialog"], [role="alertdialog"]')) 2931 .filter(function (el) { 2932 if (isAccessProScanElement(el)) return false; 2933 return !( 2934 el.hasAttribute('aria-labelledby') || el.hasAttribute('aria-label') 2935 ); 2936 }) 2937 .slice(0, 5) 2938 .map(function (el) { 2939 return { 2940 html: el.outerHTML.slice(0, 500), 2941 selector: buildScanSelector(el), 2942 }; 2943 }); 2944 2945 if (badDialogs.length > 0) { 2946 violations.push({ 2947 id: 'dialog-missing-label', 2948 impact: 'serious', 2949 tags: ['aria-apg', 'wcag2aa'], 2950 description: 2951 'ARIA APG Dialog Pattern: role="dialog" must have aria-labelledby or aria-label', 2952 helpUrl: 'https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/', 2953 nodes: badDialogs.map(function (d) { 2954 return { 2955 html: d.html, 2956 target: [d.selector], 2957 failureSummary: 2958 'Add aria-labelledby pointing to a visible dialog title, or aria-label.', 2959 }; 2960 }), 2961 }); 2962 } 2963 2964 // ARIA APG: Tabs Pattern â tabs must have aria-selected (true on active, false on others
2964) 2965 var badTabs = []; 2966 Array.prototype.slice 2967 .call(document.querySelectorAll('[role="tablist"]')) 2968 .forEach(function (tabList) { 2969 if (isAccessProScanElement(tabList)) return; 2970 var tabs = Array.prototype.slice.call(tabList.querySelectorAll('[role="tab"]')); 2971 var hasAnySelected = tabs.some(function (t) { return t.getAttribute('aria-selected') === 'true'; }); 2972 tabs.forEach(function (tab) { 2973 if (isAccessProScanElement(tab)) return; 2974 if (!tab.hasAttribute('aria-selected')) { 2975 // Detect if this tab appears active (has aria-current, class "active", etc.) 2976 var looksActive = !hasAnySelected && tab.classList.contains('active'); 2977 badTabs.push({ 2978 html: tab.outerHTML.slice(0, 500), 2979 selector: buildScanSelector(tab), 2980 suggestValue: looksActive ? 'true' : 'false', 2981 }); 2982 } 2983 }); 2984 }); 2985 badTabs = badTabs.slice(0, 5); 2986 2987 if (badTabs.length > 0) { 2988 violations.push({ 2989 id: 'tabs-missing-aria-selected', 2990 impact: 'serious', 2991 tags: ['aria-apg', 'wcag2aa'], 2992 description: 2993 'ARIA APG Tabs Pattern: each [role="tab"] must have aria-selected="true" or aria-selected="false"', 2994 helpUrl: 'https://www.w3.org/WAI/ARIA/apg/patterns/tabs/', 2995 nodes: badTabs.map(function (t) { 2996 return { 2997 html: t.html, 2998 target: [t.selector], 2999 failureSummary: 3000 'Tab missing aria-selected. Suggested value: aria-selected="' + (t.suggestValue || 'false') + '"', 3001 }; 3002 }), 3003 }); 3004 } 3005 } catch (err) { 3006 console.warn( 3007 '[AccessPro][AxeScan][storefront] WCAG 2.2 checks error', 3008 err && err.message ? err.message : err, 3009 ); 3010 } 3011 3012 return { violations: violations, incomplete: incomplete }; 3013 } 3014 3015 function runAxeScan() { 3016 if (!window.axe) { 3017 showScanOverlay('Scan failed: axe-core not loaded'); 3018 notifyScanOpener({ 3019 type: 'accesspro-axe-scan-error', 3020 token: token, 3021 message: 'axe-core failed to load', 3022 }); 3023 return; 3024 } 3025 3026 // CRITICAL: Hide overlay before scan to prevent interference with color-contrast/visibility checks 3027 hideOverlay(); 3028 3029 // Run axe WITHOUT overlay visible to get accurate color contrast and visibility results 3030 window.axe 3031 .run(document, { 3032 runOnly: { 3033 type: 'tag', 3034 values: ['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'], 3035 }, 3036 exclude: [ 3037 ['#acp-icon'], 3038 ['#acp-widget'], 3039 ['#acp-virtualKeyboardPopup'], 3040 ['#acp-definition-popup'], 3041 ['#acp-dictionary-toast'], 3042 ['#acp-scan-overlay'], 3043 ['.asw-widget-button-top'], 3044 ], 3045 }) 3046 .then(function (results) { 3047 // Now safe to show overlay after scan completes 3048 showScanOverlay('Processing scan resultsâ¦'); 3049 var extra = runWcag22Checks(); 3050 if (!results.violations) results.violations = []; 3051 if (!results.incomplete) results.incomplete = []; 3052 // Scanner stores customChecks separately; merge into axe arrays so 3053 // buildAxeScanSummary (customChecks: []) still surfaces them. 3054 results.violations = results.violations.concat(extra.violations || []); 3055 results.incomplete = results.incomplete.concat(extra.incomplete || []); 3056 3057 // List rule only: axe often stores just the opening <ul> tag. 3058 // Re-serialize with direct children so the report/AI Fixes show the real issue. 3059 enrichListViolationNodes(results); 3060 3061 notifyScanOpener({ 3062 type: 'accesspro-axe-scan', 3063 token: token, 3064 url: window.location.href, 3065 results: results, 3066 }); 3067 }) 3068 .catch(function (err) { 3069 showScanOverlay('Scan failed'); 3070 notifyScanOpener({ 3071 type: 'accesspro-axe-scan-error', 3072 token: token, 3073 message: err && err.message ? err.message : 'Accessibility scan failed', 3074 }); 3075 }); 3076 } 3077 3078 /** 3079 * Optimize axe `list` node payloads only (no other rules). 3080 * Horizon overflow-list / ul[part=list] failures need children in HTML 3081 * so merchants see role=presentation / non-li children clearly. 3082 */ 3083 function enrichListViolationNodes(results) { 3084 var violations = results && results.violations; 3085 if (!violations || !violations.length) return; 3086 3087 function queryInRoot(root, sel) { 3088 if (!root || !sel) return null; 3089 try { 3090 return root.querySelector(sel); 3091 } catch (e) { 3092 return null; 3093 } 3094 } 3095 3096 function resolveShadowPath(path) { 3097 if (!path) return null; 3098 if (typeof path === 'string') { 3099 return ( 3100 queryInRoot(document, path) || 3101 queryDeepAll(path)[0] || 3102 null 3103 ); 3104 } 3105 if (!Array.isArray(path) || !path.length) return null; 3106 3107 // Nested shadow path: ["host", "inner"] or [["host", "inner"]] 3108 var steps = path; 3109 if (steps.length === 1 && Array.isArray(steps[0])) { 3110 steps = steps[0]; 3111 } 3112 3113 var ctx = document; 3114 var el = null; 3115 for (var i = 0; i < steps.length; i++) { 3116 var step = steps[i]; 3117 if (Array.isArray(step)) { 3118 el = resolveShadowPath(step); 3119 } else { 3120 el = queryInRoot(ctx, String(step)); 3121 if (!el && ctx === document) { 3122 el = queryDeepAll(String(step))[0] || null; 3123 } 3124 } 3125 if (!el) return null; 3126 ctx = el.shadowRoot || el; 3127 } 3128 return el; 3129 } 3130 3131 function queryDeepAll(sel) { 3132 var out = []; 3133 function walk(root) { 3134 if (!root || !root.querySelectorAll) return; 3135 try { 3136 Array.prototype.push.apply(out, root.querySelectorAll(sel)); 3137 } catch (e) { 3138 /* invalid selector */ 3139 } 3140 var all = root.querySelectorAll ? root.querySelectorAll('*') : []; 3141 for (var i = 0; i < all.length; i++) { 3142 if (all[i].shadowRoot) walk(all[i].shadowRoot); 3143 } 3144 } 3145 walk(document); 3146 return out; 3147 } 3148 3149 function serializeChildSnippet(child) { 3150 if (!child || !child.tagName) return ''; 3151 var tag = child.tagName.toLowerCase(); 3152 var role = (child.getAttribute && child.getAttribute('role')) || ''; 3153 var part = (child.getAttribute && child.getAttribute('part')) || ''; 3154 var cls = (child.getAttribute && child.getAttribute('class')) || ''; 3155 var open = 3156 '<' + 3157 tag + 3158 (role ? ' role="' + role + '"' : '') + 3159 (part ? ' part="' + part + '"' : '') + 3160 (cls 3161 ? ' class="' + 3162 String(cls) 3163 .trim() 3164 .split(/\s+/) 3165 .slice(0, 3) 3166 .join(' ') + 3167 '"' 3168 : '') + 3169 '>'; 3170 var text = (child.textContent || '').replace(/\s+/g, ' ').trim().slice(0, 40); 3171 return open + (text ? text : 'â¦') + '</' + tag + '>'; 3172 } 3173 3174 function serializeListHtml(listEl) { 3175 if (!listEl || !listEl.tagName) return ''; 3176 var tag = listEl.tagName.toLowerCase(); 3177 if (tag !== 'ul' && tag !== 'ol') return ''; 3178 var openMatch = String(listEl.outerHTML || '').match(/^<[^>]+>/); 3179 var openTag = openMatch ? openMatch[0] : '<' + tag + '>'; 3180 var children = Array.prototype.slice.call(listEl.children || []).slice(0, 10); 3181 if (!children.length) return openTag; 3182 var lines = children.map(function (child) { 3183 return ' ' + serializeChildSnippet(child); 3184 }); 3185 if ((listEl.children || []).length > 10) { 3186 lines.push(' <!-- ⦠' + (listEl.children.length - 10) + ' more -->'); 3187 } 3188 return openTag + '\n' + lines.join('\n') + '\n</' + tag + '>'; 3189 } 3190 3191 function findListFallback() { 3192 var candidates = queryDeepAll('ul[part="list"], overflow-list ul, ul, ol'); 3193 var withBad = candidates.filter(function (listEl) { 3194 return Array.prototype.some.call(listEl.children || [], function (child) { 3195 var role = (child.getAttribute && child.getAttribute('role')) || ''; 3196 var t = (child.tagName || '').toLowerCase(); 3197 return ( 3198 role === 'presentation' || 3199 role === 'none' || 3200 (t !== 'li' && t !== 'script' && t !== 'template' && t !== 'style') 3201 ); 3202 }); 3203 }); 3204 return withBad.length === 1 ? withBad[0] : null; 3205 } 3206 3207 violations.forEach(function (v) { 3208 if (!v || v.id !== 'list') return;
3209 (v.nodes || []).forEach(function (node) { 3210 if (!node) return; 3211 var hintHtml = String(node.html || ''); 3212 var el = resolveShadowPath(node.target); 3213 3214 // Flat axe targets like ["ul"] are too generic â prefer part=list from html hint. 3215 if ( 3216 el && 3217 /part\s*=\s*["']list["']/i.test(hintHtml) && 3218 !(el.getAttribute && el.getAttribute('part') === 'list') 3219 ) { 3220 var partLists = queryDeepAll('ul[part="list"]'); 3221 if (partLists.length === 1) el = partLists[0]; 3222 else if (partLists.length > 1) { 3223 var badPart = partLists.filter(function (listEl) { 3224 return Array.prototype.some.call(listEl.children || [], function (child) { 3225 var role = (child.getAttribute && child.getAttribute('role')) || ''; 3226 return role === 'presentation' || role === 'none'; 3227 }); 3228 }); 3229 if (badPart.length === 1) el = badPart[0]; 3230 } 3231 } 3232 3233 if (el && el.tagName) { 3234 var t = el.tagName.toLowerCase(); 3235 if (t !== 'ul' && t !== 'ol' && el.closest) { 3236 el = el.closest('ul, ol') || el; 3237 } 3238 } 3239 if (!el || !el.tagName || !/^(UL|OL)$/.test(el.tagName)) { 3240 el = findListFallback(); 3241 } 3242 if (!el) return; 3243 3244 var better = serializeListHtml(el); 3245 if (better && better.length > hintHtml.length) { 3246 node.html = better.slice(0, 2500); 3247 } 3248 3249 // Prefer a stable, actionable selector for Horizon chrome lists. 3250 if (el.getAttribute && el.getAttribute('part') === 'list') { 3251 node.target = ['ul[part="list"]']; 3252 } 3253 }); 3254 }); 3255 } 3256 3257 function notifyScanOpener(payload) { 3258 if (window.opener && payload.type === 'accesspro-axe-scan-error') { 3259 var jobId = new URLSearchParams(window.location.search).get('acp_job'); 3260 showScanOverlay('Scan failed'); 3261 window.opener.postMessage( 3262 { 3263 type: 'accesspro-axe-scan-progress', 3264 jobId: jobId, 3265 error: payload.message || 'Accessibility scan failed', 3266 }, 3267 '*', 3268 ); 3269 setTimeout(function () { 3270 window.close(); 3271 }, 400); 3272 return; 3273 } 3274 submitScanResult(payload); 3275 } 3276 3277 var script = document.createElement('script'); 3278 // cdnjs only goes up to 4.10.3; jsDelivr serves 4.11.1 (matches accessibility-scanner). 3279 script.src = 'https://cdn.jsdelivr.net/npm/[email protected]/axe.min.js'; 3280 script.onload = function () { 3281 waitForFullPageLoad().then(runAxeScan); 3282 }; 3283 script.onerror = function () { 3284 notifyScanOpener({ 3285 type: 'accesspro-axe-scan-error', 3286 token: token, 3287 message: 'Failed to load axe-core', 3288 }); 3289 }; 3290 document.head.appendChild(script); 3291 })(); 3292</script>
3292 3293 3294 3295<style> 3296 .accesspro-icon { 3297 display: inline-flex; 3298 flex-direction: column; 3299 align-items: center; 3300 gap: 4px; 3301 cursor: pointer; 3302 text-decoration: none; 3303 vertical-align: middle; 3304 color: var(--acp-trigger-color, #23185c); 3305 } 3306 3307 /* Icon-only triggers should not reserve a text line box. */ 3308 .accesspro-icon[icon='true']:not(.acp-trigger--has-text) { 3309 line-height: 0; 3310 } 3311 3312 .accesspro-icon .asw-menu-btn-container { 3313 flex-shrink: 0; 3314 } 3315 3316 /* The cloned icon is inert; the host element is the control. */ 3317 .accesspro-icon .asw-menu-btn-container, 3318 .accesspro-icon .asw-menu-btn { 3319 pointer-events: none; 3320 } 3321</style>
3322<script> 3323 (function () { 3324 var SELECTOR = '.accesspro-icon'; 3325 var BOUND = 'acpTriggerBound'; 3326 var FILLED = 'acpTriggerFilled'; 3327 var settings = window.accessProWidgetSettings || {}; 3328 var inlineMode = !!settings.hide_floating_icon; 3329 var fallbackReady = inlineMode; 3330 document.documentElement.style.setProperty( 3331 '--acp-trigger-color', 3332 settings.icon_color_fill || '#23185c' 3333 ); 3334 3335 /* ---- open the widget ------------------------------------------------ */ 3336 /* main.js is deferred, so iconInstance may not exist on an early click. */ 3337 function openWidget(event) { 3338 if (event) event.preventDefault(); 3339 if (window.iconInstance) { 3340 window.iconInstance.toggleWidget(); 3341 return; 3342 } 3343 var waited = 0; 3344 var timer = setInterval(function () { 3345 if (window.iconInstance) { 3346 clearInterval(timer); 3347 window.iconInstance.toggleWidget(); 3348 } else if ((waited += 100) >= 10000) { 3349 clearInterval(timer); 3350 console.error('[AccessPro] Widget did not load â cannot open menu.'); 3351 } 3352 }, 100); 3353 } 3354 3355 /* ---- clone the floating icon ---------------------------------------- */ 3356 function buildIcon() { 3357 var source = document.querySelector('#Access-Pro-Icon .asw-menu-btn-container'); 3358 if (!source) return null; 3359 3360 var clone = source.cloneNode(true); 3361 3362 // Strip ids: the widget mutates apMenuIconStroke / apMenuIconFill by id 3363 // when contrast modes change, and duplicates would shadow the original. 3364 clone.removeAttribute('id'); 3365 clone.querySelectorAll('[id]').forEach(function (node) { 3366 node.removeAttribute('id'); 3367 }); 3368 3369 // The dismiss "X" and loading dots belong to the floating icon only. 3370 clone.querySelectorAll('.asw-hide-widget-icon, .acp-floating-dots').forEach(function (node) { 3371 node.remove(); 3372 }); 3373 3374 // A <button> nested inside the merchant's <a>
3374 is invalid HTML. Swap it 3375 // for a <span> carrying the same classes so the widget CSS still applies. 3376 var button = clone.querySelector('.asw-menu-btn'); 3377 if (button) { 3378 var span = document.createElement('span'); 3379 span.className = button.className; 3380 span.setAttribute('style', button.getAttribute('style') || ''); 3381 span.setAttribute('aria-hidden', 'true'); 3382 while (button.firstChild) span.appendChild(button.firstChild); 3383 button.parentNode.replaceChild(span, button); 3384 } 3385 3386 return clone; 3387 } 3388 3389 3390 /* ---- fallback: build the icon from settings ------------------------- */ 3391 /* Used when the floating icon is not in the DOM â the widget skips 3392 render() entirely if the visitor dismissed it, if a page/country filter 3393 bails out of init(), or if trigger display is set to title-only. 3394 Geometry below mirrors render() in main.js exactly. */ 3395 var GLYPHS = { 3396 default: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" fill="#ffffff" style="height: 45%; width: 45%; fill: #ffffff" viewBox="0 0 512 512" aria-hidden="true" focusable="false"><path d="M256,112a56,56,0,1,1,56-56A56.06,56.06,0,0,1,256,112Z" /><path d="M432,112.8l-.45.12h0l-.42.13c-1,.28-2,.58-3,.89-18.61,5.46-108.93,30.92-172.56,30.92-59.13,0-141.28-22-167.56-29.47a73.79,73.79,0,0,0-8-2.58c-19-5-32,14.3-32,31.94,0,17.47,15.7,25.79,31.55,31.76v.28l95.22,29.74c9.73,3.73,12.33,7.54,13.6,10.84,4.13,10.59.83,31.56-.34,38.88l-5.8,45L150.05,477.44q-.15.72-.27,1.47l-.23,1.27h0c-2.32,16.15,9.54,31.82,32,31.82,19.6,0,28.25-13.53,32-31.94h0s28-157.57,42-157.57,42.84,157.57,42.84,157.57h0c3.75,18.41,12.4,31.94,32,31.94,22.52,0,34.38-15.74,32-31.94-.21-1.38-.46-2.74-.76-4.06L329,301.27l-5.79-45c-4.19-26.21-.82-34.87.32-36.9a1.09,1.09,0,0,0,.08-.15c1.08-2,6-6.48,17.48-10.79l89.28-31.21a16.9,16.9,0,0,0,1.62-.52c16-6,32-14.3,32-31.93S451,107.81,432,112.8Z" /></svg>', 3397 wheelchair: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 960" fill="#ffffff" aria-hidden="true" focusable="false"> <path d="M480 240q-33 0-56.5-23.5T400 160q0-33 23.5-56.5T480 80q33 0 56.5 23.5T560 160q0 33-23.5 56.5T480 240ZM680 880V680H480q-33 0-56.5-23.5T400 600V360q0-33 23.5-56.5T480 280q24 0 41.5 10.5T559 324q55 66 99.5 90.5T760 480v80q-53 0-107-23t-93-55v138h120q33 0 56.5 23.5T760 680v220h-80ZM400 880q-83 0-141.5-58.5T200 680q0-72 45.5-127T360 484v82q-35 14-57.5 44.5T280 680q0 50 35 85t85 35q39 0 69.5-22.5T514 720h82q-14 69-69 114.5T400 880Z" /> </svg>', 3398 blind: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false"> <path d="m240-60-64-48 104-139v-213q0-31 5.5-68.5T300-596l-60 34v142h-80v-188l216-123q8-5 17-7t19-2q24 0 44 12t30 33l31 67q20 44 61 66t102 22v80h-39L860-78l-35 20-237-413q-40-13-72.5-37.5T460-568q-10 29-15.5 66.5T441-432l79 112v260h-80v-200l-71-102-9 142L240-60Zm220-700q-33 0-56.5-23.5T380-840q0-33 23.5-56.5T460-920q33 0 56.5 23.5T540-840q0 33-23.5 56.5T460-760Z" /> </svg>', 3399 eye: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false"><path d="m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z" /></svg>', 3400 accStraight: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false"><path d="M480-720q-33 0-56.5-23.5T400-800q0-33 23.5-56.5T480-880q33 0 56.5 23.5T560-800q0 33-23.5 56.5T480-720ZM360-80v-520H120v-80h720v80H600v520h-80v-240h-80v240h-80Z" /></svg>', 3401 settings: '<svg class="asw-main-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" fill="#ffffff" style="fill: #ffffff" aria-hidden="true" focusable="false">
3401<path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z" /></svg>' 3402 }; 3403 3404 var SIZES = { 3405 small: 40, '0.5x': 40, 3406 medium: 50, '1x': 50, default: 50, 3407 large: 60, '1.5x': 60, 3408 extraLarge: 75, '2x': 75 3409 }; 3410 3411 function buildIconFromSettings() { 3412 var s = window.accessProWidgetSettings || {}; 3413 var style = s.icon_style || 'thick'; 3414 var square = s.icon_shape === 'square'; 3415 // Defaults must match mergeSettings() in main.js and DEFAULT_SETTINGS in 3416 // app/constants/settings.js â both use #23185c for stroke AND fill â so a 3417 // metafield missing these keys renders identically on either path. 3418 var stroke = s.icon_color_stroke || '#23185c'; 3419 var fill = s.icon_color_fill || '#23185c'; 3420 var px = SIZES[s.icon_size] || 50; 3421 var solid = style === 'solid'; 3422 var thin = style === 'thin'; 3423 var shapes = ''; 3424 3425 if (square) { 3426 var sizes = [ 3427 [solid ? 100 : 98, stroke, 12], 3428 [solid ? 0 : thin ? 86 : 82, '#ffffff', 10], 3429 [solid || thin ? 80 : 70, fill, 8] 3430 ];
3431 sizes.forEach(function (d) { 3432 if (!d[0]) return; 3433 var off = (100 - d[0]) / 2; 3434 shapes += '<rect x="' + off + '" y="' + off + '" width="' + d[0] + '" height="' + d[0] + 3435 '" rx="' + d[2] + '" ry="' + d[2] + '" fill="' + d[1] + '" />'; 3436 }); 3437 } else { 3438 [ 3439 [solid ? 50 : 49, stroke], 3440 [solid ? 0 : thin ? 43 : 41, '#ffffff'], 3441 [solid || thin ? 40 : 35, fill] 3442 ].forEach(function (d) { 3443 shapes += '<circle cx="50" cy="50" r="' + d[0] + '" fill="' + d[1] + '" />'; 3444 }); 3445 } 3446 3447 var name = GLYPHS[s.icon] ? s.icon : 'default'; 3448 var box = document.createElement('div'); 3449 box.className = 'asw-menu-btn-container'; 3450 box.setAttribute('style', 'position:relative;width:' + px + 'px;height:' + px + 'px;'); 3451 // The widget stylesheet may not be loaded when render() never ran, so 3452 // every layout-critical rule is inlined rather than left to the classes. 3453 box.innerHTML = 3454 '<span class="asw-menu-btn' + (square ? ' asw-menu-btn--square' : '') + '" aria-hidden="true"' + 3455 ' style="position:relative;display:flex;align-items:center;justify-content:center;' + 3456 'width:100%;height:100%;background:transparent;border:none;padding:0;margin:0;' + 3457 'border-radius:' + (square ? '12%' : '50%') + ';">' + 3458 '<svg class="asw-outer-svg" viewBox="0 0 100 100" aria-hidden="true" focusable="false"' + 3459 ' style="width:100%;height:100%;display:block;">' + shapes + '</svg>' + 3460 GLYPHS[name] + '</span>'; 3461 3462 var glyph = box.querySelector('.asw-main-icon'); 3463 if (glyph) { 3464 // .asw-main-icon sizes to 50% via CSS; the default glyph overrides to 45% inline. 3465 var pct = name === 'default' ? '45%' : '50%'; 3466 glyph.setAttribute( 3467 'style', 3468 'position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);' + 3469 'width:' + pct + ';height:' + pct + ';fill:#ffffff;z-index:100;' 3470 ); 3471 } 3472 return box; 3473 } 3474 3475 /* Name from the host only. Text inside aria-hidden (the cloned icon) does not count. */ 3476 function triggerNeedsName(el) { 3477 if ((el.getAttribute('aria-label') || '').trim()) return false; 3478 if ((el.getAttribute('aria-labelledby') || '').trim()) return false; 3479 if ((el.getAttribute('title') || '').trim()) return false; 3480 var node = el.firstChild; 3481 while (node) { 3482 if (node.nodeType === 3) { 3483 if (node.textContent.trim()) return false; 3484 } else if (node.nodeType === 1 && node.getAttribute('aria-hidden') !== 'true') { 3485 if (!triggerNeedsName(node)) return false; 3486 } 3487 node = node.nextSibling; 3488 } 3489 return true; 3490 } 3491 3492 function ensureTriggerName(el) { 3493 if (triggerNeedsName(el)) { 3494 el.setAttribute('aria-label', 'Open Accessibility Menu'); 3495 } 3496 } 3497 3498 /* ---- wire one element ----------------------------------------------- */ 3499 function bind(el) { 3500 if (el.dataset[BOUND]) return; 3501 el.dataset[BOUND] = '1'; 3502 3503 el.addEventListener('click', openWidget); 3504 el.addEventListener('keydown', function (event) { 3505 if (event.key === 'Enter' || event.key === ' ') openWidget(event); 3506 }); 3507 3508 // A non-anchor host (div/span) needs explicit button semantics. 3509 var tag = el.tagName.toLowerCase(); 3510 if (tag !== 'a' && tag !== 'button') { 3511 if (!el.hasAttribute('role')) el.setAttribute('role', 'button'); 3512 if (!el.hasAttribute('tabindex')) el.setAttribute('tabindex', '0'); 3513 } 3514 3515 if (el.textContent.trim()) el.classList.add('acp-trigger--has-text'); 3516 ensureTriggerName(el); 3517 } 3518 3519 function fillIcon(el, allowFallback) { 3520 if (el.dataset[FILLED]) return true; 3521 if (el.getAttribute('icon') !== 'true') return true; 3522 3523 // Prefer cloning the live icon; fall back to rebuilding from settings. 3524 var icon = buildIcon(); 3525 if (!icon && (allowFallback || inlineMode)) icon = buildIconFromSettings(); 3526 if (!icon) return false; 3527 3528 // The clone's size lives only in the container's inline style. If the 3529 // widget rendered without one, size it from settings so it cannot 3530 // collapse to zero height inside the merchant's layout. 3531 if (!/\bheight\s*:/.test(icon.getAttribute('style') || '')) { 3532 var px = SIZES[(window.accessProWidgetSettings || {}).icon_size] || 50; 3533 icon.style.position = 'relative'; 3534 icon.style.width = px + 'px'; 3535 icon.style.height = px + 'px'; 3536 } 3537 3538 el.insertBefore(icon, el.firstChild); 3539 el.dataset[FILLED] = '1'; 3540 ensureTriggerName(el); 3541 return true; 3542 } 3543 3544 /* ---- scan ------------------------------------------------------------ */
3545 /* Clicks are wired immediately so the trigger works before the icon 3546 renders; icons are filled in once the floating icon exists. */ 3547 var pendingIcons = false; 3548 3549 function scan(allowFallback) { 3550 pendingIcons = false; 3551 document.querySelectorAll(SELECTOR).forEach(function (el) { 3552 bind(el); 3553 if (!fillIcon(el, allowFallback)) pendingIcons = true; 3554 }); 3555 } 3556 3557 function start() { 3558 scan(inlineMode); 3559 3560 // Inline mode hides the floating icon, so build from settings immediately. 3561 if (inlineMode) { 3562 // console.log('[AccessPro] Inline triggers â using widget settings for icons'); 3563 } 3564 3565 // The floating icon only renders after the settings request resolves and 3566 // the widget chunk loads, so poll until it appears. If it never does, 3567 // stop waiting and build the icon from settings instead. 3568 var FALLBACK_AFTER = 2500; 3569 var waited = 0; 3570 var timer = setInterval(function () { 3571 if (!pendingIcons) { 3572 clearInterval(timer); 3573 return; 3574 } 3575 waited += 200; 3576 if (waited < FALLBACK_AFTER) { 3577 scan(false); 3578 return; 3579 } 3580 fallbackReady = true; 3581 clearInterval(timer); 3582 scan(true); 3583 if (pendingIcons) { 3584 console.warn('[AccessPro] Could not render inline icons.'); 3585 } 3586 }, 200); 3587 3588 // Catch triggers added later (theme editor re-renders, dynamic sections). 3589 // Debounced: the widget itself mutates the DOM heavily as it renders. 3590 if (window.MutationObserver) { 3591 var queued = false; 3592 new window.MutationObserver(function () { 3593 if (queued) return; 3594 queued = true; 3595 requestAnimationFrame(function () { 3596 queued = false; 3597 scan(fallbackReady || inlineMode); 3598 }); 3599 }).observe(document.body, { childList: true, subtree: true }); 3600 } 3601 } 3602 3603 if (document.readyState === 'loading') { 3604 document.addEventListener('DOMContentLoaded', start); 3605 } else { 3606 start(); 3607 } 3608 })(); 3609</script>
3609 3610 3611 3612</div><div id="shopify-block-AWGxmMlp0WWFnTzZRY__16798170927650018749" class="shopify-block shopify-app-block"> 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629<div id="recharge-storefront-experiences"> 3630 3631 <div></div> 3632</div>
3633<script type="module" src="https://static.rechargecdn.com/assets/storefront-experiences/storefront-experiences.js"></script>
3633 3634
3635<script> 3636 (function () { 3637 3638 3639 3640 3641 3642 3643 window.RechargeStorefrontConfig = { 3644 customer: null, 3645 shop: { 3646 currency: "USD", 3647 locale: "en", 3648 identifier: "uijg2k-cd.myshopify.com", 3649 market_id: 92716368188, 3650 currency_format: "${{amount}}", 3651 routes: { 3652 cart: "\/cart", 3653 root: "\/", 3654 }, 3655 }, 3656 cart_overlay:{"enabled":true}, 3657 cart_overlay_preview:{}, 3658 cart_drawer:{"enabled":true}, 3659 cart_drawer_preview:{}, 3660 bundles_selling_plan_sync_enabled:false, 3661 }; 3662 })(); 3663</script>
3663 3664 3665 3666 3667 3668</div><div id="shopify-block-AK0h3cTVsZkRtSWZvY__back-in-stock-restock-alerts-4bb73be2-b7c2-4870-949f-c528145452a3" class="shopify-block shopify-app-block"><link rel="preconnect" href="https://app.restockrocket.io" crossorigin><link rel="preconnect" href="https://uijg2k-cd.myshopify.com" crossorigin><!-- Config and setup JS -->
3669<script id="RestockRocketConfig"> 3670 window._RestockRocketConfig = window._RestockRocketConfig || {} 3671 window._RestockRocket = window._RestockRocket || {} 3672 window._Stoq = window._RestockRocket 3673 window._StoqConfig = window._RestockRocketConfig 3674 try { window._RestockRocket.inlineRanAt = performance.now(); } catch (e) { } 3675 function normalizeLocale(locale) { 3676 if (!locale || locale.trim() === '') { 3677 return ''; 3678 } 3679 return locale.toString().toLowerCase().replace(/-/g, '_'); 3680 } 3681 3682 window._RestockRocketConfig.locale = 'en'; 3683 window._RestockRocketConfig.normalizedLocale = normalizeLocale('en'); 3684 window._RestockRocketConfig.shop = 'uijg2k-cd.myshopify.com'; 3685 window._RestockRocketConfig.pageType = 'blog'; 3686 window._RestockRocketConfig.liquidRenderedAt = 1791444213;window._RestockRocketConfig.marketId = 92716368188;window._RestockRocketConfig.countryName = 'United States'; 3687 window._RestockRocketConfig.countryIsoCode = 'US';window._RestockRocketConfig.languageIsoCode = 'en';window._RestockRocketConfig.cartInventoryQuantity = {}; 3688 if (!window._RestockRocketConfig.cartToken) { 3689 try { 3690 const m = document.cookie.match(/(?:^|;\s*)cart=([^;]+)/); 3691 if (m && m[1]) window._RestockRocketConfig.cartToken = decodeURIComponent(m[1]); 3692 } catch (e) { } 3693 } 3694window._RestockRocketConfig.cachedSettings = {"id":47272,"shop_id":47248,"currency":"USD","created_at":"2025-11-06T18:51:27.497Z","updated_at":"2026-10-01T04:50:15.567Z","enable_app":true,"enable_signup_widget":true,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":false,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{"preorderIndexButtonChildSelector":".body4-text span:nth-child(2)","disableDebugLoggingForNonPreorderItem":false,"preorderCollectionButtonChildSelector":".body4-text span:nth-child(2)"},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":"","collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too!","show_button_on_collection":false,"sms_default_country":"us","sms_allowed_countries":[],"sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_custom_domain_enabled":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":"","insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"Preorders must be purchased
3694separately from regular items. Please complete your current order first, or clear your cart to continue.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":".card__inner","insert_button_after_selector_index":".card__inner","push_enabled":false,"push_allowed":true,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again.","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send push notification","insert_button_after_selector_page":".card__inner","show_button_on_page":false,"insert_button_after_selector_search":".card__inner","show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":"","index_buttons_container":"","page_buttons_container":"","search_buttons_container":"","extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified when itâs restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":".shopify-payment-button","preorder_add_to_cart_button_selector":".product-form__submit.button.button-lightblue","preorder_badge_selector":".price__container","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":".quick-add.no-js-hidden","preorder_collection_enabled":true,"preorder_collection_form_selector":".product-form form","preorder_collection_add_to_cart_button_selector":".quick-add__submit.button.button-lightblue.button--secondary","preorder_index_enabled":true,"preorder_index_form_selector":".product-form form","preorder_index_add_to_cart_button_selector":".quick-add__submit.button.button-lightblue.button--secondary","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":".card__inner","preorder_index_badge_selector":".card__inner","preorder_page_badge_selector":".card__inner","preorder_search_badge_selector":".card__inner","preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":".btn-cta","preorder_button_disclaimer_insert_selector":".product-form__submit","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":".price__container","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":".price__regular .price-item--regular","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":".product-form__buttons","inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":null,"preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","configure_notify_me_enabled":false,"restock_note_insert_selector":null,"restock_note_insert_selector_type":"afterend","restock_note_background_color":"#f3f4f6","restock_note_text_color":"#202223","restock_note_border_radius":4,"preorder_modal_continue_button_text":"Continue","preorder_modal_cancel_button_text":"Cancel","meta_pixel_enabled":false,"meta_pixel_id":null,"cache":true,"cached_at":"2026-10-01T04:50:15.620Z","multi_language_enabled":false,"translation_locale":"en","disable_refresh_on_stale_liquid":false,"api_host":"https://ext.stoqapp.com"};window._RestockRocketConfig.storefrontAccessToken = "ef4d47db36741ebf0ee472b25f2b5223"; 3695 window._RestockRocketConfig.metafieldNamespace = 'restockrocket_production'; 3696 window._RestockRocketConfig.storefrontApiVersion = '2026-07';window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[52981190164796,53002950738236,53002962600252,53002977870140],"updated_at":"2026-10-02T12:19:12Z","market_locations_enabled":false,"market_id":92716368188,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null,"bulk_operation":true};window._RestockRocketConfig.cachedInStockVariantIds = {"in_stock_variant_ids":[51601606672700,51601710514492,51601710907708,51616987447612,52102490390844,52414052008252,52414058037564,52670639898940],"updated_at":"2026-10-08T07:04:04Z","market_locations_enabled":false,"market_id":92716368188,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-10-02T12:18:47Z","shopify_market_id":92716368188,"market_locations_enabled":false}; 3697 window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_92716368188";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-10-02T12:18:56Z","shopify_market_id":92716368188,"market_locations_enabled":false}; 3698 window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_92716368188";
3699window._RestockRocketConfig.sellingPlans = [];(function() { 3700 const cachedData = {"plans":[{"shopify_selling_plan_group_id":79560966460,"shopify_selling_plan_id":693512438076,"enabled":true,"variant_ids":[],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Pre-Order","preorder_button_description":"Our gift sets are expected to ship in early December. ","preorder_button_description_enabled":true,"preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":0,"delivery_at":"2025-11-06T18:52:15.334Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":false,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: As soon as possible","shipping_applies_to_all_products":true,"shipping_text":"ASAP","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":"0.0","pricing_percentage":"0.0","discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"shopify","preorder_badge_enabled":true,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#002459","preorder_badge_background_color":"#E5BB42","preorder_discounted_price_enabled":false,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":false,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#3244D3","preorder_button_colors_enabled":true,"markets_enabled":false,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":true,"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-11-06T18:52:15.334Z","billing_after_n_intervals":0,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":"0.0","pricing_percentage":"0.0","billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":693512438076,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":true,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","disable_button_until_acknowledged":false,"acknowledgement_line_item_property_enabled":false,"acknowledgement_line_item_property_text":"Preorder Terms Accepted","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-12-05T18:22:41.237Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased
3700separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"batches_enabled":false,"preorder_batches":[]}],"disabled_plan_ids":[],"has_in_stock_offer":true,"has_preorder_offer":false,"read_flags":{"enable_storefront_product_reads":true,"enable_storefront_integrations_read":true,"enable_storefront_selling_plans_read":true},"cached_at":"2026-10-04T10:28:11Z"}; 3701 3702 if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) { 3703 window._RestockRocketConfig.readFlags = cachedData.read_flags || {}; 3704 const oldPlans = window._RestockRocketConfig.sellingPlans; 3705 const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0 3706 ? oldPlans.reduce(function(max, plan) { 3707 if (plan.updated_at) { 3708 const planDate = new Date(plan.updated_at); 3709 const maxDate = max ? new Date(max) : null; 3710 return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max; 3711 } 3712 return max; 3713 }, '') 3714 : null; 3715 const cachedDate = new Date(cachedData.cached_at); 3716 const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null; 3717 const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate)); 3718 3719 if (useCached) { 3720 if (Array.isArray(cachedData.plans)) { 3721 window._RestockRocketConfig.sellingPlans = cachedData.plans; 3722 window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || []; 3723 console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')'); 3724 } 3725 } else { 3726 window._RestockRocketConfig.disabledSellingPlanIds = []; 3727 console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')'); 3728 } 3729 } 3730 })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [{"id":"cf9136e9-a0d3-4ff9-bab4-adb41357a9ce","shop_id":47248,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false,"enableCartChangeValidation":false,"enableCartUpdateValidation":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-11-06T18:52:14.545Z","updated_at":"2025-11-06T18:52:14.545Z"}]; 3731 try { 3732 var _sqCfg = window._RestockRocketConfig; 3733 var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) && 3734 _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; }); 3735 var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds && 3736 _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length; 3737 _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount); 3738 } catch (e) { } 3739 try { 3740 var _sqc = window._RestockRocketConfig; 3741 var _sqOn = !(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout === false); 3742 var _sqPre = (_sqc.cachedPreorderVariantIds && 3743 _sqc.cachedPreorderVariantIds.preorder_variant_ids) || []; 3744 var _sqArm = false; 3745 if (_sqOn && _sqc.preordersConfigured) { 3746 if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) { 3747 _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1; }); 3748 } else { 3749 _sqArm = (_sqc.integrations || []).some(function (i) { 3750 return i && i.type === 'featured_product' && i.enabled && 3751 Array.isArray(i.page_types) && i.page_types.indexOf(_sqc.pageType) !== -1; 3752 }); 3753 } 3754 } 3755 if (_sqArm && document.documentElement) { 3756 _sqc.acceleratedGateArmed = true; 3757 document.documentElement.classList.add('stoq-buy-now-pending'); 3758 setTimeout(function () { 3759 document.documentElement.classList.remove('stoq-buy-now-pending'); 3760 }, 6000); 3761 } 3762 } catch (e) { } 3763 3764 window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/01a10b23-799c-7a38-a052-ddf9175946a6/restockrocket-1-600/assets/restockrocket-product.js' 3765 window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a10b23-799c-7a38-a052-ddf9175946a6/restockrocket-1-600/assets/restockrocket-collection.js' 3766 window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/01a10b23-799c-7a38-a052-ddf9175946a6/restockrocket-1-600/assets/restockrocket-product-bis.js' 3767 window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/01a10b23-799c-7a38-a052-ddf9175946a6/restockrocket-1-600/assets/restockrocket-collection-bis.js' 3768 window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) 3769 window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io' 3770 try { 3771 const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:assets\/?)?$/); 3772 window._RestockRocketConfig.appVersion = (_stoqVersionMatch && _stoqVersionMatch[1]) || ''; 3773 } catch (e) { 3774 window._RestockRocketConfig.appVersion = ''; 3775 } 3776 const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; 3777 const LIQUID_CACHE_MAX_AGE = 15 * 60; 3778 const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt; 3779 if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { 3780 console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); 3781 window._RestockRocketConfig.isLiquidCacheFresh = true; 3782 window._RestockRocketConfig.liquidCacheAge = null; 3783 } else { 3784 const now = Math.floor(Date.now() / 1000);
3785 const liquidCacheAge = now - liquidRenderedAt; 3786 window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge); 3787 if (liquidCacheAge < 0) { 3788 console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`); 3789 window._RestockRocketConfig.isLiquidCacheFresh = true; 3790 } else if (liquidCacheAge <= LIQUID_CACHE_MAX_AGE) { 3791 console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); 3792 window._RestockRocketConfig.isLiquidCacheFresh = true; 3793 } else { 3794 console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); 3795 window._RestockRocketConfig.isLiquidCacheFresh = false; 3796 } 3797 } 3798 3799 function checkSettingsExpiry(settings) { 3800 try { 3801 if (!settings || !settings.updated_at) { 3802 console.debug('STOQ - Invalid settings data structure'); 3803 return null; 3804 } 3805 3806 if (!settings.cache) { 3807 console.debug('STOQ - settings caching disabled'); 3808 return null; 3809 } 3810 if (settings.multi_language_enabled) { 3811 if (!settings.translations) { 3812 console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); 3813 return null; 3814 } 3815 if (window._RestockRocketConfig.normalizedLocale && 3816 !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { 3817 console.debug('STOQ - locale not explicitly translated, will use default language from cache'); 3818 } 3819 } 3820 3821 const updatedAt = new Date(settings.updated_at); 3822 if (isNaN(updatedAt.getTime())) { 3823 console.debug('STOQ - Invalid updated_at date format in settings'); 3824 return null; 3825 } 3826 3827 const age = Date.now() - updatedAt.getTime(); 3828 if (age < SETTINGS_CACHE_DURATION) { 3829 console.debug('STOQ - settings changed recently, skipping cache'); 3830 return null; 3831 } 3832 3833 return settings; 3834 } catch (error) { 3835 console.debug('STOQ - Error checking settings cache:', error); 3836 return null; 3837 } 3838 } 3839 3840 function createRestockRocketContainer() { 3841 const restockRocketContainer = document.createElement('div'); 3842 restockRocketContainer.id = 'restock-rocket'; 3843 document.body.appendChild(restockRocketContainer); 3844 } 3845 3846 function createRestockRocketScript(scriptUrl) { 3847 const restockRocketScriptElement = document.createElement('script'); 3848 restockRocketScriptElement.setAttribute('defer', 'defer'); 3849 restockRocketScriptElement.src = scriptUrl; 3850 document.body.appendChild(restockRocketScriptElement); 3851 } 3852 3853 createRestockRocketContainer() 3854 3855 console.debug('STOQ - extension activated') 3856 try { 3857 const _stoqInitConfig = window._RestockRocketConfig; 3858 const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)
3858) 3859 ? _stoqInitConfig.product.variants.map(function(v) { return v.id }) 3860 : []; 3861 const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id; 3862 var _stoqPageSeq = 0; 3863 try { 3864 _stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1; 3865 window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq)); 3866 } catch (e) { } 3867 Shopify?.analytics?.publish?.('stoq_initialized', { 3868 cart_token: _stoqInitConfig.cartToken || '', 3869 page_url: window.location.href, 3870 page_type: _stoqInitConfig.pageType || '', 3871 shop_domain: _stoqInitConfig.shop || '', 3872 market_id: _stoqInitConfig.marketId || '', 3873 country_code: _stoqInitConfig.countryIsoCode || '', 3874 detected_variant_ids: _stoqDetectedVariantIds, 3875 selected_variant_id: _stoqSelectedVariantId || '', 3876 page_load_seq: _stoqPageSeq, 3877 liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0, 3878 app_version: _stoqInitConfig.appVersion || '', 3879 liquid_cache_age: _stoqInitConfig.liquidCacheAge, 3880 inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '', 3881 inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId], 3882 }); 3883 } catch (e) { 3884 console.debug('STOQ - stoq_initialized publish failed:', e); 3885 } 3886 try { 3887 var _sqTrack = window._RestockRocketConfig; 3888 if (_sqTrack.preordersConfigured) { 3889 document.addEventListener('click', function (e) { 3890 try { 3891 var t = e.target; 3892 if (!t || !t.closest) return; 3893 var host = t.closest('.shopify-payment-button, shopify-payment-terms'); 3894 if (!host) return; 3895 var channel = host.matches && host.matches('shopify-payment-terms') 3896 ? 'shop_pay_installments' : 'buy_now'; 3897 var form = host.closest('form'); 3898 var vidEl = form && form.querySelector('[name="id"]'); 3899 var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || ''; 3900 var _sqVidNum = Number(variantId); 3901 var _sqPlan = null; 3902 var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : []; 3903 var _sqMktId = Number(_sqTrack.marketId); 3904 var _sqForVariant = function (pl) { 3905 return pl && pl.enabled && Array.isArray(pl.variant_ids) && 3906 pl.variant_ids.indexOf(_sqVidNum) !== -1; 3907 }; 3908 _sqPlans.forEach(function (pl) { 3909 if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled && 3910 Array.isArray(pl.shopify_market_ids) && 3911 pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; } 3912 }); 3913 if (!_sqPlan) { 3914 _sqPlans.forEach(function (pl) { 3915 if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; } 3916 }); 3917 } 3918 Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', { 3919 variant_id: variantId, 3920 product_id: (_sqTrack.product && _sqTrack.product.id) || '', 3921 channel: channel, 3922 market_id: _sqTrack.marketId || '', 3923 country_code: _sqTrack.countryIsoCode || '', 3924 page_type: _sqTrack.pageType || '', 3925 cart_token: _sqTrack.cartToken || '', 3926 page_url: (window.location && window.location.href) || '', 3927 properties: { 3928 is_preorder_variant: (function () { 3929 var vid = Number(variantId); 3930 var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; }; 3931 return has(_sqTrack.preorderVariantIds) || 3932 has(_sqTrack.cachedPreorderVariantIds && 3933 _sqTrack.cachedPreorderVariantIds.preorder_variant_ids); 3934 })(), 3935 in_enabled_plan: !!_sqPlan, 3936 is_instock_variant: (function () { 3937 var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; }; 3938 return has(_sqTrack.inStockVariantIds) || 3939 has(_sqTrack.cachedInStockVariantIds && 3940 _sqTrack.cachedInStockVariantIds.in_stock_variant_ids); 3941 })(), 3942 enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '', 3943 enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '', 3944 block_enabled: !(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout === false), 3945 gate_armed: !!_sqTrack.acceleratedGateArmed, 3946 gate_active_at_click: !!(document.documentElement && 3947 document.documentElement.classList.contains('stoq-buy-now-pending')), 3948 blocked: (function () { 3949 try { 3950 var rr = window._RestockRocket; 3951 return !!(rr && typeof rr.willBlockAcceleratedCl
3951ick === 'function' && 3952 rr.willBlockAcceleratedClick(e)); 3953 } catch (err) { return false; } 3954 })(), 3955 }, 3956 }); 3957 } catch (err) { } 3958 }, true); 3959 } 3960 } catch (e) { } 3961 function applyTranslations(settings) { 3962 try { 3963 if (!settings || !settings.multi_language_enabled) { 3964 return settings; 3965 } 3966 3967 if (!settings.translations) { 3968 console.debug('STOQ - No translations found, skipping translation'); 3969 return settings; 3970 } 3971 3972 const normalizedLocale = window._RestockRocketConfig.normalizedLocale; 3973 const translations = settings.translations; 3974 3975 if (!normalizedLocale) { 3976 console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); 3977 delete settings.translations; 3978 return settings; 3979 } 3980 3981 console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); 3982 3983 const translatedFields = translations[normalizedLocale]; 3984 if (translatedFields && typeof translatedFields === 'object') { 3985 Object.keys(translatedFields).forEach(function(key) { 3986 const value = translatedFields[key]; 3987 if (value !== null && value !== undefined && value !== '') { 3988 settings[key] = value; 3989 } 3990 }); 3991 } else { 3992 console.debug('STOQ - No translated fields found for locale:', normalizedLocale); 3993 } 3994 3995 delete settings.translations; 3996 return settings; 3997 } catch (e) { 3998 console.debug('STOQ - error applying translations:', e); 3999 return settings; 4000 } 4001 } 4002 function setupCartSellingPlanUpdater(settings) { 4003 window.addEventListener('stoq:inventory-data-loaded', function(event) { 4004 console.debug('STOQ - Inventory data loaded, updating cart selling plans'); 4005 if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { 4006 window._RestockRocket.updateCartSellingPlans() 4007 .then(hasUpdates => { 4008 if (hasUpdates) { 4009 console.debug('STOQ - cart selling plans updated successfully'); 4010 } else { 4011 console.debug('STOQ - no cart selling plan updates needed'); 4012 } 4013 }) 4014 .catch(error => { 4015 console.error('STOQ - error updating cart selling plans:', error); 4016 }); 4017 } 4018 }); 4019 } 4020 function storefrontGraphql(query, variables) { 4021 const cfg = window._RestockRocketConfig; 4022 if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) { 4023 return Promise.reject(new Error('Storefront API unavailable')); 4024 } 4025 return fetch( 4026 `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, 4027 { 4028 method: 'POST', 4029 headers: { 4030 'Content-Type': 'application/json', 4031 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, 4032 }, 4033 body: JSON.stringify({ query: query, variables: variables }), 4034 } 4035 ) 4036 .then(function(response) { 4037 if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } 4038 return response.json(); 4039 }) 4040 .then(function(body) { 4041 if (body && body.errors && body.errors.length) { 4042 throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); 4043 } 4044 return body && body.data; 4045 }); 4046 } 4047 function fetchStorefrontShopMetafield(key) { 4048 const cfg = window._RestockRocketConfig; 4049 const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }'; 4050 return storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key }) 4051 .then(function(data) { 4052 const value = data && data.shop && data.shop.metafield && data.shop.metafield.value; 4053 if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } 4054 return JSON.parse(value); 4055 }); 4056 } 4057 (function loadStorefrontSettings() { 4058 const cfg = window._RestockRocketConfig; 4059 if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) return; 4060 function run() { 4061 // The live-settings read is one more shop-level metafield fetch, so it 4062 // shares fetchStorefrontShopMetafield with the integrations/selling_plans 4063 // reads rather than re-issuing the same query + parse. 4064 fetchStorefrontShopMetafield('settings') 4065 .then(function(settings) { 4066 cfg.storefrontSettings = settings; 4067 console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings'); 4068 }) 4069 .catch(function(e) { 4070 console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message); 4071 }); 4072 } 4073 4074 if (typeof window.requestIdleCallback === 'function') { 4075 window.requestIdleCallback(run, { timeout: 5000 }); 4076 } else { 4077 setTimeout(run, 0); 4078 } 4079 })(); 4080 const cachedSettings = window._RestockRocketConfig.cachedSettings; 4081 const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; 4082 4083 if (validCachedSettings) { 4084 console.debug('STOQ - using cached settings'); 4085 initializeScripts(validCachedSettings); 4086 } else { 4087 console.debug('STOQ - fetching fresh settings'); 4088 const headers = { 4089 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 4090 'ngrok-skip-browser-warning': 'skip' 4091 }; 4092 4093 if (window.Shopify?.theme?.role === 'main') { 4094 headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; 4095 headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; 4096 headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; 4097 } 4098 4099 fetch( 4100 `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, 4101 { headers } 4102 ) 4103 .then(function(response) { 4104 if (!response.ok) { 4105 throw new Error('Network response was not ok'); 4106 } 4107 return response.json(); 4108 }) 4109 .then(function(settings) { 4110 initializeScripts(settings); 4111 }) 4112 .catch(function(error) { 4113 if (cachedSettings) { 4114 console.debug('STOQ - using expired cached settings as fallback'); 4115 initializeScripts(cachedSettings); 4116 } else { 4117 console.error('STOQ - failed to load settings:', error); 4118 } 4119 }) 4120 .catch(function(e) { 4121 console.error(e) 4122 }) 4123 } 4124 4125 function fetchEmbedConfig(endpoint, apply) { 4126 return fetch( 4127 `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, 4128 { 4129 headers: { 4130 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 4131 'ngrok-skip-browser-warning': 'skip' 4132 } 4133 } 4134 ) 4135 .then(function(response) { 4136 if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); 4137 return response.json(); 4138 }) 4139 .then(function(data) {
4140 try { 4141 apply(data); 4142 } catch (applyError) { 4143 console.error('STOQ - apply failed for ' + endpoint + ':', applyError); 4144 throw applyError; 4145 } 4146 }) 4147 .catch(function(error) { 4148 console.debug(`STOQ - using cached ${endpoint}:`, error.message); 4149 }); 4150 } 4151 function refreshShopConfig(source) { 4152 const cfg = window._RestockRocketConfig; 4153 const viaEmbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); }; 4154 const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; 4155 if (!flagOn || source.embedOnly === true) { return viaEmbed(); } 4156 4157 return fetchStorefrontShopMetafield(source.metafieldKey) 4158 .then(function(value) { 4159 if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } 4160 source.apply(value); 4161 console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); 4162 }) 4163 .catch(function(error) { 4164 console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); 4165 return viaEmbed(); 4166 }); 4167 } 4168 function refreshIntegrations() { 4169 const cfg = window._RestockRocketConfig; 4170 return refreshShopConfig({ 4171 endpoint: 'integrations', 4172 metafieldKey: 'integrations', 4173 flag: 'enable_storefront_integrations_read', 4174 isValid: function(value) { return Array.isArray(value); }, 4175 apply: function(data) { 4176 cfg.integrations = data; 4177 } 4178 }); 4179 } 4180 function refreshSellingPlans(embedOnly) { 4181 const cfg = window._RestockRocketConfig; 4182 return refreshShopConfig({ 4183 embedOnly: embedOnly === true, 4184 endpoint: 'selling_plans', 4185 metafieldKey: 'cachedSellingPlans', 4186 flag: 'enable_storefront_selling_plans_read', 4187 isValid: function(value) { return !!value && Array.isArray(value.plans); }, 4188 apply: function(data) { 4189 cfg.sellingPlans = data.plans; 4190 cfg.disabledSellingPlanIds = data.disabled_plan_ids || []; 4191 if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) { 4192 cfg.readFlags = data.read_flags; 4193 } 4194 } 4195 }); 4196 } 4197 4198 function initializeScripts(settings) { 4199 settings = applyTranslations(settings); 4200 window._RestockRocketConfig.settings = settings; 4201 console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); 4202 const forceEmbedSellingPlans = settings.force_embed_selling_plans === true; 4203 const staleRefresh = !window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid; 4204 if (forceEmbedSellingPlans || staleRefresh) { 4205 console.debug('STOQ - refreshing selling_plans' + (staleRefresh ? ' + integrations (Liquid cache stale)' : ' (force_embed_selling_plans)')); 4206 const refreshes = [refreshSellingPlans(forceEmbedSellingPlans)]; 4207 if (staleRefresh) { refreshes.push(refreshIntegrations()); } 4208 Promise.race([ 4209 Promise.all(refreshes), 4210 new Promise(function(resolve) { setTimeout(resolve, 1000); }) 4211 ]).then(function() { loadScripts(settings); }); 4212 return; 4213 } 4214 4215 loadScripts(settings); 4216 } 4217 4218 function loadScripts(settings) { 4219 setupCartSellingPlanUpdater(settings); 4220 4221 if(settings.enable_app) { 4222 const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { 4223 return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); 4224 }) 4225 const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans) 4226 && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; }); 4227 const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds) 4228 && window._RestockRocketConfig.disabledSellingPlanIds.length > 0; 4229 const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds; 4230 4231 const collectionScriptUrl = usePreorderBuild 4232 ? window._RestockRocketConfig.scriptUrlCollection 4233 : window._RestockRocketConfig.scriptUrlCollectionBis; 4234 const productScriptUrl = usePreorderBuild 4235 ? window._RestockRocketConfig.scriptUrlProduct 4236 : window._RestockRocketConfig.scriptUrlProductBis; 4237 4238 const pageType = window._RestockRocketConfig.pageType; 4239 const collectionPageTypes = ['collection', 'index', 'search', 'page']; 4240
4241 if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) { 4242 createRestockRocketScript(collectionScriptUrl); 4243 } else if(pageType === 'product') { 4244 createRestockRocketScript(productScriptUrl); 4245 } else if(hijackIntegration) { 4246 createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); 4247 } else if(usePreorderBuild) { 4248 createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); 4249 } else { 4250 console.debug(`STOQ - no scripts enabled for ${pageType}`); 4251 } 4252 const appLoadedEvent = new CustomEvent('stoq:loaded', { 4253 detail: { 4254 pageType: window._RestockRocketConfig.pageType, 4255 enabled: settings.enable_app, 4256 settings: settings, 4257 preorderEnabled: settings.preorder_enabled 4258 } 4259 }); 4260 console.debug('STOQ - dispatching app loaded event'); 4261 window.dispatchEvent(appLoadedEvent); 4262 } 4263 } 4264</script>
4264<style id="RestockRocketStyle">html.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}</style> 4265 4266 4267</div><div id="shopify-block-AcVNFMzZ6c2NvTGpQT__15079184273603081885" class="shopify-block shopify-app-block"> 4268 4269 4270 4271 4272 4273
4274<script> 4275 4276 window.essentialOrderValueBoosterConfigs = [{"id":"cmfypncks00e7qibubwzb9ztu","name":"Free Shipping Over $55","title":"Free shipping for orders over {order-value}!","progressTitle":"Youâre only {order-value-progress} away from free shipping!","reachedTitle":"Congratulations! You've got free shipping!","type":"cart-page","goal":"55","moneyFormat":"${{amount}}","placement":"","published":true,"showOnProducts":[],"showOnCollections":[],"showOnProductsInCollections":[],"selectedProducts":[],"CTAType":"add-to-cart","CTALink":"","closeButton":false,"buttonText":"Add to cart","updatedAt":"2026-06-11T23:26:32.764Z","createdAt":"2025-09-25T01:04:16.888Z","style":{"font":"","titleSize":"16","borderSize":"0","titleColor":"#002459","borderColor":"#c5c8d1","gradientEnd":"#FFFFFF","singleColor":"#FFFFFF","borderRadius":"8","buttonRadius":"4","gradientTurn":"90","gradientStart":"#DDDDDD","arrowIconColor":"#BBC0C4","backgroundType":"singleBackground","buttonTextSize":"14","buttonTextColor":"#002459","insideTopSpacing":"16","productPriceSize":"14","productTitleSize":"16","buttonBorderColor":"#002459","outsideTopSpacing":"20","productPriceColor":"#002459","productTitleColor":"#002459","insideBottomSpacing":"16","outsideBottomSpacing":"20","progressBorderRadius":"4","progressBackgroundColor":"#E4E5E7","progressBarBackgroun
4276dColor":"#002459"},"showInCountries":[],"showInSubdivisions":[],"locationType":"","currency":"USD","excludeProducts":[],"excludeProductTags":[],"excludeOnPages":[],"excludeOnSpecificUrls":[],"excludeOnKeywordsInUrl":[],"upsellType":"","translations":[],"productTags":[],"offer":null},]; 4277 window.essentialOrderValueBoosterProductsData = []; 4278 4279 4280 window.essentialOrderValueBoosterPageTemplate = "blog" 4281 window.essentialOrderValueBoosterMeta = { 4282 productData: "null", 4283 cartItems: [], 4284 cartProducts: [], 4285 mainCurrency: "USD", 4286 productCollections: null, 4287 }; 4288 4289 window.essentialOrderValueBoosterTranslations = { 4290 previousSlide: "Previous slide", 4291 nextSlide: "Next slide", 4292 regularPrice: "Regular price", 4293 salePrice: "Sale price", 4294 slide: "Slide" 4295 }; 4296</script>
4296 4297 4298 4299
4300<script src="https://cdn.shopify.com/extensions/01a1100c-8141-7e50-92ef-fd4faee25453/order-value-booster-361/assets/free_shipping_bar_essential_apps.min.js" defer crossorigin="anonymous"></script>
4300 4301
4302<script> 4303 4304</script>
4304 4305 4306 4307 4308 4309</div><div id="shopify-block-AOVc2SVJycmZ3TDFrM__5043070786800498925" class="shopify-block shopify-app-block"><style> 4310 .product-restore-email + .product-restore-email { 4311 display: none !important; 4312 } 4313</style> 4314 4315 4316 4317
4317<script src="https://cdn.shopify.com/extensions/01a0c7ca-5010-747b-9d99-9a644250288a/ecomsend-restock-108/assets/sealapps_email_config.js" defer="defer"></script>
4317 4318
4318<script src="https://cdn.shopify.com/extensions/01a0c7ca-5010-747b-9d99-9a644250288a/ecomsend-restock-108/assets/product_restore_email.js" defer="defer"></script>
4318 4319 4320 4321
4322<script id="em_product_variants" type="application/json"> 4323 null 4324</script>
vendor: 2 bytes, line 4324
4324
4325<script id="em_product_selected_or_first_available_variant" type="application/json"> 4326 null 4327</script>
vendor: 2 bytes, line 4327
4327
4328<script id="bis_shop_id" type="application/json"> 4329 93059612988 4330</script>
vendor: 2 bytes, line 4330
4330
4331<script id="ecomsend_bis_product_title" type="application/json"> 4332 null 4333</script>
vendor: 2 bytes, line 4333
4333
4334<script id="ecomsend_bis_page_type" type="application/json"> 4335 "blog" 4336</script>
4336<script> 4337 4338</script>
vendor: 2 bytes, line 4338
4338
4339<script> 4340 4341</script>
vendor: 2 bytes, line 4341
4341
4342<script> 4343 4344</script>
4344 4345 4346
4347<script> 4348 var bis_popup_settings = {"btn_text":"EMAIL ME WHEN AVAILABLE","btn_bg_color":"#000000","btn_text_color":"#FFFFFF","header_text":"EMAIL ME WHEN AVAILABLE","verification_failed_text":"* Your contact info is invalid","footer_text":"We will notify you when this product is in stock. We do not share your address with anybody else.","success_title":"Successfully subscribed","success_content":"We will send you an email when this product is back in stock.","email_address_placeholder":"Email address...","customer_name_placeholder":"Your name","subscribed_text":"* You are already subscribed to this product.","opt_in_text":"Subscribe me to your list","popup_template":1,"email_tab_text":"Email","sms_tab_text":"SMS","sms_default_region":"US","is_branding_removed":1,"lang":"en","terms":"Terms","privacy_policy":"Privacy Policy","protection_text":"By submitting this subscription, you agree to {{Store_Name}}'s {{Privacy_Policy}} and {{Terms}} regarding the processing of your personal data.","display_consent_checkbox":false,"display_privacy_consent":true,"terms_link":"","privacy_policy_link":"","store_name":"SONNI"} 4349 var bis_product_button_settings = {"is_active_inline_btn":1,"inline_btn_margin_top":-9,"inline_btn_margin_bottom":-9,"inline_btn_text":"Email me when available","inline_btn_bg_color":"#002459","inline_text_color":"#FFFFFF","is_active_float_btn":0,"float_offset":160,"float_btn_text":"EMAIL ME WHEN AVAILABLE","float_btn_bg_color":"#000000","float_text_color":"#FFFFFF","display_all":0,"border_color":"#FFFFFF","border_radius":10,"hover_animation":0,"font_size":14,"font_family":"Inherit","font_weight":"Inherit","hover_bg_color":"#444444","hover_text_color":"#FFFFFF","horizontal_animation":0,"display_button_oversell":0,"customize_inline_btn_position":0,"insert_type":"afterend","customize_css":"#sealapps-bis-widget { width: fit-content; }\n#sealapps-bis-widget .product-restore-email .email-me-button { padding: 5px 20px; min-height: auto; letter-spacing: 0 }","insert_element_selector":"","lang":"en","continue_sell_notify":0,"bis_segment_enabled":0,"subscribe_scope":1} 4350 var bis_collection_button_settings = {"is_active_inline_btn":0,"inline_btn_margin_top":0,"inline_btn_margin_bottom":0,"inline_btn_text":"","inline_btn_bg_color":"","inline_text_color":"","is_active_float_btn":0,"float_offset":0,"float_btn_text":"","float_btn_bg_color":"","float_text_color":"","display_all":0,"border_color":"","border_radius":0,"hover_animation":0,"font_size":0,"font_family":"","font_weight":"","hover_bg_color":"","hover_text_color":"","horizontal_animation":0,"display_button_oversell":0,"customize_inline_btn_position":0,"insert_type":"","customize_css":"","insert_element_selector":"","lang":"","continue_sell_notify":0,"bis_segment_enabled":0,"subscribe_scope":0} 4351 var bis_integrations = [] 4352 var bis_floating_popup_settings = {"id":671,"component_code":"floating_popup","is_enabled":0,"position":"bottom_left","horizontal_spacing":5,"vertical_spacing":5,"display_delay":8,"show_when_continue_selling_out":0,"show_when_all_variants_out_of_stock":0,"popup_font_size":14,"popup_border_radius":12,"button_font_size":14,"button_border_radius":4,"language":"en","popup_message_text":"The product is out of stock. Subscribe to be notified when it's available.","button_text":"EMAIL ME WHEN AVAILABLE","popup_text_color":"#000000","popup_background_color":"#FFFFFF","button_text_color":"#FFFFFF","button_background_color":"#000000"} 4353</script>
4353 4354 4355
4356<script> 4357 var bis_shopify_block_status = 2; 4358 var customerInfo = null; 4359 4360 window.ChannelWillBIS = { 4361 customerInfo: customerInfo 4362 }; 4363</script>
4363 4364 4365 4366</div>
4366<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4366 4367</body> 4368</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.