1<!doctype html> 2 3 4 5 6<html class="no-js" lang="en" ><head>
6<script data-source-attribution="shopify.event_observer.bootstrap"> 7(function(){let e=navigator,t=`prototype`,n=`sendBeacon`,r=e[n],i=fetch,a=XMLHttpRequest[t],{open:o,send:s}=a,c=`EventListener`,l=`add${c}`,u=`remove${c}`,d=EventTarget[t],f=d[l],p=d[u],m=e=>Error((e=document.currentScript)&&[e?.src,e?.id||e?.dataset?.sourceAttribution]),h=(e=[],t=0)=>(e.p=n=>e[t++%1e3]=n,[e,t=>(e.forEach(e.p=t),e.length=0)]),[g,_]=h(),[v,y]=h(),b,x=new WeakMap,S=e=>e&&g.p([e,b||[m()]]);d[l]=function(e,t,n){let r=this,i=t?.handleEvent||t,a=x.get(t),o=m();i?.call&&!a&&x.set(t,a=function(e){b=[o,e.type];try{i.call(t==i?this:t,e)}finally{b=null}}),v.p([e,o,a,r?.tagName||r+``,r?.id]),f.call(r,e,a||t,n)},d[u]=function(e,t,n){p.call(this,e,x.get(t)||t,n)},a.open=function(e,t){x.set(this,[t+``,e]),o.apply(this,arguments)},a.send=function(e){S(x.get(this)),s.call(this,e)},fetch=(e,t)=>(S([(e?.url||e)+``,t?.method]),i(e,t)),e[n]=(t,n)=>(S([t+``,``]),r.call(e,t,n)),setTimeout(()=>import("//www.santubeauty.com/cdn/shopifycloud/storefront/assets/storefront/event_observer_reporter-ed358274.js").then(e=>e.$(_,y,f,i,`68234969307`)))})(); 8//# sourceURL=event-observer-collector.js 9</script>
9 10 11
11<script type="application/vnd.locksmith+json" data-locksmith>{"version":"v346","locked":false,"initialized":true,"scope":"search","access_granted":true,"access_denied":false,"requires_customer":false,"manual_lock":false,"remote_lock":false,"has_timeout":false,"remote_rendered":null,"hide_resource":false,"hide_links_to_resource":false,"hide_price":false,"hide_add_to_cart":false,"transparent":true,"locks":{"all":[],"opened":[]},"keys":[],"keys_signature":"d288adb3ffcceb10d68d7364f54f3d41728137340c3904d53ef5860dcd103593","state":{"template":"search","theme":162145501403,"product":null,"collection":null,"page":null,"blog":null,"article":null,"app":null},"now":1791305651,"path":"\/search","locale_root_url":"\/","canonical_url":"https:\/\/www.santubeauty.com\/search","customer_id":null,"customer_id_signature":"d288adb3ffcceb10d68d7364f54f3d41728137340c3904d53ef5860dcd103593","cart":null}</script>
11<script data-locksmith>!function(){undefined;!function(){var s=window.Locksmith={},e=document.querySelector('script[type="application/vnd.locksmith+json"]'),n=e&&e.innerHTML;if(s.state={},s.util={},s.loading=!1,n)try{s.state=JSON.parse(n)}catch(d){}if(document.addEventListener&&document.querySelector){var o,i,a,t=[76,79,67,75,83,77,73,84,72,49,49],c=function(){i=t.slice(0)},l="style",r=function(e){e&&27!==e.keyCode&&"click"!==e.type||(document.removeEventListener("keydown",r),document.removeEventListener("click",r),o&&document.body.removeChild(o),o=null)};c(),document.addEventListener("keyup",function(e){if(e.keyCode===i[0]){if(clearTimeout(a),i.shift(),0<i.length)return void(a=setTimeout(c,1e3));c(),r(),(o=document.createElement("div"))[l].width="50%",o[l].maxWidth="1000px",o[l].height="85%",o[l].border="1px rgba(0, 0, 0, 0.2) solid",o[l].background="rgba(255, 255, 255, 0.99)",o[l].borderRadius="4px",o[l].position="fixed",o[l].top="50%",o[l].left="50%",o[l].transform="translateY(-50%) translateX(-50%)",o[l].boxShadow="0 2px 5px rgba(0, 0, 0, 0.3), 0 0 100vh 100vw rgba(0, 0, 0, 0.5)",o[l].zIndex="2147483645";var t=document.createElement("textarea");t.value=JSON.stringify(JSON.parse(n),null,2),t[l].border="none",t[l].display="block",t[l].boxSizing="border-box",t[l].width="100%",t[l].height="100%",t[l].background="transparent",t[l].padding="22px",t[l].fontFamily="monospace",t[l].fontSize="14px",t[l].color="#333",t[l].resize="none",t[l].outline="none",t.readOnly=!0,o.appendChild(t),document.body.appendChild(o),t.addEventListener("click",function(e){e.stopImmediatePropagation()}),t.select(),document.addEventListener("keydown",r),document.addEventListener("click",r)}})}s.isEmbedded=-1!==window.location.search.indexOf("_ab=0&_fd=0&_sc=1"),s.path=s.state.path||window.location.pathname,s.basePath=s.state.locale_root_url.concat("/apps/locksmith").replace(/^\/\//,"/"),s.reloading=!1,s.util.console=window.console||{log:function(){},error:function(){}},s.util.makeUrl=function(e,t){var n,o=s.basePath+e,i=[],a=s.cache();for(n in a)i.push(n+"="+encodeURIComponent(a[n]));for(n in t)i.push(n+"="+encodeURIComponent(t[n]));return s.state.customer_id&&(i.push("customer_id="+encodeURIComponent(s.state.customer_id)),i.push("customer_id_signature="+encodeURIComponent(s.state.customer_id_signature))),o+=(-1===o.indexOf("?")?"?":"&")+i.join("&")},s._initializeCallbacks=[],s.on=function(e,t){if("initialize"!==e)throw'Locksmith.on() currently only supports the "initialize" event';s._initializeCallbacks.push(t)},s.initializeSession=function(e){if(!s.isEmbedded){var t=!1,n=!0,o=!0;(e=e||{}).silent&&(o=n=!(t=!0)),s.ping({silent:t,spinner:n,reload:o,callback:function(){s._initializeCallbacks.forEach(function(e){e()})}})}},s.cache=function(e){var t={};try{var n=function i(e){return(document.cookie.match("(^|; )"+e+"=([^;]*)")||0)[2]};t=JSON.parse(decodeURIComponent(n("locksmith-params")||"{}"))}catch(d){}if(e){for(var o in e)t[o]=e[o];document.cookie="locksmith-params=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/",document.cookie="locksmith-params="+encodeURIComponent(JSON.stringify(t))+"; path=/"}return t},s.cache.cart=s.state.cart,s.cache.cartLastSaved=null,s.params=s.cache(),s.util.reload=function(){s.reloading=!0;try{window.location.href=window.location.href.replace(/#.*/,"")}catch(d){s.util.console.error("Preferred reload method failed",d),window.location.reload()}},s.cache.saveCart=function(e){if(!s.cache.cart||s.cache.cart===s.cache.cartLastSaved)return e?e():null;var t=s.cache.cartLastSaved;s.cache.cartLastSaved=s.cache.cart,fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({attributes:{locksmith:s.cache.cart}})}).then(function(e){if(!e.ok)throw new Error("Cart update failed: "+e.status);return e.json()}).then(function(){e&&e()})["catch"](function(e){if(s.cache.cartLastSaved=t,!s.reloading)throw e})},s.util.spinnerHTML='<style>body{background:#FFF}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}#loading{display:flex;width:100%;height:50vh;
11color:#777;align-items:center;justify-content:center}#loading .spinner{display:block;animation:spin 600ms linear infinite;position:relative;width:50px;height:50px}#loading .spinner-ring{stroke:currentColor;stroke-dasharray:100%;stroke-width:2px;stroke-linecap:round;fill:none}</style><div id="loading"><div class="spinner"><svg width="100%" height="100%"><svg preserveAspectRatio="xMinYMin"><circle class="spinner-ring" cx="50%" cy="50%" r="45%"></circle></svg></svg></div></div>',s.util.clobberBody=function(e){document.body.innerHTML=e},s.util.clobberDocument=function(e){e.responseText&&(e=e.responseText),document.documentElement&&document.removeChild(document.documentElement);var t=document.open("text/html","replace");t.writeln(e),t.close(),setTimeout(function(){var e=t.querySelector("[autofocus]");e&&e.focus()},100)},s.util.serializeForm=function(e){if(e&&"FORM"===e.nodeName){var t,n,o={};for(t=e.elements.length-1;0<=t;t-=1)if(""!==e.elements[t].name)switch(e.elements[t].nodeName){case"INPUT":switch(e.elements[t].type){default:case"text":case"hidden":case"password":case"button":case"reset":case"submit":o[e.elements[t].name]=e.elements[t].value;break;case"checkbox":case"radio":e.elements[t].checked&&(o[e.elements[t].name]=e.elements[t].value);break;case"file":}break;case"TEXTAREA":o[e.elements[t].name]=e.elements[t].value;break;case"SELECT":switch(e.elements[t].type){case"select-one":o[e.elements[t].name]=e.elements[t].value;break;case"select-multiple":for(n=e.elements[t].options.length-1;0<=n;n-=1)e.elements[t].options[n].selected&&(o[e.elements[t].name]=e.elements[t].options[n].value)}break;case"BUTTON":switch(e.elements[t].type){case"reset":case"submit":case"button":o[e.elements[t].name]=e.elements[t].value}}return o}},s.util.on=function(e,a,s,t){t=t||document;var c="locksmith-"+e+a,n=function(e){var t=e.target,n=e.target.parentElement,o=t&&t.className&&(t.className.baseVal||t.className)||"",i=n&&n.className&&(n.className.baseVal||n.className)||"";("string"==typeof o&&-1!==o.split(/\s+/).indexOf(a)||"string"==typeof i&&-1!==i.split(/\s+/).indexOf(a))&&!e[c]&&(e[c]=!0,s(e))};t.attachEvent?t.attachEvent(e,n):t.addEventListener(e,n,!1)},s.util.enableActions=function(e){s.util.on("click","locksmith-action",function(e){e.preventDefault();var t=e.target;t.dataset.confirmWith&&!confirm(t.dataset.confirmWith)||(t.disabled=!0,t.innerText=t.dataset.disableWith,s.post("/action",t.dataset.locksmithParams,{spinner:!1,type:"text",success:function(e){(e=JSON.parse(e.responseText)).message&&alert(e.message),s.util.reload()}}))},e)},s.util.inject=function(e,t){var n=["data","locksmith","append"];if(-1!==t.indexOf(n.join("-"))){var o=document.createElement("div");o.innerHTML=t,e.appendChild(o)}else e.innerHTML=t;var i,a,s=e.querySelectorAll("script");for(a=0;a<s.length;++a){i=s[a];var c=document.createElement("script");if(i.type&&(c.type=i.type),i.src)c.src=i.src;else{var l=document.createTextNode(i.innerHTML);c.appendChild(l)}e.appendChild(c)}var r=e.querySelector("[autofocus]");r&&r.focus()},s.post=function(e,t,n){!1!==(n=n||{}).spinner&&s.util.clobberBody(s.util.spinnerHTML);var o={};n.container===document?(o.layout=1,n.success=function(e){s.util.clobberDocument(e)}):n.container&&(o.layout=0,n.success=function(e){var t="string"==typeof n.container?document.getElementById(n.container):n.container;t&&(s.util.inject(t,e),t.id===t.firstChild.id&&t.parentElement.replaceChild(t.firstChild,t))}),n.form_type&&(t.form_type=n.form_type),n.include_layout_classes!==undefined&&(t.include_layout_classes=n.include_layout_classes),n.lock_id!==undefined&&(t.lock_id=n.lock_id),s.loading=!0;var i=s.util.makeUrl(e,o),a="json"===n.type||"text"===n.type;fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:a?"application/json":"text/html"},body:JSON.stringify(t)}).then(function(e){if(!e.ok)throw new Error("Request failed: "+e.status);return e.text()}).then(function(e){var t=n.success||s.util.clobberDocument;t(a?{responseText:e}:e)})["catch"](function(e){if(!s.reloading)if("dashboard.weglot.com"!==window.location.host){if(!n.silent)throw alert("Something went wrong! Please refresh and try again."),e;console.error(e)}else console.error(e)})["finally"](function(){s.loading=!1})},s.postResource=function(e,t){e.path=s.path,e.search=window.location.search,e.state=s.state,e.passcode&&(e.passcode=e.passcode.trim()),e.email&&(e.email=e.email.trim()),e.state.cart=s.cache.cart,e.locksmith_json=s.jsonTag,e.locksmith_json_signature=s.jsonTagSignature,s.post("/resource",e,t)},s.ping=function(e){if(!s.isEmbedded){e=e||{};s.post("/ping",{path:s.path,search:window.location.search,state:s.state},{spinner:!!e.spinner,silent:"undefined"==typeof e.silent||e.silent,type:"text",success:function(e){e&&e.responseText?(e=JSON.parse(e.responseText)).messages&&0<e.messages.length&&s.showMessages(e.messages):console.error("[Locksmith] Invalid result in ping callback:",e)}})}},s.timeoutMonitor=function(){var e=s.cache.cart;s.ping({callback:function(){e!==s.cache.cart||setTimeout(function(){s.timeoutMonitor()},6e4)}})},s.showMessages=function(e){var t=document.createElement("div");t.style.position="fixed",t.style.left=0,t.style.right=0,t.style.bottom="-50px",t.style.opacity=0,t.style.background="#191919",t.style.color="#ddd",t.style.transition="bottom 0.2s, opacity 0.2s",t.style.zIndex=999999,t.innerHTML=["<style>"," .locksmith-ab .locksmith-b { display: none; }"," .locksmith-ab.toggled .locksmith-b { display: flex; }"," .locksmith-ab.toggled .locksmith-a { display: none; }"," .locksmith-flex { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 10px 20px; }"," .locksmith-message + .locksmith-message { border-top: 1px #555 solid; }"," .locksmith-message a { color: inherit; font-weight: bold; }"," .locksmith-message a:hover { color: inherit; opacity: 0.8; }"," a.locksmith-ab-toggle { font-weight: inherit; text-decoration: underline; }"," .locksmith-text { flex-grow: 1; }"," .locksmith-cta { flex-grow: 0; text-align: right; }"," .locksmith-cta button { transform: scale(0.8); transform-origin: left; }"," .locksmith-cta > * { display: block; }"," .locksmith-cta > * + * { margin-top: 10px; }"," .locksmith-message a.locksmith-close { flex-grow: 0; text-decoration: none; margin-left: 15px; font-size: 30px; font-family: monospace; display: block; padding: 2px 10px; }"," @media screen and (max-width: 600px) {"," .locksmith-wide-only { display: none !important; }"," .locksmith-flex { padding: 0 15px; }"," .locksmith-flex > * { margin-top: 5px; margin-bottom: 5px; }"," .locksmith-cta { text-align: left; }"," }"," @media screen and (min-width: 601px) {"," .locksmith-narrow-only { display: none !important; }"," }","</style>"].join("")+e.map(function(e){return'<div class="locksmith-message">'+e+"</div>"}).join(""),document.body.appendChild(t),document.body.style.position="relative",document.body.parentElement.style.paddingBottom=t.offsetHeight+"px",setTimeout(function(){t.style.bottom=0,t.style.opacity=1},50),s.util.on("click","locksmith-ab-toggle",function(e){e.preventDefault();for(var t=e.target.parentElement;-1===t.className.split(" ").indexOf("locksmith-ab");)t=t.parentElement;-1!==t.className.split(" ").indexOf("toggled")?t.className=t.className.replace("toggled",""):t.className=t.className+" toggled"}),s.util.enableActions(t)}}()}();</script>
11 12
12<script data-locksmith>Locksmith.cache.cart=null</script>
12 13 14
14<script data-locksmith>Locksmith.jsonTag="{\"version\":\"v346\",\"locked\":false,\"initialized\":true,\"scope\":\"search\",\"access_granted\":true,\"access_denied\":false,\"requires_customer\":false,\"manual_lock\":false,\"remote_lock\":false,\"has_timeout\":false,\"remote_rendered\":null,\"hide_resource\":false,\"hide_links_to_resource\":false,\"hide_price\":false,\"hide_add_to_cart\":false,\"transparent\":true,\"locks\":{\"all\":[],\"opened\":[]},\"keys\":[],\"keys_signature\":\"d288adb3ffcceb10d68d7364f54f3d41728137340c3904d53ef5860dcd103593\",\"state\":{\"template\":\"search\",\"theme\":162145501403,\"product\":null,\"collection\":null,\"page\":null,\"blog\":null,\"article\":null,\"app\":null},\"now\":1791305651,\"path\":\"\\\/search\",\"locale_root_url\":\"\\\/\",\"canonical_url\":\"https:\\\/\\\/www.santubeauty.com\\\/search\",\"customer_id\":null,\"customer_id_signature\":\"d288adb3ffcceb10d68d7364f54f3d41728137340c3904d53ef5860dcd103593\",\"cart\":null}";Locksmith.jsonTagSignature="b8d93436307f8915f1eb8ccccba67d634d947775f18a05e3f4225b05b3f78125"</script>
14 15 <meta charset="utf-8"> 16 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 17 <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"> 18 <meta name="theme-color" content="#dd8d6a"><link rel="canonical" href="https://www.santubeauty.com/search"><!-- ======================= Pipeline Theme V7.1.3 ========================= --> 19 20 <!-- Preloading ================================================================== --> 21 22 <link rel="preconnect" href="https://cdn.shopify.com" crossorigin> 23 <link rel="dns-prefetch" href="https://cdn.shopify.com"> 24 <link rel="preconnect" href="https://fonts.shopify.com" crossorigin> 25 <link rel="dns-prefetch" href="https://fonts.shopifycdn.com"> 26 <link rel="preconnect" href="https://monorail-edge.shopifysvc.com" crossorigin> 27 28 <link rel="preload" href="//www.santubeauty.com/cdn/fonts/jost/jost_n4.d47a1b6347ce4a4c9f437608011273009d91f2b7.woff2" as="font" type="font/woff2" crossorigin> 29 <link rel="preload" href="//www.santubeauty.com/cdn/fonts/jost/jost_n4.d47a1b6347ce4a4c9f437608011273009d91f2b7.woff2" as="font" type="font/woff2" crossorigin> 30 <link rel="preload" href="//www.santubeauty.com/cdn/fonts/jost/jost_n4.d47a1b6347ce4a4c9f437608011273009d91f2b7.woff2" as="font" type="font/woff2" crossorigin> 31 32 <link href="//www.santubeauty.com/cdn/shop/t/25/assets/vendor.js?v=144118437607305429831780517567" as="script" rel="preload"> 33 <link href="//www.santubeauty.com/cdn/shop/t/25/assets/theme.js?v=154126698806131224561780517566" as="script" rel="preload"> 34 <link href="//www.santubeauty.com/cdn/shop/t/25/assets/theme.css?v=177657655296872941241782258427" as="script" rel="preload"> 35 36 <!-- Title and description ================================================ --><link rel="shortcut icon" href="//www.santubeauty.com/cdn/shop/files/Isotype_32x32.svg?v=1723503558" type="image/png"> 37 <title> 38 39 40 Search 41– Santu Beauty 42 43 </title><meta name="description" content="A New Story of Self-Love"> 44<!-- /snippets/social-meta-tags.liquid --><meta property="og:site_name" content="Santu Beauty "> 45<meta property="og:url" content="https://www.santubeauty.com/search"><meta property="og:title" content="Search"> 46<meta property="og:type" content="website"> 47<meta property="og:description" content="A New Story of Self-Love"> 48 49 50 51<meta name="twitter:site" content="@"> 52<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Search"> 53<meta name="twitter:description" content="A New Story of Self-Love"> 54<!-- CSS ================================================================== --> 55 56 <link href="//www.santubeauty.com/cdn/shop/t/25/assets/font-settings.css?v=12553695491140244711780517597" rel="stylesheet" type="text/css" media="all" /> 57 58 <!-- /snippets/css-variables.liquid --> 59 60 61<style data-shopify> 62 63:root { 64/* ================ Layout Variables ================ */ 65 66 67 68 69 70 71--LAYOUT-WIDTH: 1450px; 72--LAYOUT-GUTTER: 24px; 73--LAYOUT-GUTTER-OFFSET: -24px; 74--NAV-GUTTER: 15px; 75--LAYOUT-OUTER: 50px; 76 77/* ================ Product video ================ */ 78 79--COLOR-VIDEO-BG: #d4d1c0; 80 81 82/* ================ Color Variables ================ */ 83 84/* === Backgrounds ===*/ 85--COLOR-BG: #dedccf; 86--COLOR-BG-ACCENT: #dedccf; 87 88/* === Text colors ===*/ 89--COLOR-TEXT-DARK: #150906; 90--COLOR-TEXT: #4b261c; 91--COLOR-TEXT-LIGHT: #775d52; 92 93/* === Bright color ===*/ 94--COLOR-PRIMARY: #8e6b66; 95--COLOR-PRIMARY-HOVER: #6e403a; 96--COLOR-PRIMARY-FADE: rgba(142, 107, 102, 0.05); 97--COLOR-PRIMARY-FADE-HOVER: rgba(142, 107, 102, 0.1);--COLOR-PRIMARY-OPPOSITE: #ffffff; 98 99/* === Secondary/link Color ===*/ 100--COLOR-SECONDARY: #dd8d6a; 101--COLOR-SECONDARY-HOVER: #df581b; 102--COLOR-SECONDARY-FADE: rgba(221, 141, 106, 0.05); 103--COLOR-SECONDARY-FADE-HOVER: rgba(221, 141, 106, 0.1);--COLOR-SECONDARY-OPPOSITE: #000000; 104 105/* === Shades of grey ===*/ 106--COLOR-A5: rgba(75, 38, 28, 0.05); 107--COLOR-A10: rgba(75, 38, 28, 0.1); 108--COLOR-A20: rgba(75, 38, 28, 0.2); 109--COLOR-A35: rgba(75, 38, 28, 0.35); 110--COLOR-A50: rgba(75, 38, 28, 0.5); 111--COLOR-A80: rgba(75, 38, 28, 0.8); 112--COLOR-A90: rgba(75, 38, 28, 0.9); 113--COLOR-A95: rgba(75, 38, 28, 0.95); 114 115 116/* ================ Inverted Color Variables ================ */ 117 118--INVERSE-BG: #8e6b66; 119--INVERSE-BG-ACCENT: #1d1d1d; 120 121/* === Text colors ===*/ 122--INVERSE-TEXT-DARK: #ffffff; 123--INVERSE-TEXT: #ffffff; 124--INVERSE-TEXT-LIGHT: #ddd3d1; 125 126/* === Bright color ===*/ 127--INVERSE-PRIMARY: #d2815f; 128--INVERSE-PRIMARY-HOVER: #c35121; 129--INVERSE-PRIMARY-FADE: rgba(210, 129, 95, 0.05); 130--INVERSE-PRIMARY-FADE-HOVER: rgba(210, 129, 95, 0.1);--INVERSE-PRIMARY-OPPOSITE: #000000; 131 132 133/* === Second Color ===*/ 134--INVERSE-SECONDARY: #748cab; 135--INVERSE-SECONDARY-HOVER: #3f6493; 136--INVERSE-SECONDARY-FADE: rgba(116, 140, 171, 0.05); 137--INVERSE-SECONDARY-FADE-HOVER: rgba(116, 140, 171, 0.1);--INVERSE-SECONDARY-OPPOSITE: #ffffff; 138 139 140/* === Shades of grey ===*/ 141--INVERSE-A5: rgba(255, 255, 255, 0.05); 142--INVERSE-A10: rgba(255, 255, 255, 0.1); 143--INVERSE-A20: rgba(255, 255, 255, 0.2); 144--INVERSE-A35: rgba(255, 255, 255, 0.3); 145--INVERSE-A80: rgba(255, 255, 255, 0.8); 146--INVERSE-A90: rgba(255, 255, 255, 0.9); 147--INVERSE-A95: rgba(255, 255, 255, 0.95); 148 149 150/* ================ Bright Color Variables ================ */ 151 152--BRIGHT-BG: #d2815f; 153--BRIGHT-BG-ACCENT: #94553a; 154 155/* === Text colors ===*/ 156--BRIGHT-TEXT-DARK: #ffffff; 157--BRIGHT-TEXT: #ffffff; 158--BRIGHT-TEXT-LIGHT: #f2d9cf; 159 160/* === Bright color ===*/ 161--BRIGHT-PRIMARY: #ff763d; 162--BRIGHT-PRIMARY-HOVER: #f04600; 163--BRIGHT-PRIMARY-FADE: rgba(255, 118, 61, 0.05); 164--BRIGHT-PRIMARY-FADE-HOVER: rgba(255, 118, 61, 0.1);--BRIGHT-PRIMARY-OPPOSITE: #000000; 165 166 167/* === Second Color ===*/ 168--BRIGHT-SECONDARY: #3d5aff; 169--BRIGHT-SECONDARY-HOVER: #0024f0; 170--BRIGHT-SECONDARY-FADE: rgba(61, 90, 255, 0.05); 171--BRIGHT-SECONDARY-FADE-HOVER: rgba(61, 90, 255, 0.1);--BRIGHT-SECONDARY-OPPOSITE: #ffffff; 172 173 174/* === Shades of grey ===*/ 175--BRIGHT-A5: rgba(255, 255, 255, 0.05); 176--BRIGHT-A10: rgba(255, 255, 255, 0.1); 177--BRIGHT-A20: rgba(255, 255, 255, 0.2); 178--BRIGHT-A35: rgba(255, 255, 255, 0.3); 179--BRIGHT-A80: rgba(255, 255, 255, 0.8); 180--BRIGHT-A90: rgba(255, 255, 255, 0.9); 181--BRIGHT-A95: rgba(255, 255, 255, 0.95); 182 183 184/* === Account Bar ===*/ 185--COLOR-ANNOUNCEMENT-BG: #dedccf; 186--COLOR-ANNOUNCEMENT-TEXT: #4b261c; 187 188/* === Nav and dropdown link background ===*/ 189--COLOR-NAV: #dedccf; 190--COLOR-NAV-TEXT: #4b261c; 191--COLOR-NAV-TEXT-DARK: #150906; 192--COLOR-NAV-TEXT-LIGHT: #775d52; 193--COLOR-NAV-BORDER: #f7f5f4;
194--COLOR-NAV-A10: rgba(75, 38, 28, 0.1); 195--COLOR-NAV-A50: rgba(75, 38, 28, 0.5); 196--COLOR-HIGHLIGHT-LINK: #dd8d6a; 197 198/* === Site Footer ===*/ 199--COLOR-FOOTER-BG: #8e6b66; 200--COLOR-FOOTER-TEXT: #ffffff; 201--COLOR-FOOTER-A5: rgba(255, 255, 255, 0.05); 202--COLOR-FOOTER-A15: rgba(255, 255, 255, 0.15); 203--COLOR-FOOTER-A90: rgba(255, 255, 255, 0.9); 204 205/* === Sub-Footer ===*/ 206--COLOR-SUB-FOOTER-BG: #1d1d1d; 207--COLOR-SUB-FOOTER-TEXT: #ffffff; 208--COLOR-SUB-FOOTER-A5: rgba(255, 255, 255, 0.05); 209--COLOR-SUB-FOOTER-A15: rgba(255, 255, 255, 0.15); 210--COLOR-SUB-FOOTER-A90: rgba(255, 255, 255, 0.9); 211 212/* === Products ===*/ 213--PRODUCT-GRID-ASPECT-RATIO: 100%; 214 215/* === Product badges ===*/ 216--COLOR-BADGE: #ffffff; 217--COLOR-BADGE-TEXT: #424242; 218--COLOR-BADGE-TEXT-DARK: #1f1919; 219--COLOR-BADGE-TEXT-HOVER: #686868; 220--COLOR-BADGE-HAIRLINE: #f6f6f6; 221 222/* === Product item slider ===*/--COLOR-PRODUCT-SLIDER: #ffffff;--COLOR-PRODUCT-SLIDER-OPPOSITE: rgba(13, 13, 13, 0.06);/* === disabled form colors ===*/ 223--COLOR-DISABLED-BG: #cfcabd; 224--COLOR-DISABLED-TEXT: #ab9c90; 225 226--INVERSE-DISABLED-BG: #997a75; 227--INVERSE-DISABLED-TEXT: #b69f9c; 228 229 230/* === Tailwind RGBA Palette ===*/ 231--RGB-CANVAS: 222 220 207; 232--RGB-CONTENT: 75 38 28; 233--RGB-PRIMARY: 142 107 102; 234--RGB-SECONDARY: 221 141 106; 235 236--RGB-DARK-CANVAS: 142 107 102; 237--RGB-DARK-CONTENT: 255 255 255; 238--RGB-DARK-PRIMARY: 210 129 95; 239--RGB-DARK-SECONDARY: 116 140 171; 240 241--RGB-BRIGHT-CANVAS: 210 129 95; 242--RGB-BRIGHT-CONTENT: 255 255 255; 243--RGB-BRIGHT-PRIMARY: 255 118 61; 244--RGB-BRIGHT-SECONDARY: 61 90 255; 245 246--RGB-PRIMARY-CONTRAST: 255 255 255; 247--RGB-SECONDARY-CONTRAST: 0 0 0; 248 249--RGB-DARK-PRIMARY-CONTRAST: 0 0 0; 250--RGB-DARK-SECONDARY-CONTRAST: 255 255 255; 251 252--RGB-BRIGHT-PRIMARY-CONTRAST: 0 0 0; 253--RGB-BRIGHT-SECONDARY-CONTRAST: 255 255 255; 254 255 256/* === Button Radius === */ 257--BUTTON-RADIUS: 10px; 258 259 260/* ================ Typography ================ */ 261 262--FONT-STACK-BODY: Jost, sans-serif; 263--FONT-STYLE-BODY: normal; 264--FONT-WEIGHT-BODY: 400; 265--FONT-WEIGHT-BODY-BOLD: 500; 266--FONT-ADJUST-BODY: 0.9; 267 268 --FONT-BODY-TRANSFORM: none; 269 --FONT-BODY-LETTER-SPACING: normal; 270 271 272--FONT-STACK-HEADING: Jost, sans-serif; 273--FONT-STYLE-HEADING: normal; 274--FONT-WEIGHT-HEADING: 400; 275--FONT-WEIGHT-HEADING-BOLD: 500; 276--FONT-ADJUST-HEADING: 1.0; 277 278 --FONT-HEADING-TRANSFORM: none; 279 --FONT-HEADING-LETTER-SPACING: normal; 280 281 282--FONT-STACK-ACCENT: Jost, sans-serif; 283--FONT-STYLE-ACCENT: normal; 284--FONT-WEIGHT-ACCENT: 400; 285--FONT-WEIGHT-ACCENT-BOLD: 500; 286--FONT-ADJUST-ACCENT: 1.0; 287 288 --FONT-ACCENT-TRANSFORM: uppercase; 289 --FONT-ACCENT-LETTER-SPACING: 0.09em; 290 291--TYPE-STACK-NAV: Jost, sans-serif; 292--TYPE-STYLE-NAV: normal; 293--TYPE-ADJUST-NAV: 1.0; 294--TYPE-WEIGHT-NAV: 400; 295 296 --FONT-NAV-TRANSFORM: none; 297 --FONT-NAV-LETTER-SPACING: normal; 298 299 300--TYPE-STACK-BUTTON: Jost, sans-serif; 301--TYPE-STYLE-BUTTON: normal; 302--TYPE-ADJUST-BUTTON: 1.0; 303--TYPE-WEIGHT-BUTTON: 500; 304 305 --FONT-BUTTON-TRANSFORM: none; 306 --FONT-BUTTON-LETTER-SPACING: normal; 307 308 309--TYPE-STACK-KICKER: Jost, sans-serif; 310--TYPE-STYLE-KICKER: normal; 311--TYPE-ADJUST-KICKER: 1.0; 312--TYPE-WEIGHT-KICKER: 500; 313 314 --FONT-KICKER-TRANSFORM: none; 315 --FONT-KICKER-LETTER-SPACING: normal; 316 317 318 319--ICO-SELECT: url('//www.santubeauty.com/cdn/shop/t/25/assets/ico-select.svg?v=47991760542940218071780517597'); 320 321/* ================ Photo correction ================ */ 322--PHOTO-CORRECTION: 100%; 323 324 325 326} 327 328/* ================ Typography ================ */ 329/* ================ type-scale.com ============ */ 330 331/* 1.16 base 11.5 */ 332:root { 333 --font-1: 10px; 334 --font-2: 11px; 335 --font-3: 13px; 336 --font-4: 15px; 337 --font-5: 17px; 338 --font-6: 20px; 339 --font-7: 24px; 340 --font-8: 27px; 341 --font-9: 32px; 342 --font-10:37px; 343 --font-11:43px; 344 --font-12:49px; 345 --font-13:57px; 346 --font-14:67px; 347 --font-15:77px; 348} 349 350/* 1.175 base 11.5 */ 351@media only screen and (min-width: 480px) and (max-width: 1099px) { 352 :root { 353 --font-1: 10px; 354 --font-2: 11.5px; 355 --font-3: 13.5px; 356 --font-4: 16px; 357 --font-5: 19px; 358 --font-6: 22px; 359 --font-7: 26px; 360 --font-8: 30px; 361 --font-9: 36px; 362 --font-10:42px; 363 --font-11:49px; 364 --font-12:58px; 365 --font-13:68px; 366 --font-14:80px; 367 --font-15:94px; 368 } 369} 370 371 /* 1.22 base 11.5 */ 372 @media only screen and (min-width: 1100px) { 373 :root { 374 --font-1: 10px; 375 --font-2: 11.5px; 376 --font-3: 14px; 377 --font-4: 17px; 378 --font-5: 21px; 379 --font-6: 25px; 380 --font-7: 31px; 381 --font-8: 38px; 382 --font-9: 46px; 383 --font-10:56px; 384 --font-11:68px; 385 --font-12:83px; 386 --font-13:102px; 387 --font-14:124px; 388 --font-15:151px; 389 } 390} 391 392 393</style> 394 395 396 <link href="//www.santubeauty.com/cdn/shop/t/25/assets/theme.css?v=177657655296872941241782258427" rel="stylesheet" type="text/css" media="all" /> 397 398
398<script> 399 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 400 401 402 document.documentElement.classList.add('aos-initialized');let root = '/'; 403 if (root[root.length - 1] !== '/') { 404 root = `${root}/`; 405 } 406 var theme = { 407 routes: { 408 root_url: root, 409 cart: '/cart', 410 cart_add_url: '/cart/add', 411 product_recommendations_url: '/recommendations/products', 412 account_addresses_url: '/account/addresses', 413 predictive_search_url: '/search/suggest' 414 }, 415 state: { 416 cartOpen: null, 417 }, 418 sizes: { 419 small: 480, 420 medium: 768, 421 large: 1100, 422 widescreen: 1400 423 }, 424 assets: { 425 photoswipe: '//www.santubeauty.com/cdn/shop/t/25/assets/photoswipe.js?v=162613001030112971491780517562', 426 smoothscroll: '//www.santubeauty.com/cdn/shop/t/25/assets/smoothscroll.js?v=37906625415260927261780517563', 427 swatches: '//www.santubeauty.com/cdn/shop/t/25/assets/swatches.json?v=154940297821828866241780517564', 428 noImage: '//www.santubeauty.com/cdn/shopifycloud/storefront/assets/no-image-2048-a2addb12.gif', 429 base: '//www.santubeauty.com/cdn/shop/t/25/assets/' 430 }, 431 strings: { 432 swatchesKey: "Color, Colour", 433 addToCart: "Add to Cart", 434 estimateShipping: "Estimate shipping", 435 noShippingAvailable: "We do not ship to this destination.", 436 free: "Free", 437 from: "From", 438 preOrder: "Pre-order", 439 soldOut: "Sold Out", 440 sale: "Sale", 441 subscription: "Subscription", 442 unavailable: "Unavailable", 443 unitPrice: "Unit price", 444 unitPriceSeparator: "per", 445 stockout: "All available stock is in cart", 446 products: "Products", 447 pages: "Pages", 448 collections: "Collections", 449 resultsFor: "Results for", 450 noResultsFor: "No results for", 451 articles: "Articles", 452 successMessage: "Link copied to clipboard", 453 }, 454 settings: { 455 badge_sale_type: "percentage", 456 animate_hover: true, 457 animate_scroll: true, 458 show_locale_desktop: null, 459 show_locale_mobile: null, 460 show_currency_desktop: null, 461 show_currency_mobile: null, 462 currency_select_type: "country", 463 currency_code_enable: false, 464 cycle_images_hover_delay: 1.5 465 }, 466 info: { 467 name: 'pipeline' 468 }, 469 version: '7.1.3', 470 moneyFormat: "${{amount}}", 471 shopCurrency: "USD", 472 currencyCode: "USD" 473 } 474 let windowInnerHeight = window.innerHeight; 475 document.documentElement.style.setProperty('--full-screen', `${windowInnerHeight}px`); 476 document.documentElement.style.setProperty('--three-quarters', `${windowInnerHeight * 0.75}px`); 477 document.documentElement.style.setProperty('--two-thirds', `${windowInnerHeight * 0.66}px`); 478 document.documentElement.style.setProperty('--one-half', `${windowInnerHeight * 0.5}px`); 479 document.documentElement.style.setProperty('--one-third', `${windowInnerHeight * 0.33}px`); 480 document.documentElement.style.setProperty('--one-fifth', `${windowInnerHeight * 0.2}px`); 481 482 window.isRTL = document.documentElement.getAttribute('dir') === 'rtl'; 483 </script>
483<!-- Theme Javascript ============================================================== --> 484
484<script src="//www.santubeauty.com/cdn/shop/t/25/assets/vendor.js?v=144118437607305429831780517567" defer="defer"></script>
484 485
485<script src="//www.santubeauty.com/cdn/shop/t/25/assets/theme.js?v=154126698806131224561780517566" defer="defer"></script>
485 486 487
487<script> 488 (function () { 489 function onPageShowEvents() { 490 if ('requestIdleCallback' in window) { 491 requestIdleCallback(initCartEvent, { timeout: 500 }) 492 } else { 493 initCartEvent() 494 } 495 function initCartEvent(){ 496 window.fetch(window.theme.routes.cart + '.js') 497 .then((response) => { 498 if(!response.ok){ 499 throw {status: response.statusText}; 500 } 501 return response.json(); 502 }) 503 .then((response) => { 504 document.dispatchEvent(new CustomEvent('theme:cart:change', { 505 detail: { 506 cart: response, 507 }, 508 bubbles: true, 509 })); 510 return response; 511 }) 512 .catch((e) => { 513 console.error(e); 514 }); 515 } 516 }; 517 window.onpageshow = onPageShowEvents; 518 })(); 519 </script>
519 520 521
521<script type="text/javascript"> 522 if (window.MSInputMethodContext && document.documentMode) { 523 var scripts = document.getElementsByTagName('script')[0]; 524 var polyfill = document.createElement("script"); 525 polyfill.defer = true; 526 polyfill.src = "//www.santubeauty.com/cdn/shop/t/25/assets/ie11.js?v=144489047535103983231780517561"; 527 528 scripts.parentNode.insertBefore(polyfill, scripts); 529 } 530 </script>
530 531 532 <!-- Shopify app scripts =========================================================== --> 533
533<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
533<meta name="google-site-verification" content="ii2dXg7yE7nJhvehV23hswG42KOqSPUlXTBsfx40dwk"> 534<meta name="facebook-domain-verification" content="5q30ojvdd13m5e4ijw9gemwf8rbac6"> 535<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/68234969307/digital_wallets/dialog"> 536<meta id="in-context-paypal-metadata" data-shop-id="68234969307" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 537<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
537<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
vendor: 1 bytes, line 537
537
538<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":68234969307,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/68234969307","merchantName":"Santu Beauty ","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Santu Beauty ","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 538
538
539<script id="shopify-features" type="application/json">{"accessToken":"318a89be438de801110eac6646badda7","betas":["rich-media-storefront-analytics"],"domain":"www.santubeauty.com","predictiveSearch":true,"shopId":68234969307,"locale":"en"}</script>
vendor: 1 bytes, line 539
539
540<script>var Shopify = Shopify || {}; 541Shopify.shop = "1ad0e7.myshopify.com"; 542Shopify.locale = "en"; 543Shopify.currency = {"active":"USD","rate":"1.0"}; 544Shopify.country = "US"; 545Shopify.theme = {"name":"Updated Images + Theme Updates 6\/30","id":162145501403,"schema_name":"Pipeline","schema_version":"7.1.3","theme_store_id":739,"role":"main"}; 546Shopify.theme.handle = "null"; 547Shopify.theme.style = {"id":null,"handle":null}; 548Shopify.cdnHost = "www.santubeauty.com/cdn"; 549Shopify.routes = Shopify.routes || {}; 550Shopify.routes.root = "/"; 551Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 552Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 553Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 554Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 554
554
555<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 555
555
556<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 556
556
557<script> 558 window.Shopify = window.Shopify || {}; 559 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 560 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 561 window.Shopify.SignInWithShop.eligible = true; 562</script>
vendor: 1 bytes, line 562
562
563<script id="shop-js-analytics" type="application/json">{"pageType":"search"}</script>
vendor: 1 bytes, line 563
563
564<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 564
564
565<script type="module"> 566 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 567 568 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 569 570</script>
vendor: 1 bytes, line 570
570
571<script> 572 window.Shopify = window.Shopify || {}; 573 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 574 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"]}; 575</script>
vendor: 1 bytes, line 575
575
576<script>(function() { 577 var isLoaded = false; 578 function asyncLoad() { 579 if (isLoaded) return; 580 isLoaded = true; 581 var urls = ["https:\/\/app.octaneai.com\/i2ow08h17vhopp6x\/shopify.js?x=IzrzxL9fG34w7s0M\u0026shop=1ad0e7.myshopify.com","https:\/\/cdn-bundler.nice-team.net\/app\/js\/bundler.js?shop=1ad0e7.myshopify.com","\/\/cdn.shopify.com\/proxy\/cf1406b666cd59b147bad8a00e78072a091c2e5454dc32d44a2d1665d869fc7c\/d33a6lvgbd0fej.cloudfront.net\/script_tag\/secomapp.scripttag.js?shop=1ad0e7.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA","https:\/\/cdn.nfcube.com\/instafeed-ce2a6160d51c0696a104f488b633a4cd.js?shop=1ad0e7.myshopify.com","https:\/\/id-shop.govx.com\/app\/1ad0e7.myshopify.com\/govx.js?shop=1ad0e7.myshopify.com"]; 582 for (var i = 0; i < urls.length; i++) { 583 var s = document.createElement('script'); 584 s.type = 'text/javascript'; 585 s.async = true; 586 s.src = urls[i]; 587 var x = document.getElementsByTagName('script')[0]; 588 x.parentNode.insertBefore(s, x); 589 } 590 }; 591 if(window.attachEvent) { 592 window.attachEvent('onload', asyncLoad); 593 } else { 594 window.addEventListener('load', asyncLoad, false); 595 } 596})();</script>
vendor: 1 bytes, line 596
596
597<script id="__st">var __st={"a":68234969307,"offset":-25200,"reqid":"632d93ad-c4d4-4280-925a-426fa34dc2b3-1791305651","pageurl":"www.santubeauty.com\/search","u":"83a287122137","p":"searchresults"};</script>
vendor: 1 bytes, line 597
597
598<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 598
598
599<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 599
599
600<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.santubeauty.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 600
600
601<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 = "//www.santubeauty.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>
601<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 601
601
602<script> 603 window.Shopify = window.Shopify || {}; 604 window.Shopify.MCP = window.Shopify.MCP || {}; 605 window.Shopify.MCP.enabled = true; 606 window.Shopify.MCP.shop = "1ad0e7.myshopify.com"; 607 window.Shopify.MCP.mcpEndpoint = "https:\/\/www.santubeauty.com\/api\/mcp"; 608 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"]}}]; 609</script>
vendor: 1 bytes, line 609
609
610<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("\/\/www.santubeauty.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 611</script>
vendor: 1 bytes, line 611
611
612<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://www.santubeauty.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 613</script>
vendor: 1 bytes, line 613
613
614<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 615 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); 616</script>
vendor: 1 bytes, line 616
616
617<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})}})); 618</script>
vendor: 1 bytes, line 618
618
619<script integrity="sha256-/LA1C2Bx6899fYCos0FS9qLj2opaGFm7AXrTUvBEb4s=" data-source-attribution="shopify.remote_product_tracking" data-shopify-remote-tracking="{"session_id":"01M49264X4HKTCASGQWPHQN7Y9","publisher_shop_id":68234969307,"theme_id":162145501403,"theme_published":true,"theme_store_id":739,"placement":"search","event_data":{"search_query":null},"recommendations_tracking_enabled":true}" defer="defer" src="//www.santubeauty.com/cdn/shopifycloud/storefront/assets/storefront/remote_product_tracking-91d95044.js" crossorigin="anonymous"></script>
619 620<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.santubeauty.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 621<style id="shopify-accelerated-checkout-cart"> 622 #shopify-buyer-consent { 623 margin-top: 1em; 624 display: inline-block; 625 width: 100%; 626} 627 628#shopify-buyer-consent.hidden { 629 display: none; 630} 631 632#shopify-subscription-policy-button { 633 background: none; 634 border: none; 635 padding: 0; 636 text-decoration: underline; 637 font-size: inherit; 638 cursor: pointer; 639} 640 641#shopify-subscription-policy-button::before { 642 box-shadow: none; 643} 644 645 </style> 646
647<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
647 648 649 <style> 650 @font-face { 651 font-family: "F Grotesk"; 652 src: url(https://cdn.shopify.com/s/files/1/0682/3496/9307/files/FGrotesk-Regular.woff2?v=1723493704) format("woff2"), 653 url(https://cdn.shopify.com/s/files/1/0682/3496/9307/files/FGrotesk-Regular.woff?v=1723493703) format("woff"); 654 } 655 656 @font-face { 657 font-family: "F Grotesk Demi"; 658 src: url(https://cdn.shopify.com/s/files/1/0682/3496/9307/files/FGroteskDemi-Regular.woff2?v=1723493703) format("woff2"), 659 url(https://cdn.shopify.com/s/files/1/0682/3496/9307/files/FGroteskDemi-Regular.woff?v=1723493703) format("woff"); 660 } 661 </style> 662 663 664 665
666<script> 667 document.addEventListener("DOMContentLoaded", function(event) { 668 const style = document.getElementById('wsg-custom-style'); 669 if (typeof window.isWsgCustomer != "undefined" && isWsgCustomer) { 670 style.innerHTML = ` 671 ${style.innerHTML} 672 /* A friend of hideWsg - this will _show_ only for wsg customers. Add class to an element to use */ 673 .showWsg { 674 display: unset; 675 } 676 /* wholesale only CSS */ 677 .additional-checkout-buttons, .shopify-payment-button { 678 display: none !important; 679 } 680 .wsg-proxy-container select { 681 background-color: 682 ${ 683 document.querySelector('input').style.backgroundColor 684 ? document.querySelector('input').style.backgroundColor 685 : 'white' 686 } !important; 687 } 688 `; 689 } else { 690 style.innerHTML = ` 691 ${style.innerHTML} 692 /* Add CSS rules here for NOT wsg customers - great to hide elements from retail when we can't access the code driving the element */ 693 694 `; 695 } 696 697 if (typeof window.embedButtonBg !== undefined && typeof window.embedButtonText !== undefined && window.embedButtonBg !== window.embedButtonText) { 698 style.innerHTML = ` 699 ${style.innerHTML} 700 .wsg-button-fix { 701 background: ${embedButtonBg} !important; 702 border-color: ${embedButtonBg} !important; 703 color: ${embedButtonText} !important; 704 } 705 `; 706 } 707 708 // ========================= 709 // CUSTOM JS 710 // ========================== 711 if (document.querySelector(".wsg-proxy-container")) { 712 initNodeObserver(wsgCustomJs); 713 } 714 }) 715 716 function wsgCustomJs() { 717 718 // update button classes 719 const button = document.querySelectorAll(".wsg-button-fix"); 720 let buttonClass = "xxButtonClassesHerexx"; 721 buttonClass = buttonClass.split(" "); 722 for (let i = 0; i < button.length; i++) { 723 button[i].classList.add(... buttonClass); 724 } 725 726 // wsgCustomJs window placeholder 727 // update secondary btn color on proxy cart 728 if (document.getElementById("wsg-checkout-one")) { 729 const checkoutButton = document.getElementById("wsg-checkout-one"); 730 let wsgBtnColor = window.getComputedStyle(checkoutButton).backgroundColor; 731 let wsgBtnBackground = "none"; 732 let wsgBtnBorder = "thin solid " + wsgBtnColor; 733 let wsgBtnPadding = window.getComputedStyle(checkoutButton).padding; 734 let spofBtn = document.querySelectorAll(".spof-btn"); 735 for (let i = 0; i < spofBtn.length; i++) { 736 spofBtn[i].style.background = wsgBtnBackground; 737 spofBtn[i].style.color = wsgBtnColor; 738 spofBtn[i].style.border = wsgBtnBorder; 739 spofBtn[i].style.padding = wsgBtnPadding; 740 } 741 } 742 743 // update Quick Order Form label 744 if (typeof window.embedSPOFLabel != "undefined" && embedSPOFLabel && window.embedSPOFLabel !== "Quick Order Form") { 745 document.querySelectorAll(".spof-btn").forEach(function(spofBtn) { 746 spofBtn.removeAttribute("data-translation-selector"); 747 spofBtn.innerHTML = embedSPOFLabel; 748 }); 749 } 750 } 751 752 function initNodeObserver(onChangeNodeCallback) { 753 754 // Select the node that will be observed for mutations 755 const targetNode = document.querySelector(".wsg-proxy-container"); 756 757 // Options for the observer (which mutations to observe) 758 const config = { 759 attributes: true, 760 childList: true, 761 subtree: true 762 }; 763 764 // Callback function to execute when mutations are observed 765 const callback = function(mutationsList, observer) { 766 for (const mutation of mutationsList) { 767 if (mutation.type === 'childList') { 768 onChangeNodeCallback(); 769 observer.disconnect(); 770 } 771 } 772 }; 773 774 // Create an observer instance linked to the callback function 775 const observer = new MutationObserver(callback); 776 777 // Start observing the target node for configured mutations 778 observer.observe(targetNode, config); 779 } 780</script>
780 781 782 783<style id="wsg-custom-style"> 784 /* A friend of hideWsg - this will _show_ only for wsg customers. Add class to an element to use */ 785 .showWsg { 786 display: none; 787 } 788 /* Signup/login */ 789 #wsg-signup select, 790 #wsg-signup input, 791 #wsg-signup textarea { 792 height: 46px; 793 border: thin solid #d1d1d1; 794 padding: 6px 10px; 795 } 796 #wsg-signup textarea { 797 min-height: 100px; 798 } 799 .wsg-login-input { 800 height: 46px; 801 border: thin solid #d1d1d1; 802 padding: 6px 10px; 803 } 804 #wsg-signup select { 805 } 806/* Quick Order Form */ 807 .wsg-table td { 808 border: none; 809 min-width: 150px; 810 } 811 .wsg-table tr { 812 border-bottom: thin solid #d1d1d1; 813 border-left: none; 814 } 815 .wsg-table input[type="number"] { 816 border: thin solid #d1d1d1; 817 padding: 5px 15px; 818 min-height: 42px; 819 } 820 #wsg-spof-link a { 821 text-decoration: inherit; 822 color: inherit; 823 } 824 .wsg-proxy-container { 825 margin-top: 0% !important; 826 } 827 @media screen and (max-width:768px){ 828 .wsg-proxy-container .wsg-table input[type="number"] { 829 max-width: 80%; 830 } 831 .wsg-center img { 832 width: 50px !important; 833 } 834 .wsg-variant-price-area { 835 min-width: 70px !important; 836 } 837 } 838 /* Submit button */ 839 #wsg-cart-update{ 840 padding: 8px 10px; 841 min-height: 45px; 842 max-width: 100% !important; 843 } 844 .wsg-table { 845 background: inherit !important; 846 } 847 .wsg-spof-container-main { 848 background: inherit !important; 849 } 850 /* General fixes */ 851 .wsg-hide-prices { 852 opacity: 0; 853 } 854 .wsg-ws-only .button { 855 margin: 0; 856 } 857</style> 858<!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 859 860 861 862 863 864 865 866 867 868 869 870 871
871<script async src="https://static.klaviyo.com/onsite/js/Rxa4MW/klaviyo.js?company_id=Rxa4MW"></script>
871 872
872<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>
872 873 874 875 876 877 878 879
879<script> 880 window.klaviyoReviewsProductDesignMode = false 881 </script>
881 882 883 884 885 886 887 888 889 890 891<!-- END app block --><!-- BEGIN app block: shopify://apps/wingify/blocks/vwo-smartcode/2ce905b2-3842-4d20-b6b0-8c51fc208426 --> 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 <!-- BEGIN app snippet: smartcode-vwo-2x --> 913 <!-- Start VWO SmartCode --> 914
914<script src="https://dev.visualwebsiteoptimizer.com/lib/1117044.js" referrerpolicy="no-referrer-when-downgrade" id="vwoCode"></script>
914 915 <!-- End VWO SmartCode --> 916 917<!-- END app snippet --> 918 919 920 921 922<!-- END app block --><!-- BEGIN app block: shopify://apps/yotpo-product-reviews/blocks/settings/eb7dfd7d-db44-4334-bc49-c893b51b36cf --> 923 924 925
925<script type="text/javascript" src="https://cdn-widgetsrepository.yotpo.com/v1/loader/FbwLaDLEXjrYguw97ALbvvaaNXTliTj3ONVg4tZS?languageCode=en" async></script>
925 926 927 928 929 930<!-- END app block -->
930<script src="https://cdn.shopify.com/extensions/019d43d1-bbad-7de5-bd49-ea6de5e8ca58/accessibly-app-30/assets/acc-main.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 930
930
931<script src="https://cdn.shopify.com/extensions/01a110dd-e163-7526-9aaf-7a12ca7c2687/forms-2612/assets/shopify-forms-loader.js" type="text/javascript" defer="defer"></script>
931 932<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
933<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: 68234969307,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "search"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 933
933
934<script> 935 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 936</script>
vendor: 1 bytes, line 936
936
937<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}
937).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: 68234969307,storefrontBaseUrl: "https://www.santubeauty.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.santubeauty.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"2379874523","configuration":"{\"shopID\": \"61139\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d22b5691c62682d22357c5bcbea63a2b","type":"APP","apiClientId":3780451,"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"}
937,{"id":"1798570203","configuration":"{\"shop\":\"1ad0e7.myshopify.com\",\"collect_url\":\"https:\\\/\\\/collect.bogos.io\\\/collect\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3e41d63cd5ce800ba1fe97b89f532437","type":"APP","apiClientId":177733,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1721467099","configuration":"{\"pixel_id\":\"988769996393852\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1547895003","configuration":"{\"merchantId\":\"1037629\", \"url\":\"https:\/\/classic.avantlink.com\", \"shopName\":\"1ad0e7\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"26843be7e7f0ff401f557cffac6b5a49","type":"APP","apiClientId":125215244289,"privacyPurposes":["ANALYTICS","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1518108891","configuration":"{\"accountID\":\"Rxa4MW\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1310916827","configuration":"{\"botID\":\"i2ow08h17vhopp6x\",\"octaneDomain\":\"https:\/\/app.octaneai.com\",\"octaneNewDomain\":\"https:\/\/app2.octaneai.com\"}","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":"1266155739","configuration":"{\"accountID\":\"1ad0e7\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4f82d0323b06a4642fbff9b42c9979eb","type":"APP","apiClientId":12388204545,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"997720283","configuration":"{\"pixelCode\":\"D0S8OKRC77U9P401DHB0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"946045147","configuration":"{\"campaignID\":\"35295\",\"externalExecutionURL\":\"https:\/\/engine.saasler.com\/api\/v1\/webhook_executions\/c0db0dda5c65c9ad7e95e38dd29eae0d\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4d2ae310e7f99f154f33560b5c81cfa9","type":"APP","apiClientId":3546795,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
937,"dataSharingState":"unrestricted"},{"id":"943161563","configuration":"{\"tagID\":\"2613827572260\"}","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":"626098395","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\",\\\"GT-NGJ3KSK5\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/ZrC9CPuK27saEMSyr-Y-\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/STrHCIeL27saEMSyr-Y-\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-TN3H7D35VX\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/-Cw1CISL27saEMSyr-Y-\\\",\\\"MC-D5D0GQSBLR\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-TN3H7D35VX\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/F1U3CPiK27saEMSyr-Y-\\\",\\\"MC-D5D0GQSBLR\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/De3yCIGL27saEMSyr-Y-\\\",\\\"MC-D5D0GQSBLR\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-TN3H7D35VX\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/nCK1CIqL27saEMSyr-Y-\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-TN3H7D35VX\\\",\\\"AW-16857684292\\\/yQBnCP6K27saEMSyr-Y-\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-TN3H7D35VX\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"106889435","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Google Ads"},{"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":"Santu Beauty ","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"1ad0e7.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.santubeauty.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.santubeauty.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"162145501403","themeStoreId":"739","themePublished":"true","eventMetadataId":"ecdaf27f-360f-4bae-b283-40cbb7085faa","pageType":"searchresults","shopId":"68234969307","storefrontBaseUrl":"https:\/\/www.santubeauty.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"search_submitted\",{\"searchResult\":{\"query\":\"\",\"productVariants\":[]}}]]"});})();</script>
937<script> 938 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 939 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 940 window.ShopifyAnalytics.meta.currency = 'USD'; 941 var meta = {"products":[],"page":{"pageType":"searchresults","requestId":"632d93ad-c4d4-4280-925a-426fa34dc2b3-1791305651"}}; 942 for (var attr in meta) { 943 window.ShopifyAnalytics.meta[attr] = meta[attr]; 944 } 945</script>
vendor: 1 bytes, line 945
945
946<script class="analytics"> 947 (function () { 948 var customDocumentWrite = function(content) { 949 var jquery = null; 950 951 if (window.jQuery) { 952 jquery = window.jQuery; 953 } else if (window.Checkout && window.Checkout.$) { 954 jquery = window.Checkout.$; 955 } 956 957 if (jquery) { 958 jquery('body').append(content); 959 } 960 }; 961 962 var hasLoggedConversion = function(token) { 963 if (token) { 964 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 965 } 966 return false; 967 } 968 969 var setCookieIfConversion = function(token) { 970 if (token) { 971 var twoMonthsFromNow = new Date(Date.now()); 972 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 973 974 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 975 } 976 } 977 978 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 979 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 980 if (trekkie.integrations) { 981 return; 982 } 983 trekkie.methods = [ 984 'identify', 985 'page', 986 'ready', 987 'track', 988 'trackForm', 989 'trackLink' 990 ]; 991 trekkie.factory = function(method) { 992 return function() { 993 var args = Array.prototype.slice.call(arguments); 994 args.unshift(method); 995 trekkie.push(args); 996 if (method == 'track' || method == 'page') { 997 var pageUrl; 998 try { 999 pageUrl = window.location.href; 1000 } catch (e) {} 1001 var pageReferrer; 1002 try { 1003 pageReferrer = document.referrer; 1004 } catch (e) {} 1005 try { 1006 if (window.__TREKKIE_SHIM_QUEUE == null) { 1007 window.__TREKKIE_SHIM_QUEUE = []; 1008 } 1009 window.__TREKKIE_SHIM_QUEUE.push({ 1010 from: 'trekkie-stub', 1011 method: method, 1012 args: args.slice(1), 1013 pageContext: { 1014 url: pageUrl, 1015 referrer: pageReferrer 1016 } 1017 }); 1018 } catch (e) { 1019 // no-op 1020 } 1021 } 1022 return trekkie; 1023 }; 1024 }; 1025 for (var i = 0; i < trekkie.methods.length; i++) { 1026 var key = trekkie.methods[i]; 1027 trekkie[key] = trekkie.factory(key); 1028 } 1029 trekkie.load = function(config) { 1030 trekkie.config = config || {}; 1031 trekkie.config.initialDocumentCookie = document.cookie; 1032 var first = document.getElementsByTagName('script')[0]; 1033var script = document.createElement('script'); 1034script.type = 'text/javascript'; 1035script.onerror = function(e) { 1036 var scriptFallback = document.createElement('script'); 1037 scriptFallback.type = 'text/javascript'; 1038 scriptFallback.onerror = function(error) { 1039 var Monorail = { 1040 produce: function produce(monorailDomain, schemaId, payload) { 1041 var currentMs = new Date().getTime(); 1042 var event = { 1043 schema_id: schemaId, 1044 payload: payload, 1045 metadata: { 1046 event_created_at_ms: currentMs, 1047 event_sent_at_ms: currentMs 1048 } 1049 }; 1050 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1051 }, 1052 sendRequest: function sendRequest(endpointUrl, payload) { 1053 // Try the sendBeacon API 1054 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1055 var blobData = new window.Blob([payload], { 1056 type: 'text/plain' 1057 }); 1058 1059 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1060 return true; 1061 } // sendBeacon was not successful 1062 1063 } // XHR beacon 1064 1065 var xhr = new XMLHttpRequest(); 1066 1067 try { 1068 xhr.open('POST', endpointUrl); 1069 xhr.setRequestHeader('Content-Type', 'text/plain'); 1070 xhr.send(payload); 1071 } catch (e) { 1072 console.log(e); 1073 } 1074 1075 return false; 1076 }, 1077 isIos12: function isIos12() { 1078 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1079 } 1080 }; 1081 Monorail.produce('monorail-edge.shopifysvc.com', 1082 'trekkie_storefront_load_errors/1.1', 1083 {shop_id: 68234969307, 1084 theme_id: 162145501403, 1085 app_name: "storefront", 1086 context_url: window.location.href, 1087 source_url: "//www.santubeauty.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 1088 1089 }; 1090 scriptFallback.async = true; 1091 scriptFallback.src = '//www.santubeauty.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1092 first.parentNode.insertBefore(scriptFallback, first); 1093}; 1094script.async = true; 1095script.src = '//www.santubeauty.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1096first.parentNode.insertBefore(script, first); 1097 1098 }; 1099 trekkie.load( 1100 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":68234969307,"isMerchantRequest":null,"themeId":162145501403,"themeCityHash":"8953775231938639192","contentLanguage":"en","currency":"USD","eventMetadataId":"ecdaf27f-360f-4bae-b283-40cbb7085faa"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1101 ); 1102 1103 var loaded = false;
1104 trekkie.ready(function() { 1105 if (loaded) return; 1106 loaded = true; 1107 1108 window.ShopifyAnalytics.lib = window.trekkie; 1109 1110 var originalDocumentWrite = document.write; 1111 document.write = customDocumentWrite; 1112 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1113 document.write = originalDocumentWrite; 1114 1115 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1116 var token = match? match[1]: undefined; 1117 if (!hasLoggedConversion(token)) { 1118 setCookieIfConversion(token); 1119 window.ShopifyAnalytics.lib.track("Performed Search",{"query":null},undefined,undefined,{"shopifyEmitted":true}); 1120 } 1121 }); 1122 1123 window.ShopifyAnalytics.lib.page(null,{"pageType":"searchresults","requestId":"632d93ad-c4d4-4280-925a-426fa34dc2b3-1791305651","shopifyEmitted":true}); 1124 1125 var eventsListenerScript = document.createElement('script'); 1126 eventsListenerScript.async = true; 1127 eventsListenerScript.src = "//www.santubeauty.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1128 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1129})();</script>
vendor: 1 bytes, line 1129
1129
1130<script 1131 defer 1132 src="https://www.santubeauty.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.5.min.js" 1133 data-application="storefront-renderer" 1134 data-shop-id="68234969307" 1135 data-render-region="gcp-europe-west1" 1136 data-page-type="search" 1137 data-theme-instance-id="162145501403" 1138 data-theme-name="Pipeline" 1139 data-theme-version="7.1.3" 1140 data-monorail-region="shop_domain" 1141 data-resource-timing-sampling-rate="10" 1142 data-shs="true" 1143 data-shs-beacon="true" 1144 data-shs-export-with-fetch="true" 1145 data-shs-logs-sample-rate="1" 1146 data-shs-beacon-endpoint="https://www.santubeauty.com/api/collect" 1147></script>
1147 1148<meta name="shopify-y" content="a986a83e-007a-41ce-b0b1-5ccc6f0d875c" data-expiration="1822863251000"><meta name="shopify-s" content="409fb07e-be21-408b-9ed5-5ab777aa7053" data-expiration="1791307451000"><meta name="new-cookie-storage-activated" content="t"> 1149</head> 1150 1151 1152<body id="search" class="template-search "> 1153 1154 <a class="in-page-link visually-hidden skip-link" href="#MainContent">Skip to content</a> 1155 1156 <!-- BEGIN sections: group-header --> 1157<div id="shopify-section-sections--22400108331227__announcement" class="shopify-section shopify-section-group-group-header"><!-- /sections/announcement.liquid --> 1158</div><div id="shopify-section-sections--22400108331227__header" class="shopify-section shopify-section-group-group-header"><!-- /sections/header.liquid --><style data-shopify> 1159 :root { 1160 --COLOR-NAV-TEXT-TRANSPARENT: #ffffff; 1161 --COLOR-HEADER-TRANSPARENT-GRADIENT: rgba(0, 0, 0, 0.2); 1162 --LOGO-PADDING: 15px; 1163 --menu-backfill-height: auto; 1164 } 1165</style> 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183<div class="header__wrapper" 1184 data-header-wrapper 1185 style="--bar-opacity: 0; --bar-width: 0; --bar-left: 0;" 1186 data-header-transparent="false" 1187 data-underline-current="false" 1188 data-header-sticky="sticky" 1189 data-header-style="logo_center" 1190 data-section-id="sections--22400108331227__header" 1191 data-section-type="header"> 1192 <header class="theme__header" data-header-height> 1193 1194 1195 <div class="header__inner"> 1196 <div class="wrapper--full"> 1197 <div class="header__mobile"> 1198 1199 <div class="header__mobile__left"> 1200 <button class="header__mobile__button" 1201 data-drawer-toggle="hamburger" 1202 aria-label="Open menu" 1203 aria-haspopup="true" 1204 aria-expanded="false" 1205 aria-controls="header-menu"> 1206 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-nav" viewBox="0 0 25 25"><path d="M0 4.062h25v2H0zm0 7h25v2H0zm0 7h25v2H0z"/></svg> 1207 </button> 1208 </div> 1209 1210<div class="header__logo header__logo--image"> 1211 <a class="header__logo__link" 1212 href="/" 1213 style="--LOGO-WIDTH: 120px" 1214 > 1215 1216 1217 1218 1219 1220 1221 1222 <img src="//www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=120" alt="Santu Beauty " width="120" height="16" loading="eager" class="logo__img logo__img--color" srcset=" 1223 //www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=240 2x, 1224 //www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=360 3x, 1225 //www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=120 1226 "> 1227 1228 1229 </a> 1230 </div> 1231 1232 <div class="header__mobile__right"> 1233 <a class="header__mobile__button" 1234 data-drawer-toggle="drawer-cart" 1235 href="/cart"> 1236 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-cart" viewBox="0 0 25 25"><path d="M5.058 23a2 2 0 1 0 4.001-.001A2 2 0 0 0 5.058 23zm12.079 0c0 1.104.896 2 2 2s1.942-.896 1.942-2-.838-2-1.942-2-2 .896-2 2zM0 1a1 1 0 0 0 1 1h1.078l.894 3.341L5.058 13c0 .072.034.134.042.204l-1.018 4.58A.997.997 0 0 0 5.058 19h16.71a1 1 0 0 0 0-2H6.306l.458-2.061c.1.017.19.061.294.061h12.31c1.104 0 1.712-.218 2.244-1.5l3.248-6.964C25.423 4.75 24.186 4 23.079 4H5.058c-.157 0-.292.054-.438.088L3.844.772A1 1 0 0 0 2.87 0H1a1 1 0 0 0-1 1zm5.098 5H22.93l-3.192 6.798c-.038.086-.07.147-.094.19-.067.006-.113.012-.277.012H7.058v-.198l-.038-.195L5.098 6z"/></svg> 1237 <span class="visually-hidden">Cart</span> 1238 1239 <span class="header__cart__status"> 1240 <span data-header-cart-price="0"> 1241 $0.00 1242 </span> 1243 <span data-header-cart-count="0"> 1244 (0) 1245 </span> 1246 1247<span data-header-cart-full="false"></span> 1248 </span> 1249 1250 </a> 1251 </div> 1252 1253 </div> 1254 1255 <div data-header-desktop class="header__desktop header__desktop--logo_center"><div data-takes-space class="header__desktop__bar__l"> 1256 <nav class="header__menu"> 1257 <div class="header__menu__inner" data-text-items-wrapper> 1258<!-- /snippets/nav-item.liquid --> 1259 1260<div class="menu__item child" 1261 data-main-menu-text-item 1262 > 1263 <a href="/" data-top-link class="navlink navlink--toplevel"> 1264 <span class="navtext">Home</span> 1265 </a> 1266 1267</div> 1268 1269 1270<!-- /snippets/nav-item.liquid --> 1271 1272<div class="menu__item child" 1273 data-main-menu-text-item 1274 > 1275 <a href="/collections/full-collection" data-top-link class="navlink navlink--toplevel"> 1276 <span class="navtext">Shop</span> 1277 </a> 1278 1279</div> 1280 1281 1282<!-- /snippets/nav-item.liquid --> 1283 1284<div class="menu__item child" 1285 data-main-menu-text-item 1286 > 1287 <a href="/pages/our-philosophy" data-top-link class="navlink navlink--toplevel"> 1288 <span class="navtext">Our Philosophy</span> 1289 </a> 1290 1291</div> 1292 1293 1294<!-- /snippets/nav-item.liquid --> 1295 1296<div class="menu__item child" 1297 data-main-menu-text-item 1298 > 1299 <a href="/pages/about-us" data-top-link class="navlink navlink--toplevel"> 1300 <span class="navtext">About Us</span> 1301 </a> 1302 1303</div> 1304 1305 1306<!-- /snippets/nav-item.liquid --> 1307 1308<div class="menu__item child" 1309 data-main-menu-text-item 1310 > 1311 <a href="/pages/our-sanctuary" data-top-link class="navlink navlink--toplevel"> 1312 <span class="navtext">Our Sanctuary</span> 1313 </a> 1314 1315</div> 1316 1317 1318<!-- /snippets/nav-item.liquid --> 1319 1320<div class="menu__item child" 1321 data-main-menu-text-item 1322 > 1323 <a href="/pages/gallery" data-top-link class="navlink navlink--toplevel"> 1324 <span class="navtext">Gallery</span> 1325 </a> 1326 1327</div> 1328 1329 1330 <div class="hover__bar"></div> 1331 <div class="hover__bg"></div> 1332 </div> 1333 </nav> 1334</div> 1335 <div data-takes-space class="header__desktop__bar__c"> 1336<div class="header__logo header__logo--image"> 1337 <a class="header__logo__link" 1338 href="/" 1339 style="--LOGO-WIDTH: 120px" 1340 > 1341 1342 1343 1344 1345 1346 1347 1348 <img src="//www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=120" alt="Santu Beauty " width="120" height="16" loading="eager" class="logo__img logo__img--color" srcset=" 1349 //www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=240 2x, 1350 //www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=360 3x, 1351 //www.santubeauty.com/cdn/shop/files/Logo.svg?v=1723572486&width=120 1352 "> 1353 1354 1355 </a> 1356 </div> 1357</div> 1358 <div data-takes-space class="header__desktop__bar__r"> 1359<div class="header__desktop__buttons header__desktop__buttons--icons" ><div class="header__desktop__button " > 1360 <a href="/account" class="navlink"> 1361 1362 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-account" viewBox="0 0 16 16"><path d="M10.713 8.771c.31.112.53.191.743.27.555.204.985.372 1.367.539 1.229.535 1.993 1.055 2.418 1.885.464.937.722 1.958.758 2.997.03.84-.662 1.538-1.524 1.538H1.525c-.862 0-1.554-.697-1.524-1.538a7.36 7.36 0 0 1 .767-3.016c.416-.811 1.18-1.33 2.41-1.866a25.25 25.25 0 0 1 1.366-.54l.972-.35a1.42 1.42 0 0 0-.006-.072c-.937-1.086-1.369-2.267-1.369-4.17C4.141 1.756 5.517 0 8.003 0c2.485 0 3.856 1.755 3.856 4.448 0 2.03-.492 3.237-1.563 4.386.169-.18.197-.253.207-.305a1.2 1.2 0 0 0-.019.16l.228.082zm-9.188 5.742h12.95a5.88 5.88 0 0 0-.608-2.402c-.428-.835-2.214-1.414-4.46-2.224-.608-.218-.509-1.765-.24-2.053.631-.677 1.166-1.471 1.166-3.386 0-1.934-.782-2.96-2.33-2.96-1.549 0-2.336 1.026-2.336 2.96 0 1.915.534 2.709 1.165 3.386.27.288.369 1.833-.238 2.053-2.245.81-4.033 1.389-4.462 2.224a5.88 5.88 0 0 0-.607 2.402z"/></svg>
1363 <span class="visually-hidden">My Account</span> 1364 1365 </a> 1366 </div> 1367 1368 1369 1370 <div class="header__desktop__button main-menu--active" > 1371 <a href="/search" class="navlink" data-popdown-toggle="search-popdown"> 1372 1373 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 16 16"><path d="M16 14.864 14.863 16l-4.24-4.241a6.406 6.406 0 0 1-4.048 1.392 6.61 6.61 0 0 1-4.65-1.925A6.493 6.493 0 0 1 .5 9.098 6.51 6.51 0 0 1 0 6.575a6.536 6.536 0 0 1 1.922-4.652A6.62 6.62 0 0 1 4.062.5 6.52 6.52 0 0 1 6.575 0 6.5 6.5 0 0 1 9.1.5c.8.332 1.51.806 2.129 1.423a6.454 6.454 0 0 1 1.436 2.13 6.54 6.54 0 0 1 .498 2.522c0 1.503-.468 2.853-1.4 4.048L16 14.864zM3.053 10.091c.973.972 2.147 1.461 3.522 1.461 1.378 0 2.551-.489 3.525-1.461.968-.967 1.45-2.138 1.45-3.514 0-1.37-.482-2.545-1.45-3.524-.981-.968-2.154-1.45-3.525-1.45-1.376 0-2.547.483-3.513 1.45-.973.973-1.46 2.146-1.46 3.523 0 1.375.483 2.548 1.45 3.515z"/></svg> 1374 <span class="visually-hidden">Search</span> 1375 1376 </a> 1377 </div> 1378 1379 1380 <div class="header__desktop__button " > 1381 <a href="/cart" 1382 class="navlink navlink--cart" 1383 data-drawer-toggle="drawer-cart"> 1384 1385 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-cart" viewBox="0 0 25 25"><path d="M5.058 23a2 2 0 1 0 4.001-.001A2 2 0 0 0 5.058 23zm12.079 0c0 1.104.896 2 2 2s1.942-.896 1.942-2-.838-2-1.942-2-2 .896-2 2zM0 1a1 1 0 0 0 1 1h1.078l.894 3.341L5.058 13c0 .072.034.134.042.204l-1.018 4.58A.997.997 0 0 0 5.058 19h16.71a1 1 0 0 0 0-2H6.306l.458-2.061c.1.017.19.061.294.061h12.31c1.104 0 1.712-.218 2.244-1.5l3.248-6.964C25.423 4.75 24.186 4 23.079 4H5.058c-.157 0-.292.054-.438.088L3.844.772A1 1 0 0 0 2.87 0H1a1 1 0 0 0-1 1zm5.098 5H22.93l-3.192 6.798c-.038.086-.07.147-.094.19-.067.006-.113.012-.277.012H7.058v-.198l-.038-.195L5.098 6z"/></svg> 1386 <span class="visually-hidden">Cart</span> 1387 1388 <span class="header__cart__status"> 1389 <span data-header-cart-price="0"> 1390 $0.00 1391 </span> 1392 <span data-header-cart-count="0"> 1393 (0) 1394 </span> 1395 1396<span data-header-cart-full="false"></span> 1397 </span> 1398 1399 1400 </a> 1401 </div> 1402 1403 </div> 1404</div></div> 1405 </div> 1406 </div> 1407 </header> 1408 1409 <nav class="drawer header__drawer display-none" 1410 data-drawer="hamburger" 1411 aria-label="Main menu" 1412 id="header-menu"> 1413 <div class="drawer__content"> 1414 <div class="drawer__top"> 1415 <div class="drawer__top__left"> 1416 1417<a class="drawer__account" href="/account"> 1418 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-account" viewBox="0 0 16 16"><path d="M10.713 8.771c.31.112.53.191.743.27.555.204.985.372 1.367.539 1.229.535 1.993 1.055 2.418 1.885.464.937.722 1.958.758 2.997.03.84-.662 1.538-1.524 1.538H1.525c-.862 0-1.554-.697-1.524-1.538a7.36 7.36 0 0 1 .767-3.016c.416-.811 1.18-1.33 2.41-1.866a25.25 25.25 0 0 1 1.366-.54l.972-.35a1.42 1.42 0 0 0-.006-.072c-.937-1.086-1.369-2.267-1.369-4.17C4.141 1.756 5.517 0 8.003 0c2.485 0 3.856 1.755 3.856 4.448 0 2.03-.492 3.237-1.563 4.386.169-.18.197-.253.207-.305a1.2 1.2 0 0 0-.019.16l.228.082zm-9.188 5.742h12.95a5.88 5.88 0 0 0-.608-2.402c-.428-.835-2.214-1.414-4.46-2.224-.608-.218-.509-1.765-.24-2.053.631-.677 1.166-1.471 1.166-3.386 0-1.934-.782-2.96-2.33-2.96-1.549 0-2.336 1.026-2.336 2.96 0 1.915.534 2.709 1.165 3.386.27.288.369 1.833-.238 2.053-2.245.81-4.033 1.389-4.462 2.224a5.88 5.88 0 0 0-.607 2.402z"/></svg> 1419 <span class="visually-hidden">My Account</span> 1420 </a></div> 1421 1422 <button class="drawer__button drawer__close" 1423 data-drawer-toggle="hamburger" 1424 aria-label="Close"> 1425 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="m2.06 1 12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02 13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 1426 </button> 1427 </div> 1428 1429 <div class="drawer__inner" data-drawer-scrolls> 1430 1431 <div class="drawer__search" data-drawer-search> 1432 <!-- /snippets/search-predictive.liquid --> 1433 1434 1435 1436<div data-search-popdown-wrap> 1437 <div id="search-drawer" class="search-drawer search__predictive" data-popdown-outer><predictive-search><form 1438 action="/search" 1439 method="get" 1440 role="search"> 1441 1442 <div class="item--loadbar" data-loading-indicator style="display: none;"></div> 1443 <div class="search__predictive__outer"> 1444 <div class="wrapper"> 1445 <div class="search__predictive__main"> 1446 <div class="search__predictive__actions"> 1447 <button class="search__predictive__button" type="submit">
1448 <span class="visually-hidden">Search</span> 1449 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 16 16"><path d="M16 14.864 14.863 16l-4.24-4.241a6.406 6.406 0 0 1-4.048 1.392 6.61 6.61 0 0 1-4.65-1.925A6.493 6.493 0 0 1 .5 9.098 6.51 6.51 0 0 1 0 6.575a6.536 6.536 0 0 1 1.922-4.652A6.62 6.62 0 0 1 4.062.5 6.52 6.52 0 0 1 6.575 0 6.5 6.5 0 0 1 9.1.5c.8.332 1.51.806 2.129 1.423a6.454 6.454 0 0 1 1.436 2.13 6.54 6.54 0 0 1 .498 2.522c0 1.503-.468 2.853-1.4 4.048L16 14.864zM3.053 10.091c.973.972 2.147 1.461 3.522 1.461 1.378 0 2.551-.489 3.525-1.461.968-.967 1.45-2.138 1.45-3.514 0-1.37-.482-2.545-1.45-3.524-.981-.968-2.154-1.45-3.525-1.45-1.376 0-2.547.483-3.513 1.45-.973.973-1.46 2.146-1.46 3.523 0 1.375.483 2.548 1.45 3.515z"/></svg> 1450 </button> 1451 1452 <input type="search" 1453 data-predictive-search-input="search-popdown-results" 1454 name="q" 1455 value="" 1456 placeholder="Search..." 1457 aria-label="Search our store" 1458 aria-controls="predictive-search-results" 1459 > 1460 1461 <div class="search__predictive__clear"> 1462 <button type="reset" class="search__predictive__close__inner search-reset is-hidden" aria-label="Reset"> 1463 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="m2.06 1 12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02 13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 1464Clear</button> 1465 </div> 1466 </div> 1467 1468 <div class="search__predictive__close"> 1469 <button type="button" class="search__predictive__close__inner" data-close-popdown aria-label="Close"> 1470 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close-small" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="m2.237 1.073 12.021 12.021-1.414 1.414L.824 2.488z"/><path d="m.823 13.094 12.021-12.02 1.414 1.413-12.02 12.021z"/></g></svg> 1471 </button> 1472 </div> 1473 </div> 1474 </div> 1475 </div><div class="header__search__results" tabindex="-1" data-predictive-search-results></div> 1476 1477 <span class="predictive-search-status visually-hidden" role="status" aria-hidden="true" data-predictive-search-status></span></form></predictive-search></div> 1478 1479 1480 1481
1481<script data-predictive-search-aria-template type="text/x-template"> 1482 <div aria-live="polite"> 1483 <p> 1484 1485 {{@if(it.count)}} 1486 <span class="badge">{{ it.count }}</span> 1487 {{/if}} 1488 {{ it.title }} <em>{{ it.query }}</em> 1489 1490 </p> 1491 </div> 1492 </script>
1492 1493 1494
1494<script data-predictive-search-title-template type="text/x-template"> 1495 <div class="search__results__heading"> 1496 1497 <p> 1498 <span class="search__results__title">{{ it.title }}</span> 1499 <span class="badge">{{ it.count }}</span> 1500 </p> 1501 1502 </div> 1503 </script>
1503 1504 1505
1505<script data-search-other-template type="text/x-template"> 1506 1507 {{@each(it) => object, index}} 1508 <div class="other__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 1509 <p class="other__inline__title"> 1510 <a href="{{ object.url }}">{{ object.title | safe }}</a> 1511 </p> 1512 </div> 1513 {{/each}} 1514 1515 </script>
1515 1516 1517
1517<script data-search-product-template type="text/x-template"> 1518 1519 {{@each(it) => object, index}} 1520 <a href="{{ object.url }}" class="product__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 1521 <div class="product__inline__image {{ @if (object.featured_image.width === null) }} product__inline__image--no-image {{ /if}}"> 1522 {{ @if (object.featured_image.width !== null) }} 1523 <img class="img-aspect-ratio" width="{{object.featured_image.width}}" height="{{ object.featured_image.height }}" alt="{{ object.featured_image.alt }}" src="{{ object.thumb }}"> 1524 {{ /if}} 1525 </div> 1526 <div> 1527 <p class="product__inline__title"> 1528 {{ object.title | safe }} 1529 </p> 1530 <p class="product__inline__price"> 1531 <span class="price {{ object.classes }}"> 1532 {{ object.price | safe }} 1533 </span> 1534 {{@if(object.sold_out)}} 1535 <br /><em>{{ object.sold_out_translation }}</em> 1536 {{/if}} 1537 {{@if(object.on_sale)}} 1538 <span class="compare-at"> 1539 {{ object.compare_at_price | safe }} 1540 </span> 1541 {{/if}} 1542 </p> 1543 </div> 1544 </a> 1545 {{/each}} 1546 1547 </script>
1547 1548 1549</div> 1550 1551 </div> 1552 1553 1554 1555<div class="drawer__menu" data-stagger-animation data-sliderule-pane="0"> 1556<!-- /snippets/nav-item-mobile.liquid --><div class="sliderule__wrapper"> 1557 <div class="sliderow" data-animates="0"> 1558 <a class="sliderow__title" href="/">Home</a> 1559 </div></div> 1560 1561 1562 1563<!-- /snippets/nav-item-mobile.liquid --><div class="sliderule__wrapper"> 1564 <div class="sliderow" data-animates="0"> 1565 <a class="sliderow__title" href="/collections/full-collection">Shop</a> 1566 </div></div> 1567 1568 1569 1570<!-- /snippets/nav-item-mobile.liquid --><div class="sliderule__wrapper"> 1571 <div class="sliderow" data-animates="0"> 1572 <a class="sliderow__title" href="/pages/our-philosophy">Our Philosophy</a> 1573 </div></div> 1574 1575 1576 1577<!-- /snippets/nav-item-mobile.liquid --><div class="sliderule__wrapper"> 1578 <div class="sliderow" data-animates="0"> 1579 <a class="sliderow__title" href="/pages/about-us">About Us</a> 1580 </div></div> 1581 1582 1583 1584<!-- /snippets/nav-item-mobile.liquid --><div class="sliderule__wrapper"> 1585 <div class="sliderow" data-animates="0"> 1586 <a class="sliderow__title" href="/pages/our-sanctuary">Our Sanctuary</a> 1587 </div></div> 1588 1589 1590 1591<!-- /snippets/nav-item-mobile.liquid --><div class="sliderule__wrapper"> 1592 <div class="sliderow" data-animates="0"> 1593 <a class="sliderow__title" href="/pages/gallery">Gallery</a> 1594 </div></div> 1595 1596 1597 1598 1599 1600 </div> 1601 </div> 1602 </div> 1603 1604 <span class="drawer__underlay" data-drawer-underlay> 1605 <span class="drawer__underlay__fill"></span> 1606 <span class="drawer__underlay__blur"></span> 1607 </span> 1608 </nav> 1609 1610 <div data-product-add-popdown-wrapper class="product-add-popdown"></div> 1611</div> 1612 1613 1614<div class="header__backfill" 1615 data-header-backfill 1616 style="height: var(--menu-backfill-height);"> 1617 1618 <div class="header__inner"> 1619 <div class="wrapper--full"> 1620 <div class="header__backfill__content"> 1621 <div class="header__logo"> 1622 <div class="header__logo__link" style="--LOGO-WIDTH: 120px"><div class="overflow-hidden aspect-[--wh-ratio]" style="--wh-ratio: 7.519083969465649"> 1623 <img data-src="logo__img" 1624 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=" 1625 width="120" 1626 height="524" 1627 style=" 1628 display: block; 1629 width: 100%; 1630 height: 524px; 1631 "> 1632 </div></div> 1633 </div> 1634 </div> 1635 </div> 1636 </div> 1637</div> 1638
1639<script type="application/ld+json"> 1640{ 1641 "@context": "http://schema.org", 1642 "@type": "Organization", 1643 "name": "Santu Beauty ", 1644 1645 1646 "logo": "https:\/\/www.santubeauty.com\/cdn\/shop\/files\/Logo_3940x.svg?v=1723572486", 1647 1648 "sameAs": [ 1649 "", 1650 "", 1651 "https:\/\/www.instagram.com\/santubeautyco\/", 1652 "", 1653 "", 1654 "", 1655 "", 1656 "", 1657 "" 1658 ], 1659 "url": "https:\/\/www.santubeauty.com" 1660} 1661</script>
1661 1662 1663 1664 1665 1666</div> 1667<!-- END sections: group-header --> 1668 <!-- BEGIN sections: group-overlay --> 1669 1670<!-- END sections: group-overlay --> 1671 1672 <main class="main-content" id="MainContent"> 1673 <div id="shopify-section-template--22400108265691__main" class="shopify-section"><!-- /sections/search.liquid --><section class="page-search wrapper section-padding" 1674 data-section-type="search-page" 1675 data-section-id="template--22400108265691__main" 1676 style="--PT: 36px; --PB: 36px;"> 1677 <div class="search__page__heading"> 1678 <!-- /snippets/search-bar.liquid --> 1679 1680<main-search> 1681 <form action="/search" method="get" class="search-bar" role="search"> 1682 <div class="input-group input-group--inner-button"> 1683 <input class="input-group-field" 1684 type="search" 1685 name="q" 1686 value="" 1687 placeholder="Search our store" 1688 aria-label="Search our store"> 1689 1690 <span class="input-group-button"> 1691 <div class="input-group-button__group"> 1692 <button type="reset" class="search-reset is-hidden" aria-label="Reset"> 1693 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="m2.06 1 12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02 13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 1694 </button> 1695 1696 <button type="submit" class="btn btn--soft"> 1697 Search 1698 </button> 1699 </div> 1700 </span> 1701 </div> 1702 </form> 1703</main-search> 1704 1705</div> 1706 1707 1708</section> 1709 1710 1711</div>
1711<script data-locksmith> 1712 var load = function () { 1713 1714 if (document.querySelectorAll('.locksmith-manual-trigger').length > 0) { 1715 Locksmith.ping(); 1716 } 1717 1718 1719 Locksmith.util.on('submit', 'locksmith-resource-form', function (event) { 1720 event.preventDefault(); 1721 var data = Locksmith.util.serializeForm(event.target); 1722 var options = { spinner: false, container: 'locksmith-content' }; 1723 // a form rendered inline (section replacement) must keep that context 1724 // on resubmit: same enclosing container (there may be several on the 1725 // page), and no layout classes or cancel affordance in the re-render 1726 var inlineContainer = event.target.closest && event.target.closest('[id^="locksmith-content"]'); 1727 if (inlineContainer) { 1728 options.container = inlineContainer; 1729 } 1730 if (event.target.getAttribute('data-locksmith-inline') === 'true') { 1731 options.include_layout_classes = false; 1732 } 1733 Locksmith.postResource(data, options); 1734 }); 1735 1736 Locksmith.util.on('click', 'locksmith-manual-trigger', function (event) { 1737 event.preventDefault(); 1738 Locksmith.postResource({}, { spinner: true, container: document }); 1739 }); 1740 1741 Locksmith.submitPasscode = function (passcode) { 1742 Locksmith.postResource( 1743 { passcode: passcode }, 1744 { spinner: false, container: 'locksmith-content' } 1745 ); 1746 }; 1747 }; 1748 1749 if (typeof Locksmith !== 'undefined') { 1750 load(); 1751 } else { 1752 window.addEventListener('load', load); 1753 } 1754 </script>
1754 1755 </main> 1756 1757 <!-- BEGIN sections: group-footer --> 1758<div id="shopify-section-sections--22400108298459__footer" class="shopify-section shopify-section-group-group-footer"><!-- /sections/footer.liquid --> 1759 1760 1761<footer class="footer" 1762 data-section-id="sections--22400108298459__footer" 1763 data-section-type="footer" 1764 style="--PT: 30px; --PB: 30px;"> 1765 <div class="footer__holder"> 1766 <div class="wrapper--full section-padding-custom"> 1767 <div class="footer__container footer__container--reversed"><div class="footer__block footer__aside" 1768 style="--text: rgba(255, 255, 255, 0.9); --text-dark: #ffffff; --bg: #8e6b66;" 1769 > 1770 <div class="footer__newsletter"><div class="footer__newsletter__body"><h3>Exclusive offers, heartfelt updates, and moreâdelivered straight to your inbox.</h3> 1771 <div class="rte body-size-4"> 1772 <p>Become part of our community and enjoy exclusive offers, thoughtful gifts, and rare opportunities you wonât want to miss.</p> 1773 </div><!-- /snippets/newsletter-form.liquid --> 1774 1775<form method="post" action="/contact#footer-newsletter" id="footer-newsletter" accept-charset="UTF-8" class="newsletter-block footer__form newsletter--default-messages" data-newsletter-form=""><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /> 1776 1777 1778 1779 <p class="newsletter__message newsletter__message--error"><em>This customer is already subscribed</em></p> 1780 1781 1782 1783 <input type="hidden" name="contact[tags]" value="newsletter"> 1784 <input type="hidden" name="contact[accepts_marketing]" value="true"> 1785 <div class="input-group input-group--inner-button float__wrapper"> 1786 <label for="mail-footer-newsletter">Email</label> 1787 <input class="input-group-field" 1788 type="email" 1789 placeholder="[email protected]" 1790 id="mail-footer-newsletter" 1791 aria-label="[email protected]" 1792 autocorrect="off" 1793 autocapitalize="off" 1794 name="contact[email]" 1795 data-newsletter-field /> 1796 <span class="input-group-button"> 1797 <button 1798 type="submit" 1799 aria-label="Join" 1800 name="subscribe" 1801 id="subscribe-footer-newsletter"><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-arrow-right-long" viewBox="0 0 21 10">
1801<path d="m14.982 1.01.696-.717 3.803 3.691.011-.01.338.348.359.348-.012.01.012.011-.354.343-.343.353-.011-.011-3.803 3.692-.696-.718 3.266-3.17H.5v-1h17.748z"/></svg><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-check-slim" viewBox="0 0 14 11"><path d="m-.046 6.89.707-.708 2.95 2.95 9.192-9.193.707.707-9.9 9.9-3.656-3.657z" fill-rule="evenodd"/></svg></button> 1802 </span> 1803 </div></form> 1804 1805</div></div> 1806 </div> 1807<div class="footer__content"><div class="footer__content__inner"><div class="float-grid grid--uniform" data-accordion-group> 1808 <div class="grid__item medium-up--one-half footer__block" > 1809 <p class="footer__title footer__accordion__head js accordion-is-open" 1810 data-accordion-trigger="accordion-linklist-1-1" 1811 aria-controls="accordion-linklist-1-1" 1812 role="button" 1813 aria-haspopup="true" 1814 aria-label="Footer Menu" 1815 aria-expanded="true"> 1816 Footer Menu 1817 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-right" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M6.875 7.066.87 1.06 1.93 0l6.006 6.005L7.94 6 9 7.06l-.004.006.005.005-1.06 1.06-.006-.004-6.005 6.005-1.061-1.06 6.005-6.006z"/></svg> 1818 </p> 1819 1820 <input type="checkbox" 1821 name="accordion-linklist-1-1" 1822 id="accordion-linklist-1-1-checkbox" 1823 class="no-js no-js-checkbox" 1824 checked> 1825 1826 <label for="accordion-linklist-1-1-checkbox" 1827 class="footer__title footer__accordion__head no-js"> 1828 Footer Menu 1829 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow-medium-right" viewBox="0 0 9 15"><path fill-rule="evenodd" d="M6.875 7.066.87 1.06 1.93 0l6.006 6.005L7.94 6 9 7.06l-.004.006.005.005-1.06 1.06-.006-.004-6.005 6.005-1.061-1.06 6.005-6.006z"/></svg> 1830 </label> 1831 1832 <ul class="footer__quicklinks footer__accordion__body no-js-accordion" data-accordion-body data-accordion-body-mobile id="accordion-linklist-1-1"> 1833 1834<li><a href="/pages/faq">FAQ</a></li> 1835 1836<li><a href="/pages/our-philosophy">Our Philosophy</a></li> 1837 1838<li><a href="/pages/sustainability">Sustainability</a></li> 1839 1840<li><a href="/pages/ingredients">Ingredients</a></li> 1841 1842<li><a href="/pages/wholesale">Wholesale Partners</a></li> 1843 1844<li><a href="/policies/privacy-policy">Privacy Policy</a></li> 1845 1846<li><a href="/policies/terms-of-service">Terms of Service</a></li> 1847 1848<li><a href="/policies/contact-information">Contact Information</a></li> 1849 1850 </ul> 1851 </div> 1852 </div></div><div class="footer__block footer__block--socials"><h3 class="heading-size-8">Skincare rooted in love</h3> 1853<div class="footer__socials"> 1854 <a class="footer__icon footer__icon--social" href="https://www.instagram.com/santubeautyco/" title="Instagram" target="_blank"> 1855 <!-- /snippets/social-icon.liquid --> 1856 1857 1858<svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram" viewBox="0 0 20 20"><path d="M10.034 1.763h2.644c.407 0 .881 0 1.424.068.474 0 .881.067 1.152.135.271.068.543.136.678.203.271.068.475.204.61.34.136.135.34.27.543.406.203.204.339.34.407.543.067.203.203.406.339.61.067.203.135.407.203.678.068.27.135.678.135 1.152 0 .543.068 1.017.068 1.424v5.288c0 .407 0 .882-.068 1.424 0 .474-.067.881-.135 1.152-.068.272-.136.543-.203.678a1.31 1.31 0 0 1-.34.61c-.135.204-.27.34-.406.543-.204.203-.34.339-.543.407a2.38 2.38 0 0 1-.61.27 7.737 7.737 0 0 1-.678.204 4.868 4.868 0 0 1-1.152.136c-.543 0-1.017.068-1.424.068H7.39c-.407 0-.882 0-1.424-.068-.474 0-.881-.068-1.152-.136-.272-.067-.543-.135-.678-.203-.272-.068-.475-.203-.61-.271-.204-.136-.34-.271-.543-.407-.203-.203-.339-.339-.407-.542-.135-.204-.203-.407-.339-.61a8.558 8.558 0 0 1-.203-.679 4.868 4.868 0 0 1-.136-1.152c0-.542-.067-1.017-.067-1.424V7.322c0-.407 0-.881.067-1.424
18580-.474.068-.881.136-1.152.068-.271.135-.543.203-.678.068-.204.204-.407.34-.61.135-.204.27-.34.406-.543.203-.203.339-.339.542-.407.204-.135.407-.203.61-.339.204-.067.407-.135.679-.203a4.868 4.868 0 0 1 1.152-.135c.542 0 1.017-.068 1.424-.068h2.644zm0-1.763H7.322c-.407 0-.881 0-1.424.068-.542 0-1.017.068-1.356.135-.406.068-.745.204-1.084.34-.34.135-.61.27-.95.474-.27.203-.542.407-.813.678-.271.271-.542.542-.678.881-.136.34-.339.543-.475.882-.135.339-.27.678-.339 1.084a6.993 6.993 0 0 0-.135 1.356C0 6.441 0 6.915 0 7.322v5.356c0 .407 0 .881.068 1.424 0 .542.068 1.017.135 1.356.068.406.204.745.34 1.084.135.34.27.61.474.95.203.27.407.542.678.813.271.271.542.475.813.678.272.203.61.339.95.475.339.135.678.203 1.084.339.407.067.814.135 1.356.135.543 0 1.017.068 1.424.068h5.424c.407 0 .881 0 1.423-.068.543 0 1.017-.068 1.356-.135.407-.068.746-.204 1.085-.34.34-.135.61-.27.95-.474.27-.203.542-.407.88-.678.272-.271.475-.542.679-.881.203-.271.339-.61.474-.882.136-.339.204-.678.271-1.084.068-.407.136-.814.136-1.424 0-.542.068-1.017.068-1.424V7.254c0-.407 0-.881-.068-1.423 0-.543-.068-1.017-.136-1.424-.067-.407-.203-.746-.27-1.085a6.199 6.199 0 0 0-.475-.95c-.204-.338-.407-.541-.678-.813a4.353 4.353 0 0 0-.882-.678c-.27-.203-.61-.339-.949-.474-.339-.136-.678-.271-1.085-.34-.406-.067-.813-.135-1.356-.135h-1.423C12.27 0 11.39 0 10.034 0zm0 4.881c-.746 0-1.356.136-2.034.407-.61.271-1.153.61-1.627 1.085C5.898 6.847 5.559 7.39 5.288 8a4.863 4.863 0 0 0-.407 1.966c0 .746.136 1.356.407 2.034.271.61.61 1.153 1.085 1.627.474.475 1.017.814 1.627 1.085.61.271 1.288.407 2.034.407.746 0 1.356-.136 2.034-.407a4.57 4.57 0 0 0 1.627-1.085c.474-.474.813-1.017 1.085-1.627.27-.61.406-1.288.406-2.034 0-.678-.135-1.356-.406-1.966-.272-.61-.61-1.153-1.085-1.627-.475-.475-1.017-.814-1.627-1.085-.61-.271-1.356-.407-2.034-.407zm0 8.475c-.95 0-1.695-.34-2.373-.95-.678-.677-.95-1.423-.95-2.372 0-.881.34-1.695.95-2.373.61-.678 1.424-1.017 2.373-1.017.949 0 1.695.339 2.373 1.017.678.678.949 1.424.949 2.373 0 .949-.34 1.695-.95 2.373-.677.61-1.49.949-2.372.949zm6.508-8.678c0-.339-.135-.61-.339-.814a1.25 1.25 0 0 0-.813-.339c-.34 0-.61.136-.814.34a1.25 1.25 0 0 0-.339.813c0 .271.136.61.34.881.203.272.542.34.813.34.339 0 .61-.136.813-.34.204-.27.34-.61.34-.881z"/></svg> 1859 <span class="visually-hidden">Instagram</span> 1860 </a> 1861 </div></div></div> 1862 </div> 1863 </div> 1864 </div> 1865</footer> 1866 1867 1868<style> #shopify-section-sections--22400108298459__footer h3 {font-family: "F Grotesk Demi" !important; font-size: 20px;} #shopify-section-sections--22400108298459__footer .grid__item {float: left; padding-left: calc(var(--gutter) / 2); padding-right: calc(var(--gutter) / 2); width: 100%;} </style></div><div id="shopify-section-sections--22400108298459__subfooter" class="shopify-section shopify-section-group-group-footer"><!-- /sections/subfooter.liquid --><section class="subfooter" 1869 data-section-id="sections--22400108298459__subfooter" 1870 data-section-type="footer" 1871 style="--PT: 20px; --PB: 20px;"> 1872 <div class="section-padding wrapper--full"> 1873 1874 1875 1876<div class="subfooter__items subfooter__items--0"> 1877 1878 <div class="subfooter__item subfooter__item--copyright"> 1879 <span class="subfooter__copyright"> © <a href="/" title="">Santu Beauty </a>
1879 2026 </span> 1880 1881 1882<span class="subfooter__copyright"><a href="/search">Search</a></span> 1883 1884 1885 <!-- The following lines fix Lighthouse security warnings on the Shopify link.--><!-- Remove the following line to delete Powered by Shopify from your footer --> 1886 <span class="subfooter__copyright" data-powered-link><a rel="noopener" target="_blank" href="https://www.shopify.com?utm_campaign=poweredby&utm_medium=shopify&utm_source=onlinestore">Powered by Shopify</a></span> 1887 <!-- Stop deleting here --> 1888 1889 </div></div> 1890 </div> 1891</section> 1892 1893 1894</div> 1895<!-- END sections: group-footer --> 1896 1897 <div class="search--popdown"> 1898 <!-- /snippets/search-predictive.liquid --> 1899 1900 1901 1902<div data-search-popdown-wrap> 1903 <div id="search-popdown" class="search-popdown search__predictive" data-popdown-outer><predictive-search><form 1904 action="/search" 1905 method="get" 1906 role="search"> 1907 1908 <div class="item--loadbar" data-loading-indicator style="display: none;"></div> 1909 <div class="search__predictive__outer"> 1910 <div class="wrapper"> 1911 <div class="search__predictive__main"> 1912 <div class="search__predictive__actions"> 1913 <button class="search__predictive__button" type="submit"> 1914 <span class="visually-hidden">Search</span> 1915 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 16 16"><path d="M16 14.864 14.863 16l-4.24-4.241a6.406 6.406 0 0 1-4.048 1.392 6.61 6.61 0 0 1-4.65-1.925A6.493 6.493 0 0 1 .5 9.098 6.51 6.51 0 0 1 0 6.575a6.536 6.536 0 0 1 1.922-4.652A6.62 6.62 0 0 1 4.062.5 6.52 6.52 0 0 1 6.575 0 6.5 6.5 0 0 1 9.1.5c.8.332 1.51.806 2.129 1.423a6.454 6.454 0 0 1 1.436 2.13 6.54 6.54 0 0 1 .498 2.522c0 1.503-.468 2.853-1.4 4.048L16 14.864zM3.053 10.091c.973.972 2.147 1.461 3.522 1.461 1.378 0 2.551-.489 3.525-1.461.968-.967 1.45-2.138 1.45-3.514 0-1.37-.482-2.545-1.45-3.524-.981-.968-2.154-1.45-3.525-1.45-1.376 0-2.547.483-3.513 1.45-.973.973-1.46 2.146-1.46 3.523 0 1.375.483 2.548 1.45 3.515z"/></svg> 1916 </button> 1917 1918 <input type="search" 1919 data-predictive-search-input="search-popdown-results" 1920 name="q" 1921 value="" 1922 placeholder="Search..." 1923 aria-label="Search our store" 1924 aria-controls="predictive-search-results" 1925 > 1926 1927 <div class="search__predictive__clear"> 1928 <button type="reset" class="search__predictive__close__inner search-reset is-hidden" aria-label="Reset"> 1929 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="m2.06 1 12.02 12.021-1.06 1.061L1 2.062z"/><path d="M1 13.02 13.022 1l1.061 1.06-12.02 12.02z"/></g></svg> 1930Clear</button> 1931 </div> 1932 </div> 1933 1934 <div class="search__predictive__close"> 1935 <button type="button" class="search__predictive__close__inner" data-close-popdown aria-label="Close"> 1936 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close-small" viewBox="0 0 15 15"><g fill-rule="evenodd"><path d="m2.237 1.073 12.021 12.021-1.414 1.414L.824 2.488z"/><path d="m.823 13.094 12.021-12.02 1.414 1.413-12.02 12.021z"/></g></svg> 1937 </button> 1938 </div> 1939 </div> 1940 </div> 1941 </div><div class="header__search__results" tabindex="-1" data-predictive-search-results></div> 1942 1943 <span class="predictive-search-status visually-hidden" role="status" aria-hidden="true" data-predictive-search-status></span></form></predictive-search></div> 1944 1945 1946 <span class="drawer__underlay" data-search-underlay></span> 1947 1948 1949
1949<script data-predictive-search-aria-template type="text/x-template"> 1950 <div aria-live="polite"> 1951 <p> 1952 1953 {{@if(it.count)}} 1954 <span class="badge">{{ it.count }}</span> 1955 {{/if}} 1956 {{ it.title }} <em>{{ it.query }}</em> 1957 1958 </p> 1959 </div> 1960 </script>
1960 1961 1962
1962<script data-predictive-search-title-template type="text/x-template"> 1963 <div class="search__results__heading"> 1964 1965 <p> 1966 <span class="search__results__title">{{ it.title }}</span> 1967 <span class="badge">{{ it.count }}</span> 1968 </p> 1969 1970 </div> 1971 </script>
1971 1972 1973
1973<script data-search-other-template type="text/x-template"> 1974 1975 {{@each(it) => object, index}} 1976 <div class="other__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 1977 <p class="other__inline__title"> 1978 <a href="{{ object.url }}">{{ object.title | safe }}</a> 1979 </p> 1980 </div> 1981 {{/each}} 1982 1983 </script>
1983 1984 1985
1985<script data-search-product-template type="text/x-template"> 1986 1987 {{@each(it) => object, index}} 1988 <a href="{{ object.url }}" class="product__inline animates" style="animation-delay: {{ index | animationDelay }}ms;"> 1989 <div class="product__inline__image {{ @if (object.featured_image.width === null) }} product__inline__image--no-image {{ /if}}"> 1990 {{ @if (object.featured_image.width !== null) }} 1991 <img class="img-aspect-ratio" width="{{object.featured_image.width}}" height="{{ object.featured_image.height }}" alt="{{ object.featured_image.alt }}" src="{{ object.thumb }}"> 1992 {{ /if}} 1993 </div> 1994 <div> 1995 <p class="product__inline__title"> 1996 {{ object.title | safe }} 1997 </p> 1998 <p class="product__inline__price"> 1999 <span class="price {{ object.classes }}"> 2000 {{ object.price | safe }} 2001 </span> 2002 {{@if(object.sold_out)}} 2003 <br /><em>{{ object.sold_out_translation }}</em> 2004 {{/if}} 2005 {{@if(object.on_sale)}} 2006 <span class="compare-at"> 2007 {{ object.compare_at_price | safe }} 2008 </span> 2009 {{/if}} 2010 </p> 2011 </div> 2012 </a> 2013 {{/each}} 2014 2015 </script>
2015 2016 2017</div> 2018 2019 </div> 2020 2021
2021<script data-swatch-template type="text/x-template"> 2022 <radio-swatch class="swatch__button swatch__button--square"> 2023 2024 <input type="radio" 2025 name="grouped-{{ it.product_id }}" 2026 value="{{ it.color }}" 2027 id="{{ it.uniq }}" 2028 tabindex="-1"> 2029 <label for="{{ it.uniq }}" 2030 data-swatch="{{ it.color }}" 2031 data-swatch-variant="{{ it.variant }}" 2032 data-swatch-image="{{ it.image }}" 2033 data-swatch-image-id="{{ it.image_id }}" 2034 data-swatch-index="{{ it.index }}" 2035 tabindex="0"> 2036 <span class="visually-hidden">{{ it.color }}</span> 2037 </label> 2038 2039 </radio-swatch> 2040 </script>
2040 2041 2042 <div data-modal-container></div><!-- Paste popup code or third party scripts below this comment line ============== --> 2043 2044<style> 2045 h2.footer-block__heading.inline-richtext, 2046 ul.footer-block__details-content.list-unstyled{ 2047 text-align: left; 2048 } 2049</style> 2050 2051 2052 2053 <!-- And above this comment line ================================================== --> 2054 2055<style> </style> 2056<div id="shopify-block-AeHhSMHRscDBnTDlvW__15885745614559378752" class="shopify-block shopify-app-block"><div id="accessibly-config" style="display:none"> 2057 {"themeColor":"#8e6b66","iconColor":"#8e6b66","showLogo":true,"topBottomPosition":10,"rightLeftPosition":10,"iconSize":"small","iconCustomSize":64,"position":"middle-right"} 2058</div> 2059 2060 2061</div><div id="shopify-block-AaUY3TDlOK3J2UVAyQ__4015264832934714879" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: ecomsend-app -->
2061<script type="text/javascript"> 2062 //SendWILL APPS COMMON JS CODE 2063 window.EcomSendApps = window.EcomSendApps || {} 2064 2065 window.EcomSendApps.design_mode = false 2066 2067 2068 window.EcomSendApps.common = window.EcomSendApps.common || {} 2069 window.EcomSendApps.common.shop = { 2070 permanent_domain: '1ad0e7.myshopify.com', 2071 currency: "USD", 2072 money_format: "${{amount}}", 2073 id: 68234969307, 2074 } 2075 2076 2077 2078 window.EcomSendApps.common.customer = { 2079 id: null, 2080 tags: null, 2081 email: null, 2082 accepts_marketing: null, 2083 first_name: null, 2084 } 2085 2086 2087 2088 window.EcomSendApps.common.template = 'search' 2089</script>
2089 2090<!-- END app snippet --> 2091
2092<script> 2093 window.EcomSendApps = window.EcomSendApps || {} 2094 /** @description shared localStorage key used by web-pixel sandbox to read storefront GDPR mode */ 2095 const ECOMSEND_GDPR_ENABLED_STORAGE_KEY = "ECOMSEND:GDPR_ENABLED" 2096 /** @description storefront main bundle asset url */ 2097 const ECOMSEND_MAIN_SCRIPT_URL = 'https://cdn.shopify.com/extensions/01a0f197-ce1f-7a19-8adb-6b78fec4702f/ecomsend-209/assets/ecomsend.js' 2098 /** @description storefront style asset url */ 2099 const ECOMSEND_MAIN_STYLE_URL = 'https://cdn.shopify.com/extensions/01a0f197-ce1f-7a19-8adb-6b78fec4702f/ecomsend-209/assets/style.css' 2100 /** @description storefront wasm asset url for runtime signature module */ 2101 const ECOMSEND_WASM_ASSET_URL = 'https://cdn.shopify.com/extensions/01a0f197-ce1f-7a19-8adb-6b78fec4702f/ecomsend-209/assets/client_safe.wasm' 2102 /** @description fallback delay when requestIdleCallback is unavailable */ 2103 const ECOMSEND_IDLE_TIMEOUT_MS = 800 2104 /** @description user interaction events used to trigger lazy init earlier */ 2105 const ECOMSEND_INTERACTION_EVENTS = ["pointerdown", "keydown", "touchstart"] 2106 /** @description global flag key for emergency immediate loading */ 2107 const ECOMSEND_FORCE_IMMEDIATE_FLAG = window.EcomSendApps?.forceImmediateLoad === true 2108 /** @description default GDPR mode comes from block setting and can be overridden on window.EcomSendApps.GDPR */ 2109 const ECOMSEND_DEFAULT_GDPR_FLAG = false 2110 /** @description default CWTracks mode comes from block setting and can be overridden on window.EcomSendApps.CWTracksEnabled */ 2111 const ECOMSEND_DEFAULT_CWTRACKS_ENABLED = false 2112 2113 /** @description normalize merchant-provided GDPR switch into a strict boolean value */ 2114 function normalizeEcomsendBooleanFlag(rawValue) { 2115 if (typeof rawValue === "boolean") { 2116 return rawValue 2117 } 2118 if (typeof rawValue === "number") { 2119 return rawValue === 1 2120 } 2121 if (typeof rawValue === "string") { 2122 const normalizedValue = rawValue.trim().toLowerCase() 2123 return normalizedValue === "true" || normalizedValue === "1" || normalizedValue === "yes" 2124 } 2125 return false 2126 } 2127 2128 /** @description lock runtime switch value on EcomSendApps to reduce accidental console overwrite. */ 2129 function lockEcomsendReadonlyFlag(flagName, flagValue) { 2130 try { 2131 Object.defineProperty(window.EcomSendApps, flagName, { 2132 value: flagValue, 2133 writable: false, 2134 configurable: false, 2135 enumerable: true, 2136 }) 2137 return 2138 } catch (error) {} 2139 window.EcomSendApps[flagName] = flagValue 2140 } 2141 2142 /** @description resolve storefront GDPR mode from merchant theme override */ 2143 function resolveEcomsendGdprMode() { 2144 if (typeof window.EcomSendApps.GDPR === "undefined") { 2145 window.EcomSendApps.GDPR = ECOMSEND_DEFAULT_GDPR_FLAG 2146 } 2147 const gdprEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.GDPR) 2148 window.EcomSendApps.GDPR = gdprEnabled 2149 return gdprEnabled 2150 } 2151 2152 /** @description resolve storefront CWTracks mode from merchant theme block setting and runtime override */ 2153 function resolveEcomsendCwTracksMode() { 2154 if (typeof window.EcomSendApps.CWTracksEnabled === "undefined") { 2155 window.EcomSendApps.CWTracksEnabled = ECOMSEND_DEFAULT_CWTRACKS_ENABLED 2156 } 2157 const cwTracksEnabled = normalizeEcomsendBooleanFlag(window.EcomSendApps.CWTracksEnabled) 2158 window.EcomSendApps.CWTracksEnabled = cwTracksEnabled 2159 return cwTracksEnabled 2160 } 2161 2162 /** @description persist storefront GDPR mode so web-pixel sandbox can consume the same switch */ 2163 function syncEcomsendGdprModeToStorage(gdprEnabled) { 2164 if (!window.localStorage) { 2165 return 2166 } 2167 if (gdprEnabled) { 2168 window.localStorage.setItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY, "true") 2169 return 2170 } 2171 window.localStorage.removeItem(ECOMSEND_GDPR_ENABLED_STORAGE_KEY) 2172 } 2173 2174 /** @description enable GDPR gating only when merchant explicitly turns on storefront GDPR mode */ 2175 const ECOMSEND_GDPR_ENABLED = resolveEcomsendGdprMode() 2176 /** @description enable CWTracks callback/event emit only when merchant turns on CWTracks mode. */ 2177 const ECOMSEND_CWTRACKS_ENABLED = resolveEcomsendCwTracksMode() 2178 lockEcomsendReadonlyFlag("GDPR", ECOMSEND_GDPR_ENABLED) 2179 lockEcomsendReadonlyFlag("CWTracksEnabled", ECOMSEND_CWTRACKS_ENABLED) 2180 2181 try { 2182 syncEcomsendGdprModeToStorage(ECOMSEND_GDPR_ENABLED) 2183 } catch (error) {} 2184 2185 /** @description create main stylesheet node for storefront runtime */ 2186 function createEcomSendMainStyleEle() { 2187 const ecomsendMainStyleEle = document.createElement("link") 2188 ecomsendMainStyleEle.rel = "stylesheet" 2189 ecomsendMainStyleEle.href = ECOMSEND_MAIN_STYLE_URL 2190 ecomsendMainStyleEle.dataset.ecomsendTag = "main-style" 2191 return ecomsendMainStyleEle 2192 } 2193 2194 /** @description append runtime stylesheet exactly once */ 2195 function ensureEcomSendMainStyleLoaded() { 2196 if (document.querySelector('link[data-ecomsend-tag="main-style"]')) { 2197 return 2198 } 2199 const ecomsendMainStyleEle = createEcomSendMainStyleEle() 2200 document.head.appendChild(ecomsendMainStyleEle) 2201 } 2202 2203 /** @description remove interaction listeners after first lazy-init trigger */ 2204 function clearInteractionListeners() {
2205 ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { 2206 window.removeEventListener(eventName, scheduleMainBundleLoad) 2207 }) 2208 } 2209 2210 /** @description run low-priority task via idle callback with timeout fallback */ 2211 function scheduleLowPriorityTask(taskRunner, timeoutMs) { 2212 if (window.requestIdleCallback) { 2213 window.requestIdleCallback(() => { 2214 taskRunner() 2215 }, { timeout: timeoutMs }) 2216 return 2217 } 2218 window.setTimeout(() => { 2219 taskRunner() 2220 }, timeoutMs) 2221 } 2222 2223 /** @description load main storefront bundle once and keep rollback override */ 2224 function loadEcomsendMainBundle() { 2225 if (window.__ecomsendMainBundleLoaded) { 2226 return 2227 } 2228 window.__ecomsendMainBundleLoaded = true 2229 clearInteractionListeners() 2230 /** @description ensure storefront runtime css is loaded together with main bundle */ 2231 ensureEcomSendMainStyleLoaded() 2232 const ecomsendMainScriptEle = document.createElement("script") 2233 ecomsendMainScriptEle.src = ECOMSEND_MAIN_SCRIPT_URL 2234 ecomsendMainScriptEle.async = true 2235 ecomsendMainScriptEle.dataset.ecomsendTag = "main-script" 2236 document.body.appendChild(ecomsendMainScriptEle) 2237 } 2238 2239 /** @description schedule heavy bundle with idle-first strategy to reduce main-thread contention */ 2240 function scheduleMainBundleLoad() { 2241 if (window.__ecomsendMainBundleLoadScheduled) { 2242 return 2243 } 2244 /** @description dedupe idle scheduling from DOMContentLoaded and first interactions */ 2245 window.__ecomsendMainBundleLoadScheduled = true 2246 if (ECOMSEND_FORCE_IMMEDIATE_FLAG) { 2247 loadEcomsendMainBundle() 2248 return 2249 } 2250 scheduleLowPriorityTask(loadEcomsendMainBundle, ECOMSEND_IDLE_TIMEOUT_MS) 2251 } 2252 2253 /** @description cache marketing params for pixel/report flows before heavy bundle starts */ 2254 function cacheMarketingParams() { 2255 const urlParams = new URLSearchParams(window.location.search) 2256 const marketingId = urlParams.get("ec_marketing_id") 2257 const ecEmailId = urlParams.get("ec_email_id") 2258 const ecMarketingSign = urlParams.get("ec_marketing_sign") 2259 2260 if (marketingId && window.localStorage) { 2261 window.localStorage.setItem("ec_marketing_id", marketingId) 2262 } 2263 if (ecEmailId && window.localStorage) { 2264 window.localStorage.setItem("ec_email_id", ecEmailId) 2265 } 2266 if (ecMarketingSign && window.localStorage) { 2267 window.localStorage.setItem("ec_marketing_sign", ecMarketingSign) 2268 } 2269 } 2270 2271 /** @description check whether marketing storage is allowed under Shopify customer privacy state */ 2272 function isMarketingStorageAllowedByCustomerPrivacy() { 2273 const customerPrivacy = window?.Shopify?.customerPrivacy 2274 if (!customerPrivacy) { 2275 return false 2276 } 2277 const marketingAllowed = typeof customerPrivacy.marketingAllowed === "function" && customerPrivacy.marketingAllowed() 2278 if (marketingAllowed) { 2279 return true 2280 } 2281 if (typeof customerPrivacy.currentVisitorConsent === "function") { 2282 const consent = customerPrivacy.currentVisitorConsent() 2283 return consent?.marketing === "yes" 2284 } 2285 return false 2286 } 2287 2288 /** @description check whether analytics storage is allowed under Shopify customer privacy state */ 2289 function isAnalyticsStorageAllowedByCustomerPrivacy() { 2290 const customerPrivacy = window?.Shopify?.customerPrivacy 2291 if (!customerPrivacy) { 2292 return false 2293 } 2294 const analyticsAllowed = typeof customerPrivacy.analyticsProcessingAllowed === "function" && customerPrivacy.analyticsProcessingAllowed() 2295 if (analyticsAllowed) { 2296 return true 2297 } 2298 if (typeof customerPrivacy.currentVisitorConsent === "function") { 2299 const consent = customerPrivacy.currentVisitorConsent() 2300 return consent?.analytics === "yes" 2301 } 2302 return false 2303 } 2304 2305 /** @description execute marketing param caching with GDPR guard: functional off when GDPR disabled */ 2306 function cacheMarketingParamsWithGdprGuard() { 2307 if (!ECOMSEND_GDPR_ENABLED) { 2308 cacheMarketingParams() 2309 return 2310 } 2311 if (isMarketingStorageAllowedByCustomerPrivacy()) { 2312 cacheMarketingParams() 2313 } 2314 } 2315 2316 /** @description cache shop id used by pixel report branches */ 2317 function cacheShopIdForPixel() { 2318 if (!window.EcomSendApps?.common?.shop?.id || !window.localStorage) { 2319 return 2320 } 2321 window.localStorage.setItem("ECOMSEND:ES_SHOP_ID", window.EcomSendApps.common.shop.id) 2322 } 2323 2324 /** 2325 * Flow client config (e.g. browserStaySeconds) is fetched by the main ecomsend.js bundle: 2326 * bootstrapFlowClientConfig â POST /api/automation/v2/clientFlowConfig (API Sign) 2327 * â localStorage ECOMSEND:FLOW_CLIENT_CONFIG.byEventId â read by web-pixel. 2328 * Keep new C-end Flow config on this path; do not scatter fetches in liquid. 2329 */ 2330 2331 /** @description execute shop id caching with GDPR guard and shared consent policy */ 2332 function cacheShopIdWithGdprGuard() { 2333 if (!ECOMSEND_GDPR_ENABLED) { 2334 cacheShopIdForPixel() 2335 return 2336 } 2337 if (isAnalyticsStorageAllowedByCustomerPrivacy()) { 2338 cacheShopIdForPixel() 2339 } 2340 } 2341 2342 /** @description load Shopify consent-tracking API before GDPR-gated cache writes */ 2343 function withCustomerPrivacyApiReady(onReady) { 2344 if (!ECOMSEND_GDPR_ENABLED) { 2345 onReady() 2346 return 2347 } 2348 if (window?.Shopify?.customerPrivacy) { 2349 onReady() 2350 return 2351 } 2352 if (typeof window?.Shopify?.loadFeatures !== "function") { 2353 return 2354 } 2355 window.Shopify.loadFeatures( 2356 [{ name: "consent-tracking-api", version: "0.1" }], 2357 (error) => { 2358 if (error) { 2359 return 2360 } 2361 onReady() 2362 } 2363 ) 2364 } 2365 2366 try { 2367 withCustomerPrivacyApiReady(() => { 2368 cacheMarketingParamsWithGdprGuard() 2369 cacheShopIdWithGdprGuard() 2370 }) 2371 if (ECOMSEND_GDPR_ENABLED) { 2372 document.addEventListener("visitorConsentCollected", () => { 2373 cacheMarketingParamsWithGdprGuard() 2374 cacheShopIdWithGdprGuard() 2375 }) 2376 } 2377 } catch (e) {} 2378 2379 /** @description inject wasm asset url into shared namespace before main bundle executes */ 2380 window.EcomSendApps.wasmURL = ECOMSEND_WASM_ASSET_URL 2381
2382 ECOMSEND_INTERACTION_EVENTS.forEach((eventName) => { 2383 window.addEventListener(eventName, scheduleMainBundleLoad, { once: true, passive: true }) 2384 }) 2385 2386 if (document.readyState === "loading") { 2387 document.addEventListener("DOMContentLoaded", scheduleMainBundleLoad, { once: true }) 2388 } else { 2389 scheduleMainBundleLoad() 2390 } 2391</script>
2391 2392 2393<style id="ecomsend-custom-style"></style> 2394
2395<script>window.shopLocale = 'en'</script>
2395 2396
2397<script> 2398 /** @description timeout used for deferred discount request scheduling */ 2399 const ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS = 1500 2400 2401 /** @description apply discount code from url query only when parameter exists */ 2402 function applyWillDiscountCode() { 2403 const urlParams = new URLSearchParams(window.location.search) 2404 const willDiscountCode = urlParams.get("willDiscountCode") 2405 if (!willDiscountCode || /[\u0000-\u001F\u007F]/.test(willDiscountCode)) { 2406 return 2407 } 2408 fetch("/cart/update.js", { 2409 method: "POST", 2410 headers: { 2411 "Content-Type": "application/json", 2412 }, 2413 body: JSON.stringify({ 2414 discount: willDiscountCode, 2415 }), 2416 }) 2417 } 2418 2419 try { 2420 if (!window.__ecomsendDeferredTasksScheduled) { 2421 /** @description global guard to avoid duplicate deferred task scheduling */ 2422 window.__ecomsendDeferredTasksScheduled = true 2423 if (window.requestIdleCallback) { 2424 window.requestIdleCallback(() => { 2425 applyWillDiscountCode() 2426 }, { timeout: ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS }) 2427 } else { 2428 window.setTimeout(() => { 2429 applyWillDiscountCode() 2430 }, ECOMSEND_DISCOUNT_IDLE_TIMEOUT_MS) 2431 } 2432 } 2433 } catch (error) {} 2434</script>
2434 2435 2436 2437 2438</div><div id="shopify-block-ANWk3VXE0N3BIWEMvV__11349500561483629931" class="shopify-block shopify-app-block">
2438<script id="ReStock-config"> 2439 var _ReStockConfig = window._ReStockConfig || {}; 2440 2441 _ReStockConfig.templateName = "search"; 2442 _ReStockConfig.isB2BCustomer = null; 2443 _ReStockConfig.currentLocationId = null; 2444 _ReStockConfig.moneyFormat = "${{amount}}";_ReStockConfig.marketHandle = "us"; 2445 _ReStockConfig.marketId = 16052060379;let metafieldConfigData = null;metafieldConfigData = {"ask_for_gdpr_consent_enabled":false,"not_selectable_variants_enabled":false,"pre_order_products_enabled":false,"ui_style":{"notify_me_styles":[{"wrapper":null,"page":"LANDING_PAGES","inline_display_mode":"NOT_DISPLAYED","show_floating_button":false,"inject_in_parent_of_wrapper":false,"inject_to_all_wrappers":false,"handle_rerenders":true,"prepend_to_wrapper":false,"custom_styles":{"color":"","showIcon":false,"iconColor":"","borderSize":"","borderColor":"","borderRadius":"","backgroundColor":""},"product_card_selector":null,"style_mode":"SMART"},{"wrapper":null,"page":"COLLECTION_PAGE","inline_display_mode":"NOT_DISPLAYED","show_floating_button":false,"inject_in_parent_of_wrapper":false,"inject_to_all_wrappers":false,"handle_rerenders":true,"prepend_to_wrapper":false,"custom_styles":{"color":"","showIcon":false,"iconColor":"","borderSize":"","borderColor":"","borderRadius":"","backgroundColor":""},"product_card_selector":null,"style_mode":"SMART"}],"product_page_notify_me_style":{"wrapper":[".product__submit__buttons.product__submit__buttons--clear",".product__submit",".product__form__inner",".shopify-product-form"],"support_wrapper":null,"css_selector_from_theme":null,"inline_display_mode":"BUTTON","show_floating_button":false,"hide_buy_it_now_button":true,"inject_in_parent_of_wrapper":false,"inject_to_all_wrappers":false,"handle_rerenders":true,"prepend_to_wrapper":false,"css_selector":"div.product__submit__buttons.product__submit__buttons--clear>button[type='submit'].btn--outline.btn--full.btn--primary.btn--add-to-cart","css_selector_by_support":null,"custom_styles":{"color":"","showIcon":false,"iconColor":"","borderSize":"","borderColor":"","borderRadius":"","backgroundColor":""},"custom_variant_listener":{"element":null,"property":null,"is_dataset_property":false},"use_add_to_cart_button_selector":true,"style_mode":"SMART"},"subscription_form_style":{"custom_styles":{"color":"","showIcon":false,"iconColor":"","borderSize":"","borderColor":"","borderRadius":"","backgroundColor":""},"style_mode":"SMART","name_field_is_visible":false,"name_field_is_required":false,"email_field_is_required":false,"phone_field_is_required":false,"whatsapp_field_is_required":false,"quantity_field_is_visible":false,"quantity_max_value":10},"button_classes":["btn--outline","btn--full","btn--primary","btn--add-to-cart"],"global_raw_css":".product__block__subscription {\r\n display: none;\r\n}\r\n.hengam-preorder-badge,\r\n.hengam-preorder-collection-badge {\r\n background-color: #8E6B66!important;\r\n color: white!important;\r\n}","product_page_raw_css":".restock-alerts-notify-button {\r\n background-color: #8E6B66;\r\n}","after_subscribe_message_styles":{"toastColor":"202223","toastBackgroundColor":"D5B992"}},"ui_contents":[{"notify_me_contents":[{"page":"PRODUCT_PAGE","button_text":"Join the Waitlist - get notified!","not_selectable_variants_button_text":"Out of stock? Click here"},{"page":"LANDING_PAGES","button_text":"Join the Waitlist - get notified!","not_selectable_variants_button_text":"Out of stock? Click here"},{"page":"COLLECTION_PAGE","button_text":"Join the Waitlist - get notified!","not_selectable_variants_button_text":"Out of stock? Click here"}],"subscription_form_content":{"form_title":"Keep me in the loop via:","email_input_placeholder":"Email Address ...","email_input_below_text":"Donât worry! We hate spam as much as you do.","email_label":"Email","full_name_label":"Name","full_name_placeholder":"Full name ...","push_label":"Push notification","sms_label":"SMS","sms_input_placeholder":"Phone Number ...","whatsapp_label":"Whatsapp","whatsapp_input_placeholder":"Whatsapp Number ...","empty_name_error_message":"Name is required.","name_length_error_message":"Name is too long.","invali
2445d_email_error_message":"Your email address is not valid.","empty_email_error_message":"Email is required.","invalid_phone_number_error_message":"Your phone number is not valid.","empty_phone_number_error_message":"Phone number is required.","no_channels_selected_error_message":"You need to subscribe to one of the channels.","button_text":"Notify Me When Available","add_to_contacts_checkbox_text":"Notify me about other news or offers too","privacy_policy_text":"I have read and agree to the {{privacy_policy_url_text}}.","privacy_policy_url_text":"privacy policy","privacy_policy_url":"","privacy_policy_error_message":"You must accept our privacy policy","after_subscribe_message_text":"We will notify you when the item is available","already_subscribed_message_text":"You already have subscribed for this item","push_is_not_allowed_message_text":"You didn\\'t allow this site to send you push notifications. To receive back-in-stock notification from this shop.","style_mode":"SMART","quantity_label":"Quantity"},"language":"en"},{"notify_me_contents":[{"page":"PRODUCT_PAGE","button_text":"Notificarme","not_selectable_variants_button_text":"¿Agotado?haga clic aquÃ"},{"page":"COLLECTION_PAGE","button_text":"Notificarme","not_selectable_variants_button_text":"¿Agotado?haga clic aquÃ"},{"page":"LANDING_PAGES","button_text":"Notificarme","not_selectable_variants_button_text":"¿Agotado?haga clic aquÃ"}],"subscription_form_content":{"form_title":"Notificarme a través de:","email_input_placeholder":"Dirección de correo electrónico ...","email_input_below_text":"¡No te preocupes!Odiamos el spam tanto como tú.","email_label":"Correo electrónico","full_name_label":"Name","full_name_placeholder":"Full name ...","push_label":"Notificación de inserción","sms_label":"SMS","sms_input_placeholder":"Número de teléfono ...","whatsapp_label":"Whatsapp","whatsapp_input_placeholder":"Whatsapp Number ...","empty_name_error_message":"Name is required.","name_length_error_message":"Name is too long.","invalid_email_error_message":"Su dirección de correo electrónico no es válida.","empty_email_error_message":"Email is required.","invalid_phone_number_error_message":"Su número de teléfono no es válido.","empty_phone_number_error_message":"Phone number is required.","no_channels_selected_error_message":"You need to subscribe to one of the channels.","button_text":"Notificarme cuando esté disponible","add_to_contacts_checkbox_text":"Notificarme sobre otras noticias u ofertas también","privacy_policy_text":"I have read and agree to the {{privacy_policy_url_text}}.","privacy_policy_url_text":"privacy policy","privacy_policy_url":"","privacy_policy_error_message":"You must accept our privacy policy","after_subscribe_message_text":"Le notificaremos cuando el artÃculo esté disponible","already_subscribed_message_text":"Ya te has suscrito para este artÃculo","push_is_not_allowed_message_text":"No permitió que este sitio le envÃe notificaciones push.Para recibir una notificación de retroceso de esta tienda.","style_mode":"SMART","quantity_label":"Quantity"},"language":"es"}],"default_language":"en","shop_id":61139,"app_enabled":true,"base_url":"https://api.notify-me.app","excluded_from_back_in_stock_variants":[],"included_in_back_in_stock_variants":[],"has_contact_integration":false,"ask_for_contact_integration_is_hidden":false,"privacy_policy_is_hidden":true,"disable_branding_permission":true,"is_email_hidden":false,"is_sms_hidden":false,"is_push_hidden":true,"is_whatsapp_hidden":true,"collection_page_show_button_when_any_variant_is_out_of_stock":false,"home_page_show_button_when_any_variant_is_out_of_stock":false,"subscription_limit_reached":false,"is_back_in_stock_active":false,"back_in_stock_product_selection_mode":"ALL","low_stock":{"excluded_variants":[],"is_service_active":false,"widget_settings":{"show_mode":"ALL","inventory_threshold":1},"product_page":{"is_elements_shown":true,"ui_contents":{"en":{"description":"Only {{remaining_quantity}} items left in stock!"},"es":{"description":"¡Solo quedan {{remaining_quantity}} artÃculos en stock!"}},"style_mode":"SMART","widget":{"custom_styles":{"show_icon":true,"icon_color":"EE442E","text_color":"EE442E"},"wrapper_by_support":null,"inject_to_all_wrappers":false},"inline_button_placements":[]},"collection_page":{"is_elements_shown":false,"ui_contents":{"en":{"description":"Only {{remaining_quantity}} items left in stock!"},"es":{"description":"¡Solo quedan {{remaining_quantity}} artÃculos en stock!"}},"style_mode":"SMART","widget":{"custom_styles":{"show_icon":true,"icon_color":"EE442E","text_color":"EE442E"},"wrapper_by_support":null,"inject_to_all_wrappers":false},"inline_button_placements":[]},"landing_page":{"is_elements_shown":false,"ui_contents":{"en":{"description":"Only {{remaining_quantity}} items left in stock!"},"es":{"description":"¡Solo quedan {{remaining_quantity}} artÃculos en stock!"}},"style_mode":"SMART","widget":{"custom_styles":{"show_icon":true,"icon_color":"EE442E","text_color":"EE442E"},"wrapper_by_support":null,"inject_to_all_wrappers":false},"inline_button_placements":[]}},"is_suspended":false,"default_country_code":null};let metafieldPreOrderData = null;metafieldPreOrderData = {"product_page":{"ui_styles":{"badge":{"custom_styles":{"color":"","borderRadius":"","backgroundColor":""},"is_hidden":false},"button":{"custom_styles":{"color":"","borderSize":"","borderColor":"","borderRadius":"","backgroundColor":""},"is_visible":true},"description":{"is_hidden":true},"hide_buy_it_now_button":true,"is_active":true,"price":{"custom_styles":null,"format":"{symbol}{price}","is_hidden":false},"replace_with_add_to_cart_button":true,"selling_plan_selector":{"custom_styles":{"badgeTextColor":"000000","cardTitleColor":"202223","cardBorderColor":"e4e5e7","cardBorderRadius":"8","badgeBorderRadius":"6","cardBackgroun
2445dColor":"ffffff","badgeBackgroundColor":"e4e5e7","cardDescriptionColor":"6d7175"},"is_active":false,"custom_css":""},"style_mode":"SMART"},"ui_contents":{"en":{"badge_text":"Pre-Order","widget_description":"Product will be available soon!","btn_text":"Pre-Order","availability_date_label":"Expected availability","payment_label":"Payment","soon_available_text":"Coming soon","billing_full_payment_text":"Full payment at checkout","billing_due_now_label":"Due now","billing_due_later_label":"Due later on","selling_plan_full_payment_title":"Full payment","selling_plan_partial_payment_title":"Reserve now, pay later","selling_plan_selector_save_label":"Save"},"es":{"badge_text":"Hacer un pedido","widget_description":"¡El producto estará disponible pronto!","btn_text":"Reserva ahora","availability_date_label":"Disponibilidad prevista","payment_label":"Pago","soon_available_text":"Muy pronto","billing_full_payment_text":"Pago completo al finalizar la compra.","billing_due_now_label":"Vence ahora","billing_due_later_label":"Se entregará más adelante","selling_plan_full_payment_title":"Full payment","selling_plan_partial_payment_title":"Reserve now, pay later","selling_plan_selector_save_label":"Save"}},"elements_selectors":{"button":{"css_selector":"div.product__submit__buttons.product__submit__buttons--clear>button[type='submit'].btn--outline.btn--full.btn--primary.btn--add-to-cart","css_selector_by_support":null,"css_selector_from_theme":null},"price":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"description":{"wrapper_by_support":null},"selling_plan_selector":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"inject_to_all_wrappers":false}},"collection_page":{"ui_styles":{"is_active":true,"button":{"custom_styles":{"color":"","borderSize":"","borderColor":"","borderRadius":"","backgroundColor":""},"is_visible":true},"badge":{"custom_styles":{"color":"","borderRadius":"","discountColor":"","backgroundColor":""},"is_visible":true,"position":"TOP_RIGHT"},"style_mode":"SMART"},"ui_contents":{"es":{"btn_text":"Reserva ahora","badge_text":"Pre-order"},"en":{"btn_text":"Pre-Order","badge_text":"Pre-Order"}},"elements_selectors":{"button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"badge_parent":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"price":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null,"format":"{symbol}{price}","is_hidden":false},"quick_view_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section_add_to_cart_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"featured_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"inject_to_all_wrappers":false},"enable_variant_listener_on_cards":false},"landing_page":{"ui_styles":{"is_active":true,"button":{"custom_styles":null,"is_visible":true},"badge":{"custom_styles":{"text_color":"000","border_radius":10,"background_color":"e4e5e7","discount_text_color":"000"},"is_visible":true,"position":"TOP_RIGHT"},"style_mode":"SMART","featured_product_is_active":false},"ui_contents":{"en":{"btn_text":"Pre-Order","badge_text":"Pre-Order"},"es":{"btn_text":"Reserva ahora","badge_text":"Pre-order"}},"elements_selectors":{"button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"badge_parent":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"price":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null,"format":"{symbol}{price}","is_hidden":false},"quick_view_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section_add_to_cart_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"featured_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"inject_to_all_wrappers":false},"enable_variant_listener_on_cards":false},"limit_reached":false,"variant_ids":[],"is_selling_plan_removed_by_support":false,"selling_plans_settings":{"7556825307":{"has_discount":false,"value_type":"percentage","value":0.0}},"selling_plans_billing_settings":{"7556825307":{"payment_type":"FULL","checkout_charge":{"percentage":50,"charge_type":"PERCENTAGE","exact_amount":0},"remaining_fee_checkout_time":{"date_type":"AFTER_SOME_DAYS","exact_date":null,"after_some_days":7}}},"selling_plan_id_to_market_ids":{},"selling_plan_id_to_variant_ids":{"7556825307":[]},"is_service_active":true,"override_cart_requests":true,"excluded_catalogs_products":[],"excluded_catalogs_collections":[],"excluded_company_locations":[],"description_availability_config":{"7556825307":{"type":"SOON","config":{}}},"mixed_cart_alert":{"show_mixed_cart_alert":false,"is_active":false,"ui_styles":{"show_icon":true,"show_title":true,"show_body":true,"style_mode":"SMART","custom_css":"","custom_styles":{"color":"1A1A1A","iconColor":"616161","borderColor":"F1F1F1","borderRadius":8,"backgroundColor":"F1F1F1"}},"elements_selectors":{"cart_page":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"cart_drawer":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null}},"ui_contents":{"en":{"title":"Shipping Notice","body":"Your order
2445contains items with different delivery dates."},"es":{"title":"Shipping Notice","body":"Your order contains items with different delivery dates."}}}};let metafieldWishlistData = undefined;metafieldWishlistData = {"is_service_active":false,"is_guest_mode_enabled":true,"excluded_variant_ids":[],"wishlist_buttons":{"product_page":{"is_visible":true,"style_mode":"SMART","custom_styles":null,"slim_custom_styles":null,"inject_to_all_wrappers":false,"icon":"heart","inline_button_placements":[],"button_style":"FILL"},"collection_page":{"is_visible":false,"custom_styles":null,"icon":"","position":"","mode":"","button_placements":[]},"landing_page":{"is_visible":false,"custom_styles":null,"icon":"","position":"","mode":"","button_placements":[]}},"limit_reached":false,"ui_contents":{"en":{"id":50815,"add_to_wishlist_button_label":"Add to wishlist","remove_from_wishlist_button_label":"Itâs in wishlist","list_access_button_label":"Wishlist","list_title":"Wishlist","list_add_all_to_cart_button_label":"Add all to cart","product_card_add_to_cart_button_label":"Add to cart","product_card_out_of_stock_button_label":"Out of stock","product_count_label":"{count} product(s)","empty_list_description":"You didn't like any products yet!","empty_list_explore_button_label":"Explore store","add_to_cart_toast_message":"Added to your cart","add_to_cart_failure_message":"Failed to add items to cart.","saved_to_wishlist_toast_message":"Saved to your wishlist","login_modal_button_label":"Login","login_modal_description":"Log in to your account to add products to your wishlist and view your previously saved items.","login_modal_title":"Login required"},"es":{"id":50828,"add_to_wishlist_button_label":"Añadir a la lista de deseos","remove_from_wishlist_button_label":"Está en la lista de deseos.","list_access_button_label":"Lista de deseos","list_title":"Lista de deseos","list_add_all_to_cart_button_label":"Añadir todo al carrito","product_card_add_to_cart_button_label":"Añadir a la cesta","product_card_out_of_stock_button_label":"Agotado","product_count_label":"{count} product(s)","empty_list_description":"¡Aún no te ha gustado ningún producto!","empty_list_explore_button_label":"Explorar la tienda","add_to_cart_toast_message":"Añadido a tu carrito","add_to_cart_failure_message":"Failed to add items to cart.","saved_to_wishlist_toast_message":"Saved to your wishlist","login_modal_button_label":"Acceso","login_modal_description":"Inicie sesión en su cuenta para agregar productos a su lista de deseos y ver los artÃculos guardados anteriormente.","login_modal_title":"Se requiere iniciar sesión"}},"access_button":{"custom_styles":null,"icon":"heart","position":"bottom-left","hide_floating_button":false,"floating_access_button_hidden_on_pages":[],"show_count_badge":false,"badge_custom_styles":null,"inline_button_placements":[]},"drawer":{"custom_styles":null,"position":"left"},"add_to_cart_message":{"custom_styles":null,"position":"bottom-right"},"saved_to_wishlist_message":{"is_enabled":false,"custom_styles":null,"position":"bottom-right"},"updated_at":1780955238};let metafieldFlagsData = null;metafieldFlagsData = {};_ReStockConfig._metafields = { 2446 sdkConfig: metafieldConfigData, 2447 preOrderConfig: metafieldPreOrderData, 2448 wishlistConfig: metafieldWishlistData, 2449 featureFlags: metafieldFlagsData 2450 }; 2451</script>
2451 2452 2453<!-- BEGIN app snippet: early-cart-guard -->
2453<script id="ReStock-early-cart-guard"> 2454(function (window) { 2455 try { 2456 if (window.__nmPreorderEarlyGuard) return; 2457 2458 let cfg = null; 2459 const metafields = window._ReStockConfig?._metafields; 2460 if (metafields?.preOrderConfig && typeof metafields.preOrderConfig === 'object') { 2461 cfg = metafields.preOrderConfig; 2462 } 2463 2464 let wrappersInstalled = false; 2465 2466 window.__nmPreorderEarlyGuard = { 2467 v: 1, 2468 active: true, 2469 setConfig: function (nextConfig) { 2470 if (!nextConfig || typeof nextConfig !== 'object') return; 2471 cfg = nextConfig; 2472 if (cfg.override_cart_requests === true) installWrappers(); 2473 } 2474 }; 2475 2476 function isGuardActive() { 2477 return window.__nmPreorderEarlyGuard?.active === true; 2478 } 2479 2480 function isCartAddUrl(url) { 2481 try { 2482 const parsed = new URL(String(url), window.document.baseURI); 2483 return /(?:^|\/)cart\/add(?:\.js(?:on)?)?$/.test(parsed.pathname); 2484 } catch (error) { 2485 return false; 2486 } 2487 } 2488 2489 function isPageActive() { 2490 const template = window._ReStockConfig?.templateName; 2491 let pageConfig = null; 2492 if (template === 'product') { 2493 pageConfig = cfg.product_page; 2494 } else if (template === 'collection' || template === 'list-collections' || template === 'search' || template === 'page') { 2495 pageConfig = cfg.collection_page; 2496 } else if (template === 'index') { 2497 pageConfig = cfg.landing_page; 2498 } 2499 return pageConfig?.ui_styles?.is_active === true; 2500 } 2501 2502 function shouldEnrich() { 2503 if (!cfg) return false; 2504 if (cfg.override_cart_requests !== true) return false; 2505 if (cfg.is_service_active !== true) return false; 2506 if (cfg.limit_reached === true) return false; 2507 if (window._ReStockConfig?.isB2BCustomer) return false; 2508 return isPageActive(); 2509 } 2510 2511 function isPlanVisibleInMarket(planId) { 2512 const planToMarkets = cfg.selling_plan_id_to_market_ids; 2513 if (!planToMarkets) return true; 2514 const allowedMarketIds = planToMarkets[planId]; 2515 if (!allowedMarketIds || allowedMarketIds.length === 0) return true; 2516 const marketId = window._ReStockConfig?.marketId; 2517 if (marketId == null) return true; 2518 return allowedMarketIds.includes(Number(marketId)); 2519 } 2520 2521 function findSellingPlanId(variantId) { 2522 const planToVariants = cfg.selling_plan_id_to_variant_ids; 2523 if (!planToVariants) return null; 2524 for (const planId of Object.keys(planToVariants)) { 2525 const variantIds = planToVariants[planId]; 2526 if (variantIds && variantIds.includes(variantId) && isPlanVisibleInMarket(planId)) return planId; 2527 } 2528 return null; 2529 } 2530 2531 function localizedContents() { 2532 const contents = cfg.product_page?.ui_contents; 2533 if (!contents || typeof contents !== 'object') return {}; 2534 return contents[shopLanguage()] || contents['en'] || Object.values(contents)[0] || {}; 2535 } 2536 2537 function shopLanguage() { 2538 const locale = window.Shopify?.locale; 2539 if (locale) return locale; 2540 const documentLanguage = window.document?.documentElement?.lang; 2541 if (documentLanguage && documentLanguage !== 'null') return documentLanguage; 2542 return null; 2543 } 2544 2545 function formatDate(date) { 2546 return date.toISOString().split('T')[0]; 2547 } 2548 2549 function toFiniteNumber(value) { 2550 if (typeof value === 'number') return Number.isFinite(value) ? value : null; 2551 if (typeof value === 'string') { 2552 const parsed = parseFloat(value); 2553 return Number.isFinite(parsed) ? parsed : null; 2554 } 2555 return null; 2556 } 2557 2558 function clamp(value, min, max) { 2559 return Math.min(max, Math.max(min, value)); 2560 } 2561 2562 function availabilityDateText(planId) { 2563 const settings = cfg.description_availability_config?.[planId]; 2564 if (!settings) return ''; 2565 if (settings.type === 'SOON') return localizedContents().soon_available_text || ''; 2566 if (settings.type === 'SPECIFIC_DATE') { 2567 const parsed = new Date(settings.config.date); 2568 return isNaN(parsed.getTime()) ? '' : formatDate(parsed); 2569 } 2570 if (settings.type === 'RELATIVE_DATE') { 2571 const days = typeof settings.config.days === 'string' ? parseInt(settings.config.days, 10) : settings.config.days; 2572 if (isNaN(days)) return ''; 2573 const futureDate = new Date(); 2574 futureDate.setDate(futureDate.getDate() + days); 2575 return formatDate(futureDate); 2576 } 2577 return ''; 2578 } 2579 2580 function inlineVariantPrice(variantId) { 2581 const variants = window._ReStockConfig?.product?.variants;
2582 if (!Array.isArray(variants)) return null; 2583 const variant = variants.find(function (candidate) { 2584 return Number(candidate?.id) === variantId; 2585 }); 2586 if (!variant) return null; 2587 return variant.price ? variant.price / 100 : 0; 2588 } 2589 2590 function finalPriceForPlan(price, planId) { 2591 const adjustment = cfg.selling_plans_settings?.[planId]; 2592 if (!adjustment?.has_discount) return price; 2593 if (adjustment.value_type === 'percentage') return price * (1 - adjustment.value / 100); 2594 if (adjustment.value_type === 'fixed_amount') return price - adjustment.value * (window.Shopify?.currency?.rate ?? 1); 2595 return price; 2596 } 2597 2598 function formatMoneyIntl(price) { 2599 const currency = window.Shopify?.currency?.active || 'USD'; 2600 const locale = window.Shopify?.locale || 'en-US'; 2601 try { 2602 return new Intl.NumberFormat(locale, { style: 'currency', currency: currency }).format(price); 2603 } catch (error) { 2604 return currency + ' ' + price.toFixed(2); 2605 } 2606 } 2607 2608 const AMOUNT_PLACEHOLDER = /\{\{\s*(\w+)\s*\}\}/; 2609 2610 function delimit(cents, precision, thousands, decimal) { 2611 const parts = (cents / 100).toFixed(precision).split('.'); 2612 const grouped = parts[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + thousands); 2613 return parts[1] ? grouped + (decimal || '.') + parts[1] : grouped; 2614 } 2615 2616 const AMOUNT_FORMATTERS = new Map([ 2617 ['amount', function (cents) { return delimit(cents, 2, ','); }], 2618 ['amount_no_decimals', function (cents) { return delimit(cents, 0, ','); }], 2619 ['amount_with_comma_separator', function (cents) { return delimit(cents, 2, '.', ','); }], 2620 ['amount_no_decimals_with_comma_separator', function (cents) { return delimit(cents, 0, '.'); }], 2621 ['amount_with_apostrophe_separator', function (cents) { return delimit(cents, 2, "'"); }], 2622 ['amount_no_decimals_with_space_separator', function (cents) { return delimit(cents, 0, ' '); }], 2623 ['amount_with_space_separator', function (cents) { return delimit(cents, 2, ' ', ','); }], 2624 ['amount_with_period_and_space_separator', function (cents) { return delimit(cents, 2, ' '); }] 2625 ]); 2626 2627 function decodeEntities(s) { 2628 var el = window.document.createElement('textarea'); el.innerHTML = s; return el.value; 2629 } 2630 2631 function moneyFormat() { 2632 const format = window._ReStockConfig?.moneyFormat; 2633 return typeof format === 'string' ? decodeEntities(format.replace(/<[^>]*>/g, '')) : ''; 2634 } 2635 2636 function formatMoney(amount) { 2637 const format = moneyFormat(); 2638 const formatAmount = AMOUNT_FORMATTERS.get(AMOUNT_PLACEHOLDER.exec(format)?.[1] ?? ''); 2639 if (!formatAmount) return formatMoneyIntl(amount); 2640 return format.replace(AMOUNT_PLACEHOLDER, formatAmount(Math.round(amount * 100))); 2641 } 2642 2643 function calculateCheckoutCharge(price, policy) { 2644 const { charge_type, exact_amount, percentage } = policy.checkout_charge; 2645 if (!Number.isFinite(price) || price <= 0) return 0; 2646 if (charge_type === 'PERCENTAGE') return clamp(price * ((toFiniteNumber(percentage) ?? 0) / 100), 0, price); 2647 return clamp(toFiniteNumber(exact_amount) ?? 0, 0, price); 2648 } 2649 2650 function formatRemainingDueDate(policy) { 2651 const { date_type, exact_date, after_some_days } = policy.remaining_fee_checkout_time; 2652 if (date_type === 'EXACT_DATE' && exact_date) { 2653 const parsed = new Date(exact_date + 'T12:00:00Z'); 2654 if (!isNaN(parsed.getTime())) return formatDate(parsed); 2655 } 2656 if (date_type === 'AFTER_SOME_DAYS' && after_some_days) { 2657 const days = toFiniteNumber(after_some_days); 2658 if (days === null) return ''; 2659 const futureDate = new Date(); 2660 futureDate.setDate(futureDate.getDate() + days); 2661 return formatDate(futureDate); 2662 } 2663 return ''; 2664 } 2665 2666 function paymentText(planId, variantId) { 2667 const policy = cfg.selling_plans_billing_settings?.[planId]; 2668 if (!policy) return ''; 2669 const contents = localizedContents(); 2670 if (policy.payment_type === 'FULL') return contents.billing_full_payment_text || 'Full payment at checkout'; 2671 2672 const price = inlineVariantPrice(variantId); 2673 if (price == null) return ''; 2674 2675 const planPrice = finalPriceForPlan(price, planId); 2676 const dueNowAmount = calculateCheckoutCharge(planPrice, policy); 2677 const dueLaterAmount = clamp(planPrice - dueNowAmount, 0, planPrice); 2678 const dueDate = formatRemainingDueDate(policy); 2679 2680 const dueNowLabel = contents.billing_due_now_label || 'Due now'; 2681 const dueLaterLabel = contents.billing_due_later_label || 'Due later on'; 2682 const formattedDueNow = formatMoney(dueNowAmount); 2683 const formattedDueLater = formatMoney(dueLaterAmount); 2684 const dueLaterPart = dueDate 2685 ? formattedDueLater + ' ' + dueLaterLabel + ' ' + dueDate 2686 : formattedDueLater + ' ' + dueLaterLabel; 2687 2688 return formattedDueNow + ' ' + dueNowLabel + ' · ' + dueLaterPart; 2689 } 2690 2691 const DEFAULT_AVAILABILITY_LABEL = 'Expected availability'; 2692 const DEFAULT_PAYMENT_LABEL = 'Payment'; 2693 const TYPE_MARKER = 'Type'; 2694 2695 function cleanLabel(raw) { 2696 return String(raw == null ? '' : raw) 2697 .replace(/[[\]]/g, '') 2698 .replace(/[\s:ï¼]+$/, '') 2699 .trim(); 2700 } 2701 2702 function resolvePaymentLabel(raw) { 2703 const cleaned = cleanLabel(raw); 2704 if (!cleaned || cleaned.charAt(0) === '_' || cleaned === TYPE_MARKER || cleaned === DEFAULT_AVAILABILITY_LABEL) { 2705 return DEFAULT_PAYMENT_LABEL; 2706 } 2707 return cleaned; 2708 } 2709 2710 function resolveAvailabilityLabel(raw, paymentLabel) { 2711 const cleaned = cleanLabel(raw); 2712 if (!cleaned || cleaned.charAt(0) === '_' || cleaned === TYPE_MARKER || cleaned === paymentLabel) { 2713 return DEFAULT_AVAILABILITY_LABEL; 2714 } 2715 return cleaned; 2716 } 2717 2718 function visibleCartProperties(planId, variantId) { 2719 const properties = {};
2720 try { 2721 const contents = localizedContents(); 2722 const paymentLabel = resolvePaymentLabel(contents.payment_label); 2723 const availabilityLabel = resolveAvailabilityLabel(contents.availability_date_label, paymentLabel); 2724 const availabilityDate = availabilityDateText(planId); 2725 if (availabilityDate) properties[availabilityLabel] = availabilityDate; 2726 const payment = paymentText(planId, variantId); 2727 if (payment) properties[paymentLabel] = payment; 2728 } catch (error) {} 2729 return properties; 2730 } 2731 2732 function setJsonProperty(item, name, value) { 2733 const properties = item.properties && typeof item.properties === 'object' && !Array.isArray(item.properties) ? item.properties : {}; 2734 if (properties[name] === value) return false; 2735 properties[name] = value; 2736 item.properties = properties; 2737 return true; 2738 } 2739 2740 function coerceJsonNumbers(item) { 2741 if (item.id) item.id = Number(item.id); 2742 if (item.quantity) item.quantity = Number(item.quantity); 2743 } 2744 2745 function applyVisibleJsonProperties(item, planId, variantId) { 2746 const properties = visibleCartProperties(planId, variantId); 2747 let changed = false; 2748 for (const name of Object.keys(properties)) { 2749 if (setJsonProperty(item, name, properties[name])) changed = true; 2750 } 2751 return changed; 2752 } 2753 2754 function enrichJsonItem(item) { 2755 if (!item || typeof item !== 'object') return false; 2756 const variantId = Number(item.id); 2757 if (!Number.isFinite(variantId)) return false; 2758 const planId = findSellingPlanId(variantId); 2759 if (planId == null) return false; 2760 2761 if (cfg.is_selling_plan_removed_by_support) { 2762 const tagged = setJsonProperty(item, '_purchase_type', 'NM-preorder'); 2763 const typed = setJsonProperty(item, 'Type', 'Pre-order'); 2764 if (!tagged && !typed) return false; 2765 coerceJsonNumbers(item); 2766 return true; 2767 } 2768 2769 if (item.selling_plan != null && item.selling_plan !== '' && String(item.selling_plan) === String(planId)) return false; 2770 2771 setJsonProperty(item, '_purchase_type', 'NM-preorder'); 2772 if (item.selling_plan == null || item.selling_plan === '') item.selling_plan = Number(planId); 2773 if (item.properties._selling_plan_id == null) setJsonProperty(item, '_selling_plan_id', String(planId)); 2774 applyVisibleJsonProperties(item, planId, variantId); 2775 coerceJsonNumbers(item); 2776 return true; 2777 } 2778 2779 function enrichJson(data) { 2780 if (!data || typeof data !== 'object') return false; 2781 if (Array.isArray(data.items)) { 2782 let changed = false; 2783 for (const item of data.items) { 2784 if (enrichJsonItem(item)) changed = true; 2785 } 2786 return changed; 2787 } 2788 if (data.items && typeof data.items === 'object') return enrichJsonItem(data.items); 2789 return enrichJsonItem(data); 2790 } 2791 2792 function paramScopes(params) { 2793 const prefixes = []; 2794 const seen = {}; 2795 params.forEach(function (value, key) { 2796 const match = /^items\[(\d+)\]\[id\]$/.exec(key); 2797 if (match && !seen[match[1]]) { 2798 seen[match[1]] = true; 2799 prefixes.push('items[' + match[1] + ']'); 2800 } 2801 }); 2802 if (prefixes.length > 0) return prefixes; 2803 if (params.get('items[id]') != null) return ['items']; 2804 if (params.get('id') != null) return ['']; 2805 return []; 2806 } 2807 2808 function scopeKey(prefix, name) { 2809 return prefix ? prefix + '[' + name + ']' : name; 2810 } 2811 2812 function scopePropertyKey(prefix, name) { 2813 return prefix ? prefix + '[properties][' + name + ']' : 'properties[' + name + ']'; 2814 } 2815 2816 function setParam(params, key, value) { 2817 if (params.get(key) === value) return false; 2818 params.set(key, value); 2819 return true; 2820 } 2821 2822 function applyRemovedBySupportParams(params, prefix) { 2823 const tagged = setParam(params, scopePropertyKey(prefix, '_purchase_type'), 'NM-preorder'); 2824 const typed = setParam(params, scopePropertyKey(prefix, 'Type'), 'Pre-order'); 2825 return tagged || typed; 2826 } 2827 2828 function applyVisibleParamProperties(params, prefix, planId, variantId) { 2829 const properties = visibleCartProperties(planId, variantId); 2830 let changed = false;
2831 for (const name of Object.keys(properties)) { 2832 if (setParam(params, scopePropertyKey(prefix, name), properties[name])) changed = true; 2833 } 2834 return changed; 2835 } 2836 2837 function enrichParamScope(params, prefix, planId, variantId) { 2838 if (cfg.is_selling_plan_removed_by_support) return applyRemovedBySupportParams(params, prefix); 2839 2840 const existingPlan = params.get(scopeKey(prefix, 'selling_plan')); 2841 if (existingPlan != null && existingPlan !== '' && String(existingPlan) === String(planId)) return false; 2842 2843 let changed = setParam(params, scopePropertyKey(prefix, '_purchase_type'), 'NM-preorder'); 2844 if (existingPlan == null || existingPlan === '') { 2845 params.set(scopeKey(prefix, 'selling_plan'), String(planId)); 2846 changed = true; 2847 } 2848 if (params.get(scopePropertyKey(prefix, '_selling_plan_id')) == null) { 2849 params.set(scopePropertyKey(prefix, '_selling_plan_id'), String(planId)); 2850 changed = true; 2851 } 2852 if (applyVisibleParamProperties(params, prefix, planId, variantId)) changed = true; 2853 return changed; 2854 } 2855 2856 function enrichParams(params) { 2857 const scopes = paramScopes(params); 2858 let changed = false; 2859 for (const prefix of scopes) { 2860 const variantId = Number(params.get(scopeKey(prefix, 'id'))); 2861 if (!Number.isFinite(variantId)) continue; 2862 const planId = findSellingPlanId(variantId); 2863 if (planId == null) continue; 2864 if (enrichParamScope(params, prefix, planId, variantId)) changed = true; 2865 } 2866 return changed; 2867 } 2868 2869 function enrichBody(body) { 2870 if (typeof body === 'string') { 2871 let jsonData = null; 2872 try { 2873 jsonData = JSON.parse(body); 2874 } catch (error) { 2875 jsonData = null; 2876 } 2877 if (jsonData && typeof jsonData === 'object') { 2878 return enrichJson(jsonData) ? { body: JSON.stringify(jsonData), changed: true } : { body: body, changed: false }; 2879 } 2880 const params = new URLSearchParams(body); 2881 return enrichParams(params) ? { body: params.toString(), changed: true } : { body: body, changed: false }; 2882 } 2883 if (typeof FormData !== 'undefined' && body instanceof FormData) { 2884 return { body: body, changed: enrichParams(body) }; 2885 } 2886 if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams) { 2887 return { body: body, changed: enrichParams(body) }; 2888 } 2889 return { body: body, changed: false }; 2890 } 2891 2892 function extractRequestUrl(input) { 2893 if (typeof input === 'string') return input; 2894 if (typeof input?.url === 'string') return input.url; 2895 if (typeof input?.href === 'string') return input.href; 2896 return ''; 2897 } 2898 2899 function maybeEnrichFetchInit(input, init) { 2900 if (!isGuardActive() || !init || init.body == null) return init; 2901 const url = extractRequestUrl(input); 2902 if (!isCartAddUrl(url) || !shouldEnrich()) return init; 2903 const enriched = enrichBody(init.body); 2904 if (!enriched.changed) return init; 2905 return { ...init, body: enriched.body }; 2906 } 2907 2908 function installWrappers() { 2909 if (wrappersInstalled) return; 2910 wrappersInstalled = true; 2911 2912 const originalFetch = window.fetch; 2913 window.fetch = function (input, init) { 2914 let nextInit = init; 2915 try { 2916 nextInit = maybeEnrichFetchInit(input, init); 2917 } catch (error) {} 2918 return originalFetch.call(this || window, input, nextInit); 2919 }; 2920 2921 const xhrPrototype = window.XMLHttpRequest?.prototype; 2922 if (xhrPrototype) { 2923 const originalOpen = xhrPrototype.open; 2924 const originalSend = xhrPrototype.send; 2925 xhrPrototype.open = function () { 2926 try { 2927 this.__nmEarlyGuardUrl = arguments[1]; 2928 } catch (error) {} 2929 return originalOpen.apply(this, arguments); 2930 }; 2931 xhrPrototype.send = function (body) { 2932 try { 2933 if (isGuardActive() && body != null && this.__nmEarlyGuardUrl != null && isCartAddUrl(this.__nmEarlyGuardUrl) && shouldEnrich()) { 2934 const enriched = enrichBody(body); 2935 if (enriched.changed) return originalSend.call(this, enriched.body); 2936 } 2937 } catch (error) {} 2938 return originalSend.apply(this, arguments); 2939 }; 2940 } 2941 } 2942 2943 if (cfg?.override_cart_requests === true) installWrappers(); 2944 } catch (error) {} 2945})(window); 2946</script>
2946 2947<!-- END app snippet --> 2948<!-- BEGIN app snippet: wishlist-page-container -->
2948<script id="ReStock-wishlist-page-container"> 2949(function (window) { 2950 try { 2951 if (window.__nmWishlistPageContainer) return; 2952 2953 const CONTAINER_ID = 'nm-wishlist-page-root'; 2954 const TARGET_SELECTORS = ['main#MainContent', 'main', '[role="main"]']; 2955 const RELATIVE_PLACEMENTS = ['before', 'after', 'start', 'end']; 2956 2957 function trimTrailingSlash(path) { 2958 const value = String(path); 2959 return value.length > 1 && value.charAt(value.length - 1) === '/' ? value.slice(0, -1) : value; 2960 } 2961 2962 function stripRoutesRoot(pathname) { 2963 const root = window.Shopify?.routes?.root; 2964 if (typeof root !== 'string') return pathname; 2965 const prefix = trimTrailingSlash(root); 2966 if (prefix === '' || prefix === '/') return pathname; 2967 if (pathname === prefix) return '/'; 2968 return pathname.indexOf(prefix + '/') === 0 ? pathname.slice(prefix.length) : pathname; 2969 } 2970 2971 function isConfiguredPage(pagePath) { 2972 const pathname = window.location?.pathname; 2973 if (typeof pathname !== 'string') return false; 2974 return trimTrailingSlash(stripRoutesRoot(pathname)) === trimTrailingSlash(pagePath); 2975 } 2976 2977 function hasShareToken() { 2978 const search = window.location?.search; 2979 if (!search) return false; 2980 return !!new URLSearchParams(search).get('w'); 2981 } 2982 2983 function isBootable(wishlistConfig, sdkConfig) { 2984 if (!sdkConfig || typeof sdkConfig !== 'object') return false; 2985 if (sdkConfig.app_enabled !== true) return false; 2986 if (sdkConfig.is_suspended === true) return false; 2987 return wishlistConfig.is_service_active === true; 2988 } 2989 2990 function matchElement(selector) { 2991 try { 2992 return window.document.querySelector(selector) || null; 2993 } catch (error) { 2994 return null; 2995 } 2996 } 2997 2998 function configuredTarget(placement) { 2999 if (!placement || typeof placement !== 'object') return null; 3000 if (typeof placement.css_selector !== 'string' || placement.css_selector === '') return null; 3001 const element = matchElement(placement.css_selector); 3002 if (!element) return null; 3003 const relative = RELATIVE_PLACEMENTS.indexOf(placement.relative_placement) === -1 ? 'start' : placement.relative_placement; 3004 return { element: element, relative: relative }; 3005 } 3006 3007 function builtInTarget() { 3008 for (const selector of TARGET_SELECTORS) { 3009 const element = matchElement(selector); 3010 if (element) return { element: element, relative: 'start' }; 3011 } 3012 return null; 3013 } 3014 3015 function insertContainer(container, target) { 3016 if (target.relative === 'before' || target.relative === 'after') { 3017 const parent = target.element.parentNode; 3018 if (!parent) return false; 3019 parent.insertBefore(container, target.relative === 'before' ? target.element : target.element.nextSibling || null); 3020 return true; 3021 } 3022 target.element.insertBefore(container, target.relative === 'end' ? null : target.element.firstChild || null); 3023 return true; 3024 } 3025 3026 function createContainer(placement) { 3027 const target = configuredTarget(placement) || builtInTarget(); 3028 if (!target) return null; 3029 const container = window.document.createElement('div'); 3030 container.id = CONTAINER_ID; 3031 container.setAttribute('data-nm-container-source', 'fallback'); 3032 return insertContainer(container, target) ? container : null; 3033 } 3034 3035 function usablePagePath(wishlistConfig) { 3036 const myWishlist = wishlistConfig && typeof wishlistConfig === 'object' ? wishlistConfig.my_wishlist : null; 3037 return myWishlist && typeof myWishlist.page_path === 'string' ? myWishlist.page_path : ''; 3038 } 3039 3040 function wishlistPageConfig(wishlistConfig) { 3041 const pagePath = usablePagePath(wishlistConfig); 3042 return pagePath && isConfiguredPage(pagePath) ? wishlistConfig.my_wishlist : null; 3043 } 3044 3045 function armContainer(myWishlist) { 3046 const container = window.document.getElementById(CONTAINER_ID) || createContainer(myWishlist.container_placement); 3047 if (container) container.removeAttribute('data-nm-page-state'); 3048 } 3049 3050 function markInactive() { 3051 const container = window.document.getElementById(CONTAINER_ID); 3052 if (container) container.setAttribute('data-nm-page-state', 'inactive'); 3053 } 3054 3055 function dearmContainer() { 3056 const stale = window.document.getElementById(CONTAINER_ID); 3057 if (stale && stale.getAttribute('data-nm-container-source') === 'fallback') stale.remove(); 3058 else markInactive(); 3059 } 3060 3061 function ensure(wishlistConfig, sdkConfig) {
3062 try { 3063 const myWishlist = wishlistPageConfig(wishlistConfig); 3064 if (!myWishlist) { 3065 if (usablePagePath(wishlistConfig)) dearmContainer(); 3066 return; 3067 } 3068 const active = myWishlist.type === 'separate_page' || hasShareToken(); 3069 if (active && isBootable(wishlistConfig, sdkConfig)) armContainer(myWishlist); 3070 else markInactive(); 3071 } catch (error) {} 3072 } 3073 3074 window.__nmWishlistPageContainer = { v: 1, ensure: ensure }; 3075 3076 const metafields = window._ReStockConfig?._metafields; 3077 ensure(metafields?.wishlistConfig, metafields?.sdkConfig); 3078 } catch (error) {} 3079})(window); 3080</script>
3080 3081<!-- END app snippet --> 3082
3083<script src="https://cdn.shopify.com/extensions/01a0e83c-88a3-702e-8442-82641270f3fe/bestpush-110/assets/restock-sdk-loader.js?v=1790602660" defer></script>
3083 3084 3085<style> 3086 #nm-wishlist-page-root { 3087 min-height: 60vh; 3088 } 3089 3090 #nm-wishlist-page-root[data-nm-container-source="fallback"] { 3091 box-sizing: border-box; 3092 max-width: 1200px; 3093 margin: 0 auto; 3094 padding: 0 1.5rem; 3095 } 3096 3097 #nm-wishlist-page-root[data-nm-page-state="inactive"]:empty { 3098 display: none; 3099 } 3100 3101 #nm-wishlist-page-root:empty { 3102 display: flex; 3103 align-items: center; 3104 justify-content: center; 3105 } 3106 3107 #nm-wishlist-page-root:empty::after { 3108 content: ""; 3109 width: 36px; 3110 height: 36px; 3111 border: 3px solid #e3e3e3; 3112 border-top-color: #1773b0; 3113 border-radius: 50%; 3114 animation: nm-wishlist-page-boot-spin 0.7s linear infinite; 3115 } 3116 3117 @keyframes nm-wishlist-page-boot-spin { 3118 to { 3119 transform: rotate(360deg); 3120 } 3121 } 3122 3123 body:has(#nm-wishlist-page-root:not([data-nm-page-state="inactive"])) .main-page-title, 3124 body:has(#nm-wishlist-page-root:not([data-nm-page-state="inactive"])) .page-title, 3125 body:has(#nm-wishlist-page-root:not(:empty)) .main-page-title, 3126 body:has(#nm-wishlist-page-root:not(:empty)) .page-title { 3127 display: none !important; 3128 } 3129</style> 3130 3131 3132</div><div id="shopify-block-AZFd6aGFnS21FS1hVa__13768625480086291342" class="shopify-block shopify-app-block">
3132<script> 3133 window['ShopifyForms'] = { 3134 ...window['ShopifyForms'], 3135 currentPageType: "search" 3136 }; 3137</script>
3137 3138 3139 3140</div>
3140<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3140 3141</body> 3142</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.