PageSourceSearch

https://www.rockymountainoils.com/

html rockymountainoils.com collected 2026-10-03 21:22:52 UTC 1,514,940 bytes, 15,485 lines download raw bytes

1<!doctype html>
2<html class="no-js" lang="en">
3  <head>
4    
5
6
7<script>
8"Linux x86_64"==navigator.platform&&(YETT_BLACKLIST=[/moment/, /global.js/, /script.js/, /kkpeyzoq.js/, /visually-a.js/, /kkpeyzoq.js/, /visually-io.com/, /visually.esm.js/, /visually-a.esm.js/, /load.capi.rockymountainoils.com/, /slick.min.js/, /mm_412bb6e2-1d7f-4855-a404-67a8218945ce-32594417.js/, /Attentive/, /facets.js/, /owl.carousel.js/, /109404662474929.js/, /visually.js/, /slick.min.js/, /storefront/, /jquery-3.6.1.min.js/, /rockymountainoils/, /visually-a.esm.js/, /googletagmanager/, /bing/, /setubridgeapps/, /sentry/, /tiktokw/, /mm-uxrv/, /google/, /loomi-prod/, /polaranalytics/, /pinterest/, /googleadservices/, /jsdelivr/, /config-security/, /cdnhub/, /clarity/, /visually-io/, /main/, /yotpo/, /unified-tag.js/, /attn/, /boomerang/, /klaviyo/, /506/, /dixa/, /tiktok/, /facebook/, /storefront/, /google-analytics/, /pinimg/],function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.yett={})}(this,(function(t){"use strict";var e={blacklist:window.YETT_BLACKLIST,whitelist:window.YETT_WHITELIST},r={blacklisted:[]},n=function(t,r){return t&&(!r||"javascript/blocked"!==r)&&(!e.blacklist||e.blacklist.some((function(e){return e.test(t)})))&&(!e.whitelist||e.whitelist.every((function(e){return!e.test(t)})))},i=function(t){var r=t.getAttribute("src");return e.blacklist&&e.blacklist.every((function(t){return!t.test(r)}))||e.whitelist&&e.whitelist.some((function(t){return t.test(r)}))},c=new MutationObserver((function(t){t.forEach((function(t){for(var e=t.addedNodes,i=function(t){var i=e[t];if(1===i.nodeType&&"SCRIPT"===i.tagName){var c=i.src,o=i.type;n(c,o)&&(r.blacklisted.push(i.cloneNode()),i.type="javascript/blocked",i.addEventListener("beforescriptexecute",(function t(e){"javascript/blocked"===i.getAttribute("type")&&e.preventDefault(),i.removeEventListener("beforescriptexecute",t)})),i.parentElement.removeChild(i))}},c=0;c<e.length;c++)i(c)}))}));c.observe(document.documentElement,{childList:!0,subtree:!0});var o=document.createElement;document.createElement=function(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];if("script"!==e[0].toLowerCase())return o.bind(document).apply(void 0,e);var i=o.bind(document).apply(void 0,e),c=i.setAttribute.bind(i);return Object.defineProperties(i,{src:{get:function(){return i.getAttribute("src")},set:function(t){return n(t,i.type)&&c("type","javascript/blocked"),c("src",t),!0}},type:{set:function(t){var e=n(i.src,i.type)?"javascript/blocked":t;return c("type",e),!0}}}),i.setAttribute=function(t,e){"type"===t||"src"===t?i[t]=e:HTMLScriptElement.prototype.setAttribute.call(i,t,e)},i};var a=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)},l=new RegExp("[|\\{}()[\\]^$+*?.]","g");t.unblock=function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];n.length<1?(e.blacklist=[],e.whitelist=[]):(e.blacklist&&(e.blacklist=e.blacklist.filter((function(t){return n.every((function(e){return!t.test(e)}))}))),e.whitelist&&(e.whitelist=[].concat(a(e.whitelist),a(n.map((function(t){var r=".*"+t.replace(l,"\\$&")+".*";return e.whitelist.find((function(t){return t.toString()===r.toString()}))?null:new RegExp(r)})).filter(Boolean)))));for(var s=document.querySelectorAll('script[type="javascript/blocked"]'),u=0;u<s.length;u++){var p=s[u];i(p)&&(p.type="application/javascript",r.blacklisted.push(p),p.parentElement.removeChild(p))}var d=0;[].concat(a(r.blacklisted)).forEach((function(t,e){if(i(t)){var n=document.createElement("script");n.setAttribute("src",t.src),n.setAttribute("type","application/javascript"),document.head.appendChild(n),r.blacklisted.splice(e-d,1),d++}})),e.blacklist&&e.blacklist.length<1&&c.disconnect()},Object.defineProperty(t,"__esModule",{value:!0})})));
9  </script>
9
10
11
12                                                                                                                  
13
14    
15    
15<script async src="https://apis.google.com/js/platform.js?onload=renderOptIn"></script>
15
16    
16<script async src="//www.rockymountainoils.com/cdn/shop/t/383/assets/google-customer-reviews-opt-in.js?v=52521846660400274041785434195"></script>
16
17    
18    
19
20    
21    <meta charset="utf-8">
22    <meta name="google-site-verification" content="WWhxn_icXJEf5kyTLmNoD9v2dsBsn9PWagB3qNvdWsM">
23    <meta http-equiv="X-UA-Compatible" content="IE=edge">
24    <meta name="viewport" content="width=device-width,initial-scale=1">
25    <meta name="theme-color" content="">
26    <link rel="preconnect" href="https://cdn.shopify.com" crossorigin><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><link rel="preload" as="font" href="//www.rockymountainoils.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2" type="font/woff2" crossorigin><link rel="preload" as="font" href="//www.rockymountainoils.com/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2" type="font/woff2" crossorigin>
27
28
29
30
31<title>
32  100% Pure &amp; Natural Essential Oils | Rocky Mountain Oils
33</title>
34
35
36  <meta name="description" content="Rocky Mountain Oils provides 100% pure essential oils and essential oil products for home, health and beauty so that you can confidently care for yourself and your family.">
37
38<link rel="icon" type="image/png" href="//www.rockymountainoils.com/cdn/shop/files/favicon_8b484a6e-7120-4921-9a13-1ffef1a1c50e.png?crop=center&height=32&v=1671795913&width=32"><link rel="canonical" href="https://www.rockymountainoils.com/">
39<link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin>
40
41
42<meta property="og:site_name" content="Rocky Mountain Oils">
43<meta property="og:url" content="https://www.rockymountainoils.com/">
44<meta property="og:title" content="100% Pure &amp; Natural Essential Oils | Rocky Mountain Oils">
45<meta property="og:type" content="website">
46<meta property="og:description" content="Rocky Mountain Oils provides 100% pure essential oils and essential oil products for home, health and beauty so that you can confidently care for yourself and your family."><meta property="og:image" content="http://www.rockymountainoils.com/cdn/shop/files/rmo-logo_28785182-8413-4861-93fa-f4aaa5ce9a84.png?height=628&pad_color=fff&v=1671092957&width=1200">
47  <meta property="og:image:secure_url" content="https://www.rockymountainoils.com/cdn/shop/files/rmo-logo_28785182-8413-4861-93fa-f4aaa5ce9a84.png?height=628&pad_color=fff&v=1671092957&width=1200">
48  <meta property="og:image:width" content="1200">
49  <meta property="og:image:height" content="628"><meta name="twitter:card" content="summary_large_image">
50<meta name="twitter:title" content="100% Pure &amp; Natural Essential Oils | Rocky Mountain Oils">
51<meta name="twitter:description" content="Rocky Mountain Oils provides 100% pure essential oils and essential oil products for home, health and beauty so that you can confidently care for yourself and your family.">
52
53<meta name="apple-itunes-app" content="app-id=724532626">
54
55
56<script type="application/ld+json">
57  {
58    "@context": "http://schema.org",
59    "@type": "Organization",
60    "name": "Rocky Mountain Oils",
61    
62    "sameAs": [
63      "",
64      "https:\/\/facebook.com\/RockyMountainOils\/",
65      "https:\/\/pinterest.com\/rmoessentialoil\/",
66      "https:\/\/instagram.com\/rockymountainoils\/",
67      "",
68      "",
69      "",
70      "https:\/\/www.youtube.com\/channel\/UChhqiDDsyWcABEbZ0_Pk3og",
71      ""
72    ],
73    "url": "https:\/\/www.rockymountainoils.com"
74  }
75</script>
75
76  
76<script type="application/ld+json">
77    {
78      "@context": "http://schema.org",
79      "@type": "WebSite",
80      "name": "Rocky Mountain Oils",
81      "potentialAction": {
82        "@type": "SearchAction",
83        "target": "https:\/\/www.rockymountainoils.com\/search?q={search_term_string}",
84        "query-input": "required name=search_term_string"
85      },
86      "url": "https:\/\/www.rockymountainoils.com"
87    }
88  </script>
88
89    <style>:root{--bs-blue:#024ec0;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#024ec0;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,rgba(255,255,255,0.15),rgba(255,255,255,0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#024ec0;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}
89[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:1400px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}
89.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}
89.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}
89.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0,0,0,0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0,0,0,0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0,0,0,0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}
89.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#024ec0;border-color:#024ec0}
89.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#024ec0;border-color:#024ec0;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280,0,0,0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#024ec0;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#024ec0;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}
89.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url
89("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#024ec0;border-color:#024ec0}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#024ec0;border-color:#024ec0}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}
89.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#024ec0;border-color:#024ec0}.btn-outline-primary:hover{color:#fff;background-color:#024ec0;border-color:#024ec0}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#024ec0;border-color:#024ec0}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#024ec0;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}
89.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}
89.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#024ec0;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;background-color:#024ec0}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#024ec0}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#024ec0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}
89@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#024ec0}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}
89.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}
89.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#024ec0;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#024ec0;border-color:#024ec0}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#024ec0;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}
89.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#024ec0;border-color:#024ec0}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto 
89no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}
89.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}
89.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}
89.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0 .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}
89.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}
89.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1050;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem}.offcanvas-header .btn-close{padding:.5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#024ec0}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}
89.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#024ec0!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}
89.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}
89.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#024ec0!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.bg-primary{background-color:#024ec0!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}
89.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}
89.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}
89.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}
89.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}
89.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}
89.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}
89.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}
89}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}
8960%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;
89-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}
89to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}
89}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}
8940%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}
8940%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}
89}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}
89}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}
8960%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}
89}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}
89to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}
89to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}
89}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;
89-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}
89}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.slick-loading .slick-list{background:#fff url(https://www.rockymountainoils.com/cdn/shop/t/38/assets/ajax-loader.gif?v=344831891803776881693632779) center center no-repeat}@font-face{font-family:'slick';font-weight:400;font-style:normal;src:url(://cdn.shopify.com/s/files/1/0679/7908/4098/t/2/assets/slick.eot);src:url(://cdn.shopify.com/s/files/1/0679/7908/4098/t/2/assets/slick.eot?#iefix) format("embedded-opentype"),url(://cdn.shopify.com/s/files/1/0679/7908/4098/t/2/assets/slick.woff) format("woff"),url(://cdn.shopify.com/s/files/1/0679/7908/4098/t/2/assets/slick.ttf) format("truetype"),url(://cdn.shopify.com/s/files/1/0679/7908/4098/t/2/assets/slick.svg#slick) format("svg")}.slick-prev,.slick-next{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;height:20px;padding:0;-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%);cursor:pointer;color:transparent;border:none;outline:none;background:transparent}.slick-prev:hover,.slick-prev:focus,.slick-next:hover,.slick-next:focus{color:transparent;outline:none;background:transparent}.slick-prev:hover:before,.slick-prev:focus:before,.slick-next:hover:before,.slick-next:focus:before{opacity:1}.slick-prev.slick-disabled:before,.slick-next.slick-disabled:before{opacity:.25}.slick-prev:before,.slick-next:before{font-family:'slick';font-size:20px;line-height:1;opacity:.75;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:-25px}[dir='rtl'] .slick-prev{right:-25px;left:auto}.slick-prev:before{content:'←'}[dir='rtl'] .slick-prev:before{content:'→'}.slick-next{right:-25px}[dir='rtl'] .slick-next{right:auto;left:-25px}.slick-next:before{content:'→'}[dir='rtl'] .slick-next:before{content:'←'}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center}.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0 5px;padding:0;cursor:pointer}.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent}.slick-dots li button:hover,.slick-dots li button:focus{outline:none}.slick-dots li button:hover:before,.slick-dots li button:focus:before{opacity:1}.slick-dots li button:before{font-family:'slick';font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:'•';text-align:center;opacity:.25;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-dots li.slick-active button:before{opacity:.75;color:#000}.slick-list.draggable{padding:0!important}.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{-webkit-transform:translate3d(0,
890,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{display:table;content:''}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir='rtl'] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}
90.login-section{margin:60px 0 40px;display:inline-block;width:100%}.login-form-wrap{max-width:620px;padding:19px 40px 30px;margin:0 auto;box-shadow:0 0 20px 0 #4f000014;border:solid 1px #f2f2f2;background-color:#fff;margin-bottom:50px}.login-form-wrap h4{display:block;color:#000;font-size:36px;font-weight:400;text-transform:capitalize;text-align:center;padding-bottom:11px;line-height:49px;margin:0}.login-form-wrap p{color:#5d5d5d;font-weight:300;font-size:16px;line-height:22px;margin-bottom:33px;text-align:center}.login-form-wrap label{margin:0 0 8px;display:block}.fieldset>.field{margin:0 0 20px}.forgot-password .fieldset>.field{margin:0 0 40px}.login-form-wrap input[type=password],.login-form-wrap input[type=text],.login-form-wrap input[type=email]{background:#fff;background-clip:padding-box;border:1px solid #c2c2c2;border-radius:1px;font-size:12px;height:32px;line-height:1.42857143;padding:0 9px;vertical-align:baseline;width:100%;box-sizing:border-box;height:50px;color:#282828}.login-form-wrap input[type=password]::placeholder,.login-form-wrap input[type=text]::placeholder,.login-form-wrap input[type=email]::placeholder{color:#a5a5a5bf}.login-form-wrap input[type=checkbox]{height:20px;margin:5px 4px 0 0;position:relative;top:2px}#remember-me-box label{display:inline}.field .tooltipwrapper{position:relative;margin-left:-1px}strong.tooltiptoggle{font-size:12px}.tooltipwrapper .tooltipcontent{background:#fff;max-width:360px;min-width:210px;padding:12px 16px;z-index:100;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;margin-top:5px;left:0;top:100%}.form-login .primary,.form-login .secondary{text-align:center}.form-login .action.primary{background:#763d1a;border:1px solid #763d1a;color:#fff;cursor:pointer;font-weight:500;padding:11px 30px 12px;font-size:16px;margin:0 auto;width:56%;border-radius:3px;text-transform:uppercase;transition:.3s all;display:inline-block}.form-login .action.primary:hover{background:transparent;color:#763d1a}a.action.remind,.new-customer >p{color:#282828;font-size:12px;line-height:16px;font-weight:400;margin-top:13px;display:block}.new-customer >p{margin:6px 0 10px}.fieldset>.legend{font-weight:400;font-size:14px;line-height:19px;color:#282828;text-transform:uppercase;display:block;float:none;margin-bottom:21px}.create-account-section{margin:20px 0 40px}fieldset.fieldset.personal-info{margin-bottom:39px}.fieldset>.field.required>label:after,.fieldset>.fields>.field.required>label:after,.fieldset>.field._required>label:after,.fieldset>.fields>.field._required>label:after{content:'*';color:#e02b27;font-size:12px;margin:0 0 0 5px}.form__message.error{color:#721c24;background-color:#f8d7da;border:1px solid #f5c6cb;padding:15px;margin-bottom:20px}.form__message.success{color:#155724;background-color:#d4edda;border:1px solid #c3e6cb;padding:15px;margin-bottom:20px}.errors ul{margin:0;padding:0}.errors li{list-style:none}.shopify-challenge__container{padding:70px 0}.shopify-challenge__button{border-radius:2px;background:#763d1a;border:1px solid #763d1a;color:#fff;cursor:pointer;font-weight:500;padding:11px 30px 12px;font-size:16px;margin:0 auto;width:56%;border-radius:3px;text-transform:uppercase;transition:.3s all;display:inline-block;margin-top:20px!important}.shopify-challenge__button:hover{background:transparent;color:#763d1a}.account-menu{padding:15px;margin-bottom:20px;width:100%;border:solid 1px #e1e1e1;background-color:#fff}.account-menu h2{font-size:18px;font-stretch:normal;font-style:normal;line-height:1;letter-spacing:.63px;text-align:left;margin-bottom:10px}.account-menu ul{margin:0;padding:0}.account-menu ul li{list-style:none}.account-menu ul li a{margin-left:0!important;font-size:16px;line-height:30px;border-bottom:1px solid #e6e6e6;display:block;text-align:left;color:#212529}.account-menu ul li a:hover{color:#d62699}.__account h2{font-size:24px;color:#000;text-transform:capitalize}.__account table a{font-size:15px;color:#d62699}.__account table{border:solid 1px #e1e1e1;background-color:#fff}.__account .card{border:solid 1px #e1e1e1;background-color:#fff}.__account .card p{font-size:15px;line-height:20px;color:#4e4e4e;font-weight:300}.__account .card button.btn{font-size:13px;font-weight:500;line-height:1;border-radius:3px;padding:5px 20px!important;background:#763d1a;border:1px solid #763d1a;color:#fff;cursor:pointer;display:inline-block;box-sizing:border-box;transition:.4s all ease;text-transform:uppercase}.__account .__form label{color:#5d5d5d;font-weight:400;font-size:16px;line-height:30px}.__account .__form input{background:#f9f9f9;background-clip:padding-box;border:1px solid #e2e2e2;border-radius:1px;font-family:Montserrat,sans-serif;font-size:12px;height:32px;line-height:1.42857143;padding:0 9px;vertical-align:baseline;width:100%;box-sizing:border-box;height:50px;color:#282828}.__account .__form select{background:#f9f9f9;background-clip:padding-box;border:1px solid #e2e2e2;border-radius:1px;font-family:Montserrat,sans-serif;font-size:12px;height:32px;line-height:1.42857143;padding:0 9px;vertical-align:baseline;width:100%;box-sizing:border-box;height:50px;color:#282828}.__account .__form .__checkbox input{float:left;width:15px;height:15px;margin-top:7px;margin-right:10px}.__account .__form .btn{font-size:13px;font-weight:500;line-height:1;border-radius:3px;padding:10px 20px!important;background:#763d1a;border:1px solid #763d1a;color:#fff;cursor:pointer;display:inline-block;box-sizing:border-box;transition:.4s all ease;text-transform:uppercase;margin-top:15px}.__account .card button.btn:hover,.__account .__form .btn:hover{background:#fff;border:1px solid #763d1a;color:#763d1a}.__checkbox input{float:left;width:15px;height:15px;margin-top:7px;margin-right:10px}.add-address{font-size:13px;font-weight:500;line-height:1;border-radius:3px;padding:10px 20px!important;background:#763d1a;border:1px solid #763d1a;color:#fff;cursor:pointer;display:inline-block;box-sizing:border-box;transition:.4s all ease;text-transform:uppercase;float:right}.add-address:hover{background:#fff;border:1px solid #763d1a;color:#763d1a}</style>
91<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/style.css?v=174636506460032956221790008073" rel="stylesheet" type="text/css" media="all" />
92<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/style-two.css?v=128982019119815048721785434304" rel="stylesheet" type="text/css" media="all" />
93<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/style-three.css?v=65779355981942569911785434303" rel="stylesheet" type="text/css" media="all" />
94<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/shop-style.css?v=45651780894644379631785911844" rel="stylesheet" type="text/css" media="all" />
95<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/responsive-style.css?v=140572169052298177971785854417" rel="stylesheet" type="text/css" media="all" />
96<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/offers.css?v=139488457835823472051785434221" rel="stylesheet" type="text/css" media="all" />
97<link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/securely-checkout.css?v=42801585711833878161785434286" rel="stylesheet" type="text/css" media="all" />
98
99<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/global.js?v=86241992143886113901785434195" defer="defer"></script>
vendor: 1 bytes, line 99
99
100<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/jquery-3.6.1.min.js?v=125460993922723132401785434206" type="text/javascript"></script>
100
101
102    
102<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
102<meta name="facebook-domain-verification" content="oluk2fxx5d7edn2jvg83rnrg8v711t">
103<meta name="google-site-verification" content="z85ipM40aEKXy72fX2UF_nfQXSPIZL5I0LEVU64DPCU">
104<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/67979084098/digital_wallets/dialog">
105<meta id="in-context-paypal-metadata" data-shop-id="67979084098" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
106<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
106<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=36176194"></script>
106
107<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
108<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=36176194&shop_id=67979084098" crossorigin="anonymous"></script>
vendor: 1 bytes, line 108
108
109<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":67979084098,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/67979084098","merchantName":"Rocky Mountain Oils","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Rocky Mountain Oils","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 109
109
110<script id="shopify-features" type="application/json">{"accessToken":"c5c2e8c582015904409d7243adb9972c","betas":["rich-media-storefront-analytics"],"domain":"www.rockymountainoils.com","predictiveSearch":true,"shopId":67979084098,"locale":"en"}</script>
vendor: 1 bytes, line 110
110
111<script>var Shopify = Shopify || {};
112Shopify.shop = "rocky-mountain-oils.myshopify.com";
113Shopify.locale = "en";
114Shopify.currency = {"active":"USD","rate":"1.0"};
115Shopify.country = "US";
116Shopify.theme = {"name":"2026-08-26 - Rocky Mountain Oils (clean-up)","id":188727001455,"schema_name":"Rocky Mountain Oils","schema_version":"2.0.0","theme_store_id":null,"role":"main"};
117Shopify.theme.handle = "null";
118Shopify.theme.style = {"id":null,"handle":null};
119Shopify.cdnHost = "www.rockymountainoils.com/cdn";
120Shopify.routes = Shopify.routes || {};
121Shopify.routes.root = "/";
122Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
123Shopify.SignInWithShop = Shopify.SignInWithShop || {};
124Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
125Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 125
125
126<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 126
126
127<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 127
127
128<script>
129  window.ShopifyPay = window.ShopifyPay || {};
130  window.ShopifyPay.apiHost = "shop.app\/pay";
131  window.ShopifyPay.redirectState = null;
132</script>
vendor: 1 bytes, line 132
132
133<script>
134  window.Shopify = window.Shopify || {};
135  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
136  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
137  window.Shopify.SignInWithShop.eligible = true;
138</script>
vendor: 1 bytes, line 138
138
139<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
vendor: 1 bytes, line 139
139
140<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 140
140
141<script type="module">
142  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
143
144  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
145
146</script>
vendor: 1 bytes, line 146
146
147<script>
148  window.Shopify = window.Shopify || {};
149  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
150  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"]};
151</script>
vendor: 1 bytes, line 151
151
152<script>(function() {
153  var isLoaded = false;
154  function asyncLoad() {
155    if (isLoaded) return;
156    isLoaded = true;
157    var urls = ["https:\/\/cloudsearch-1f874.kxcdn.com\/shopify.js?srp=\/a\/search\u0026shop=rocky-mountain-oils.myshopify.com","\/\/cdn.shopify.com\/proxy\/adfff20bad1767e6d428f2e3027a41c4a767676459302f015783762733521f9a\/bingshoppingtool-t2app-prod.trafficmanager.net\/uet\/tracking_script?shop=rocky-mountain-oils.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA","https:\/\/seo.apps.avada.io\/scripttag\/avada-seo-installed.js?shop=rocky-mountain-oils.myshopify.com","https:\/\/cdn1.avada.io\/flying-pages\/module.js?shop=rocky-mountain-oils.myshopify.com","https:\/\/shop.orderdeadline.com\/app\/frontend\/js\/order-deadline.min.js?shop=rocky-mountain-oils.myshopify.com","https:\/\/cdn-loyalty.yotpo.com\/loader\/1mzqlpuEeK12ZA7oqhI7dA.js?shop=rocky-mountain-oils.myshopify.com","https:\/\/static.shareasale.com\/json\/shopify\/shareasale-tracking.js?sasmid=83601\u0026ssmtid=73099\u0026shop=rocky-mountain-oils.myshopify.com","https:\/\/cdn.attn.tv\/rockymountainoils\/dtag.js?shop=rocky-mountain-oils.myshopify.com"];
158    for (var i = 0; i < urls.length; i++) {
159      var s = document.createElement('script');
160      s.type = 'text/javascript';
161      s.async = true;
162      s.src = urls[i];
163      var x = document.getElementsByTagName('script')[0];
164      x.parentNode.insertBefore(s, x);
165    }
166  };
167  if(window.attachEvent) {
168    window.attachEvent('onload', asyncLoad);
169  } else {
170    window.addEventListener('load', asyncLoad, false);
171  }
172})();</script>
vendor: 1 bytes, line 172
172
173<script id="__st">var __st={"a":67979084098,"offset":-21600,"reqid":"f3e44af7-63f6-4294-8fed-499f683f564b-1791062567","pageurl":"www.rockymountainoils.com\/","u":"44c8254463f0","p":"home"};</script>
vendor: 1 bytes, line 173
173
174<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 174
174
175<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 175
175
176<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.rockymountainoils.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 176
176
177<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.rockymountainoils.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>
177<script crossorigin="anonymous" defer="defer" src="//www.rockymountainoils.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 177
177
178<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 178
178
179<script>
180  window.Shopify = window.Shopify || {};
181  window.Shopify.MCP = window.Shopify.MCP || {};
182  window.Shopify.MCP.enabled = true;
183  window.Shopify.MCP.shop = "rocky-mountain-oils.myshopify.com";
184  window.Shopify.MCP.mcpEndpoint = "https:\/\/www.rockymountainoils.com\/api\/mcp";
185  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
186</script>
vendor: 1 bytes, line 186
186
187<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.rockymountainoils.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
188</script>
vendor: 1 bytes, line 188
188
189<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.rockymountainoils.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
190</script>
vendor: 1 bytes, line 190
190
191<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
192  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);
193</script>
vendor: 1 bytes, line 193
193
194<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})}}));
195</script>
vendor: 1 bytes, line 195
195
196<script id='scb4127' type='text/javascript' async='' src='https://www.rockymountainoils.com/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
196<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.rockymountainoils.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
197<style id="shopify-accelerated-checkout-cart">
198        #shopify-buyer-consent {
199  margin-top: 1em;
200  display: inline-block;
201  width: 100%;
202}
203
204#shopify-buyer-consent.hidden {
205  display: none;
206}
207
208#shopify-subscription-policy-button {
209  background: none;
210  border: none;
211  padding: 0;
212  text-decoration: underline;
213  font-size: inherit;
214  cursor: pointer;
215}
216
217#shopify-subscription-policy-button::before {
218  box-shadow: none;
219}
220
221      </style>
222
223<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
223
224    <style>.hc-sale-tag{top:0;left:0;width:80px;height:80px;overflow:hidden;position:absolute!important;z-index:2}.hc-sale-tag span{right:10px;top:4px;transform:rotate(-45deg);position:absolute;display:block;width:100px;padding:4px 0;background-color:#fb485e;box-shadow:0 5px 10px rgba(0,0,0,.1);color:#fff;font-size:14px;font-weight:700;text-align:center}.hc-sale-tag span{background:#a4197a!important;color:#ffffff!important;}</style>
224<script>document.addEventListener("DOMContentLoaded",function(){"undefined"!=typeof hcVariants&&function(e){function t(e,t,a){return function(){if(a)return t.apply(this,arguments),e.apply(this,arguments);var n=e.apply(this,arguments);return t.apply(this,arguments),n}}var a=null;function n(){var t=window.location.search.replace(/.*variant=(\d+).*/,"$1");t&&t!=a&&(a=t,e(t))}window.history.pushState=t(history.pushState,n),window.history.replaceState=t(history.replaceState,n),window.addEventListener("popstate",n)}(function(e){let t=null;for(var a=0;a<hcVariants.length;a++)if(hcVariants[a].id==e){t=hcVariants[a];var n=document.querySelectorAll(".hc-product-page.hc-sale-tag");if(t.compare_at_price&&t.compare_at_price>t.price){var r=100*(t.compare_at_price-t.price)/t.compare_at_price;if(null!=r)for(a=0;a<n.length;a++)n[a].childNodes[0].textContent=r.toFixed(0)+"%",n[a].style.display="block";else for(a=0;a<n.length;a++)n[a].style.display="none"}else for(a=0;a<n.length;a++)n[a].style.display="none";break}})});</script>
224
225
226    
227    
227<script>
228    
229    
230    
231    
232    
233    
234    var gsf_conversion_data = {page_type : 'home', event : 'page_view', data : {product_data : [{variant_id : 51753324347759, product_id : 8025526305090, name : "1/4oz Plastic Blending Bottle", price : "0.95", currency : "USD", sku : "PBBOTT-M8ML", brand : "Rocky Mountain Oils", variant : "1 pack", category : "Bottle"}, {variant_id : 47158794846530, product_id : 8870804783426, name : "16oz Spray Bottle", price : "6.76", currency : "USD", sku : "EPLSPY-M16", brand : "Rocky Mountain Oils", variant : "16oz", category : "Glass Bottle"}], total_price :"7.71", shop_currency : "USD"}};
235    
236    
237</script>
237
238    
238<script async src="https://cdn-widgetsrepository.yotpo.com/v1/loader/lJQvWsNScp9JikHPae5aRIjveHBjpzkexd8mF1de" type="text/javascript"></script>
238
239
240<style>
241  h4.yotpo-review-title:empty { display: none !important; }
242</style>
243
244<script>
245  (function () {
246    function normalize(s) {
247      return (s || '').replace(/\s+/g, ' ').trim();
248    }
249    function isScrollable(el) {
250      var s = window.getComputedStyle(el);
251      var vy = (s.overflowY === 'auto' || s.overflowY === 'scroll') && el.scrollHeight > el.clientHeight + 1;
252      var vx = (s.overflowX === 'auto' || s.overflowX === 'scroll') && el.scrollWidth > el.clientWidth + 1;
253      return vy || vx;
254    }
255    function hasFocusable(el) {
256      return !!el.querySelector('a[href], button, input, select, textarea, [tabindex]');
257    }
258
259    function run() {
260      var i, el;
261
262      var titles = document.querySelectorAll('h4.yotpo-review-title');
263      for (i = 0; i < titles.length; i++) {
264        el = titles[i];
265        if (!el.querySelector('*') && !el.textContent.trim() && el.parentNode) {
266          el.parentNode.removeChild(el);
267        }
268      }
269
270      var btns = document.querySelectorAll('.yotpo-widget-instance button[aria-label]');
271      for (i = 0; i < btns.length; i++) {
272        el = btns[i];
273        var label = normalize(el.getAttribute('aria-label'));
274        var visible = normalize(el.textContent);
275        if (label && visible && label.toLowerCase().indexOf(visible.toLowerCase()) === -1) {
276          el.setAttribute('aria-label', visible + ', ' + label);
277        }
278      }
279
280      var widgets = document.querySelectorAll('.yotpo-widget-instance');
281      for (var w = 0; w < widgets.length; w++) {
282        var els = widgets[w].querySelectorAll('div, ul, ol, section, dl');
283        for (i = 0; i < els.length; i++) {
284          el = els[i];
285          if (!el.hasAttribute('tabindex') && isScrollable(el) && !hasFocusable(el)) {
286            el.setAttribute('tabindex', '0');
287            if (!el.hasAttribute('role') && el.tagName !== 'UL' && el.tagName !== 'OL' && el.tagName !== 'DL') {
288              el.setAttribute('role', 'group');
289            }
290            if (!el.hasAttribute('aria-label')) {
291              el.setAttribute('aria-label', 'Scrollable review content, use arrow keys to scroll');
292            }
293          }
294        }
295      }
296
297      var lists = document.querySelectorAll('ul, ol, dl');
298      for (i = 0; i < lists.length; i++) {
299        el = lists[i];
300        var ours = el.getAttribute('data-rmo-empty-list') === '1';
301        if (el.getAttribute('role') && !ours) continue;
302        if (!el.closest || !el.closest('[class*="yotpo"], [id*="yotpo"]')) continue;
303        var hasItem = el.tagName === 'DL' ? el.querySelector('dt, dd') : el.querySelector('li, [role="listitem"]');
304        if (!hasItem) {
305          el.setAttribute('role', 'presentation');
306          el.setAttribute('data-rmo-empty-list', '1');
307        } else if (ours) {
308          el.removeAttribute('role');
309          el.removeAttribute('data-rmo-empty-list');
310        }
311      }
312    }
313
314    function init() {
315      if (!document.querySelector('.yotpo-widget-instance')) return;
316      var t;
317      function schedule() { clearTimeout(t); t = setTimeout(run, 400); }
318      schedule();
319      new MutationObserver(schedule).observe(document.body, { childList: true, subtree: true });
320    }
321
322    if (document.readyState === 'loading') {
323      document.addEventListener('DOMContentLoaded', init);
324    } else {
325      init();
326    }
327  })();
328</script>
328
329
330    
330<script async type="text/javascript" src="//www.rockymountainoils.com/cdn/shop/t/383/assets/clarity.js?v=116180266523842809431785434162"></script>
330
331
332  <!-- BEGIN app block: shopify://apps/essential-a-b-testing/blocks/ab-testing/0154ac6b-7b9c-4958-8219-ed5b06e6d463 -->
332<script type="text/javascript">
333  var eaABtEmbdScrV=(function(){"use strict";var I=Object.defineProperty;var E=(l,a,d)=>a in l?I(l,a,{enumerable:!0,configurable:!0,writable:!0,value:d}):l[a]=d;var h=(l,a,d)=>E(l,typeof a!="symbol"?a+"":a,d);class l{constructor(){h(this,"selectors",["#PBarNextFrameWrapper","#preview-bar-iframe"]);h(this,"keepLookingForMs",1e4)}hide(){return Promise.all(this.selectors.map(e=>this.waitAndHideElement(e)))}waitAndHideElement(e){return new Promise(t=>{let s=0;const o=c=>{c.dataset.eaAbPbHidden!=="1"&&(c.dataset.eaAbPbHidden="1",c.style.display="none")},i=document.querySelector(e);if(i){o(i),t(!0);return}const n=new MutationObserver(()=>{const c=document.querySelector(e);c&&(o(c),window.clearTimeout(s),n.disconnect(),t(!0))});n.observe(document.documentElement,{childList:!0,subtree:!0}),s=window.setTimeout(()=>{n.disconnect(),t(!1)},this.keepLookingForMs)})}}class a{static clearIfStale(e){if(e===0||Shopify.theme.role==="main")return!1;const t=new URL(window.location.href);return t.searchParams.set("preview_theme_id",""),window.location.replace(t.toString()),!0}}const d=/\b(googlebot|adsbot-google|google-adsbot|mediapartners-google|google-inspectiontool|googleother|storebot-google|google-read-aloud|googleweblight|googlepage|google-adwords(?:-[a-z0-9-]+)?|bingbot|slurp|duckduckbot|baiduspider|yandex(?:bot|images)|sogou|exabot|applebot|petalbot|ahrefsbot|semrushbot|mj12bot|dotbot|seznambot|rogerbot|linkdexbot|facebookexternalhit|facebot|linkedinbot|twitterbot|pinterest|redditbot|discordbot|slackbot|whatsapp|telegrambot|embedly|quora-link-preview|outbrain|nuzzel|flipboardproxy|vkshare)\b/i;class m{static shouldProcessRequest(e){return!(this.isBot()||!this.canPersist()||this.isInDesignMode(e)||this.isAppPreview())}static isBot(){return d.test(navigator.userAgent)}static canPersist(){try{const e="__essential-ab-testing-persistance__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch{return!1}}static isInDesignMode(e){return e.request.designMode}static isAppPreview(){return new URLSearchParams(window.location.search).get("eaPreview")==="true"}}var u=(r=>(r.TEMPLATE="template",r.THEME="theme",r))(u||{});class f{static themeGid(e){return`gid://shopify/OnlineStoreTheme/${e}`}static themeId(e){return e.replace("gid://shopify/OnlineStoreTheme/","")}}class p{static handle(e,t,s){switch(e.type){case u.TEMPLATE:this.handleTemplate(e,t,s);return;case u.THEME:this.handleTheme(e,t);return}}static handleTemplate(e,t,s){if(t!=="a"&&t!=="b")return;const i=e.params[t];if(i.name!==s.template.name||i.suffix===s.template.suffix)return;const n=new URL(window.location.href);n.searchParams.set("view",i.suffix??"__DEFAULT"),window.location.replace(n.toString())}static handleTheme(e,t){if(t!=="a"&&t!=="b")return;const o=e.params[t];if(o===f.themeGid(Shopify.theme.id))return;const i=f.themeId(o),n=new URL(window.location.href);n.searchParams.set("preview_theme_id",i),window.location.replace(n.toString())}}class g{constructor(e){h(this,"tests");this.tests=e}find(e){return this.tests.find(t=>{switch(t.type){case u.TEMPLATE:return this.testMatchesTemplate(t.params,e);case u.THEME:return this.testMatchesTheme(t.params)}return!1})}testMatchesTemplate(e,t){return e.themeId!==f.themeGid(Shopify.theme.id)?!1:e.a.name===t.template.name&&e.a.suffix===t.template.suffix||e.b.name===t.template.name&&e.b.suffix===t.template.suffix}testMatchesTheme(e){const t=f.themeGid(Shopify.theme.id);return e.a===t||e.b===t}}class w{static pick(e){return Math.random()<=e.aPercentage/100?"a":"b"}}class b{static generate(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():typeof crypto<"u"&&crypto.getRandomValues?"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(+e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>+e/4).toString(16)):"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}}class x{constructor(e){h(this,"key");this.key=`essential-ab-testing-${e}`}get(){const e=localStorage.getItem(this.key);if(e)try{return JSON.parse(e)}catch{}}getOrMake(){const e=this.get();return e||{id:b.generate(),createdAt:new Date,tests:[]}}
333getTestVariant(e){const t=this.get();if(!t)return;const o=(t.tests??[]).find(i=>i.id==e);return o?o.variant:void 0}setTestVariant(e,t){const s=this.getOrMake();s.tests.push({id:e,variant:t,createdAt:new Date}),localStorage.setItem(this.key,JSON.stringify(s))}onlyKeepTests(e){const t=this.get();if(!t||t.tests.length==0)return 0;const s=t.tests.filter(i=>e.includes(i.id)),o=t.tests.length-s.length;return o>0&&(t.tests=s,localStorage.setItem(this.key,JSON.stringify(t))),o}}const y=50,T=200;function S(r){if(typeof Shopify<"u"&&Shopify.theme){r();return}let e=0;const t=setInterval(()=>{e++,typeof Shopify<"u"&&Shopify.theme?(clearInterval(t),r()):e>=T&&clearInterval(t)},y)}function v(r,e){if(!m.shouldProcessRequest(r))return;new l().hide();const t=new x(r.shopId),s=t.onlyKeepTests(e.map(c=>c.id));if(a.clearIfStale(s))return;const i=new g(e).find(r);if(!i)return;let n=t.getTestVariant(i.id);n||(n=w.pick(i),t.setTestVariant(i.id,n)),p.handle(i,n,r)}function P(r,e){S(()=>v(r,e))}return P})();
334
335  eaABtEmbdScrV(
336    {
337      shopId: 67979084098,
338      request: {
339        designMode: false,
340        visualPreviewMode: false,
341      },
342      template: {
343        directory: null,
344        name: "index",
345        suffix: null,
346      }
347    },
348    JSON.parse('[{"id":"e0a108d6-079e-4803-9397-81cfd7850b7d","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-carrier-oil-vari.json","name":"product","suffix":"a-test-carrier-oil-vari"},"b":{"template":"templates/product.b-test-carrier-oil-vari.json","name":"product","suffix":"b-test-carrier-oil-vari"}}},{"id":"0fb7dbf3-563e-4219-8e97-f5d5058835c1","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-cucumber-seed.json","name":"product","suffix":"a-test-cucumber-seed"},"b":{"template":"templates/product.b-test-cucumber-seed.json","name":"product","suffix":"b-test-cucumber-seed"}}},{"id":"7f9c3410-e2c8-4076-9352-ce1d421ecc28","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-minty-clean.json","name":"product","suffix":"a-test-minty-clean"},"b":{"template":"templates/product.b-test-minty-clean.json","name":"product","suffix":"b-test-minty-clean"}}},{"id":"45d11ca1-1ee4-4004-986d-c9261c0f71e7","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-juniper-berry.json","name":"product","suffix":"a-test-juniper-berry"},"b":{"template":"templates/product.b-test-juniper-berry.json","name":"product","suffix":"b-test-juniper-berry"}}},{"id":"080c0a0c-b269-487e-97cc-1646ae20fa0a","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-organic-esse-kit.json","name":"product","suffix":"a-test-organic-esse-kit"},"b":{"template":"templates/product.b-test-organic-esse-kit.json","name":"product","suffix":"b-test-organic-esse-kit"}}},{"id":"92b3a305-addb-45ca-8c6f-d0fa01b88874","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-toasted-coco.json","name":"product","suffix":"a-test-toasted-coco"},"b":{"template":"templates/product.b-test-toasted-coco.json","name":"product","suffix":"b-test-toasted-coco"}}},{"id":"4d183565-df68-40eb-9255-ec3c849d9585","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-cypress.json","name":"product","suffix":"a-test-cypress"},"b":{"template":"templates/product.b-test-cypress.json","name":"product","suffix":"b-test-cypress"}}},{"id":"664019a4-dc4f-4645-9099-be739b8abf27","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-melissa.json","name":"product","suffix":"a-test-melissa"},"b":{"template":"templates/product.b-test-melissa.json","name":"product","suffix":"b-test-melissa"}}},{"id":"564edd92-0ead-4aba-b467-ccdb3fa2117d","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-jasmine.json","name":"product","suffix":"a-test-jasmine"},"b":{"template":"templates/product.b-test-jasmine.json","name":"product","suffix":"b-test-jasmine"}}},{"id":"5f59bc53-489d-45f7-9bdb-19b2ec9e3014","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-majestic-breeze.json","name":"product","suffix":"a-test-majestic-breeze"},"b":{"template":"templates/product.b-test-majestic-breeze.json","name":"product","suffix":"b-test-majestic-breeze"}}}
348,{"id":"1bb1583a-f905-4859-ab16-b4e66036e921","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-blossoms.json","name":"product","suffix":"a-test-blossoms"},"b":{"template":"templates/product.b-test-blossoms.json","name":"product","suffix":"b-test-blossoms"}}},{"id":"cd8b15b6-4e0e-4fe4-8cbf-d4ccb2b3ff6e","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-fco-carrier-oil.json","name":"product","suffix":"a-test-fco-carrier-oil"},"b":{"template":"templates/product.b-test-fco-carrier-oil.json","name":"product","suffix":"b-test-fco-carrier-oil"}}},{"id":"01db657a-1612-4b6c-aad2-c89913695628","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-eucalyptus-citri.json","name":"product","suffix":"a-test-eucalyptus-citri"},"b":{"template":"templates/product.b-test-eucalyptus-citri.json","name":"product","suffix":"b-test-eucalyptus-citri"}}},{"id":"191b5f4a-3318-46cf-a815-69e7b37208de","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-marjoram.json","name":"product","suffix":"a-test-marjoram"},"b":{"template":"templates/product.b-test-marjoram.json","name":"product","suffix":"b-test-marjoram"}}},{"id":"6a1ee9af-71ea-440f-9a58-acffbe4f758b","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/183782343023","a":{"template":"templates/product.a-test-jojoba.json","name":"product","suffix":"a-test-jojoba"},"b":{"template":"templates/product.b-test-jojoba.json","name":"product","suffix":"b-test-jojoba"}}},{"id":"d68aee9f-94c3-41dc-bb10-202b7afffc1e","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.json","name":"product","suffix":null},"b":{"template":"templates/product.price-above-ratings.json","name":"product","suffix":"price-above-ratings"}}},{"id":"21efb2f9-868d-4b78-8703-beb0e0f5c267","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-arcticrose.json","name":"product","suffix":"a-test-arcticrose"},"b":{"template":"templates/product.b-test-actricrose.json","name":"product","suffix":"b-test-actricrose"}}},{"id":"9c191335-a2f5-45f3-8b43-d87787f90267","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-balsamofperu.json","name":"product","suffix":"a-test-balsamofperu"},"b":{"template":"templates/product.b-test-balsamofperu.json","name":"product","suffix":"b-test-balsamofperu"}}},{"id":"4711bdd8-4be9-448f-a1e4-c93b10fced4c","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-basil.json","name":"product","suffix":"a-test-basil"},"b":{"template":"templates/product.b-test-basil.json","name":"product","suffix":"b-test-basil"}}},{"id":"7efbec66-42f3-4d74-ada5-22efa7a0c59c","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-bluetansy.json","name":"product","suffix":"a-test-bluetansy"},"b":{"template":"templates/product.b-test-bluetansy.json","name":"product","suffix":"b-test-bluetansy"}}},{"id":"3000fb0d-2e41-437a-a079-b6d842dc97be","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-citronella.json","name":"product","suffix":"a-test-citronella"},"b":{"template":"templates/product.b-test-citronella.json","name":"product","suffix":"b-test-citronella"}}},{"id":"19e188c4-89f0-4871-bde0-81c021b5b0df","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-germanchamomile.json","name":"product","suffix":"a-test-germanchamomile"},"b":{"template":"templates/product.b-test-germanchamomile.json","name":"product","suffix":"b-test-germanchamomile"}}},{"id":"a9f9a46b-9571-46f1-b415-c14f9fadad8b","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-holybasil.json","name":"product","suffix":"a-test-holybasil"},"b":{"template":"templates/product.b-test-holybasil.json","name":"product","suffix":"b-test-holybasil"}}},{"id":"ffd07d5a-9309-4c02-8eb5-25b699ca0ca5","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-peaceandquiet.json","name":"product","suffix":"a-test-peaceandquiet"},"b":{"template":"templates/product.b-test-peaceandquiet.json","name":"product","suffix":"b-test-peaceandquiet"}}}
348,{"id":"1d6aa0c2-1c1c-4663-872c-db55d0e0118a","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-sprayhead.json","name":"product","suffix":"a-test-sprayhead"},"b":{"template":"templates/product.b-test-sprayhead.json","name":"product","suffix":"b-test-sprayhead"}}},{"id":"f3cae3fa-b038-4e6a-b0da-488ac36a1567","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-magnolia.json","name":"product","suffix":"a-test-magnolia"},"b":{"template":"templates/product.b-test-magnolia.json","name":"product","suffix":"b-test-magnolia"}}},{"id":"06906f20-b832-4451-b5f7-31a3a703311f","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-mandarin.json","name":"product","suffix":"a-test-mandarin"},"b":{"template":"templates/product.b-test-mandarin.json","name":"product","suffix":"b-test-mandarin"}}},{"id":"0a825b9d-0627-4aa3-930b-49220c211f9a","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-tangerine.json","name":"product","suffix":"a-test-tangerine"},"b":{"template":"templates/product.b-test-tangerine.json","name":"product","suffix":"b-test-tangerine"}}},{"id":"a6f6e100-84ad-41cc-8fc8-df34f3bfbd07","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-blendofmelissa.json","name":"product","suffix":"a-test-blendofmelissa"},"b":{"template":"templates/product.b-test-blendofmelissa.json","name":"product","suffix":"b-test-blendofmelissa"}}},{"id":"ecd648d6-bc2f-40a8-af94-bb25400e8d72","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-gingerroot.json","name":"product","suffix":"a-test-gingerroot"},"b":{"template":"templates/product.b-test-gingerroot.json","name":"product","suffix":"b-test-gingerroot"}}},{"id":"0af09b61-bfcd-4324-938f-bcddf7cd0b4d","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-meadowbreeze.json","name":"product","suffix":"a-test-meadowbreeze"},"b":{"template":"templates/product.b-test-meadowbreeze.json","name":"product","suffix":"b-test-meadowbreeze"}}},{"id":"2bc8dc99-bf45-465a-a90b-4104bff84b0a","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-neroli.json","name":"product","suffix":"a-test-neroli"},"b":{"template":"templates/product.b-test-neroli.json","name":"product","suffix":"b-test-neroli"}}},{"id":"d763c5cc-c028-4641-86b4-b78805a08ed5","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-oregano.json","name":"product","suffix":"a-test-oregano"},"b":{"template":"templates/product.b-test-oregano.json","name":"product","suffix":"b-test-oregano"}}},{"id":"10d84a6f-081d-4f5b-9807-6148796ef899","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-relieveme.json","name":"product","suffix":"a-test-relieveme"},"b":{"template":"templates/product.b-test-relieveme.json","name":"product","suffix":"b-test-relieveme"}}},{"id":"0a28b042-85c9-4732-ab92-85c3f912b8ad","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-thyme.json","name":"product","suffix":"a-test-thyme"},"b":{"template":"templates/product.b-test-thyme.json","name":"product","suffix":"b-test-thyme"}}},{"id":"2b3715c0-7130-494c-bcec-1e1913b7efd0","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-aromahangingcardiff.json","name":"product","suffix":"a-test-aromahangingcardiff"},"b":{"template":"templates/product.b-test-aromahangingcardiff.json","name":"product","suffix":"b-test-aromahangingcardiff"}}},{"id":"a8309aaa-90d3-423e-b5c2-1689d7691b9e","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-blendofcinnamon.json","name":"product","suffix":"a-test-blendofcinnamon"},"b":{"template":"templates/product.b-test-blendofcinnamon.json","name":"product","suffix":"b-test-blendofcinnamon"}}},{"id":"0d257723-eb33-4b42-97f6-2bb6f8692029","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-brainstorm.json","name":"product","suffix":"a-test-brainstorm"},"b":{"template":"templates/product.b-test-brainstorm.json","name":"product","suffix":"b-test-brainstorm"}}},{"id":"278a175e-5ce2-4eeb-8312-5145a1cb5f88","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-carrotseed.json","name":"product","suffix":"a-test-carrotseed"},"b":{"template":"templates/product.b-test-carrotseed.json","name":"product","suffix":"b-test-carrotseed"}}},{"id":"75b23942-a8a8-432b-a015-4a668d58a96c","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-cardamom.json","name":"product","suffix":"a-test-cardamom"},"b":{"template":"templates/product.b-test-cardamom.json","name":"product","suffix":"b-test-cardamom"}}},{"id":"3d5ae5df-842d-418e-ab84-205971d5680c","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-cinnamonleaf.json","name":"product","suffix":"a-test-cinnamonleaf"},"b":{"template":"templates/product.b-test-cinnamonleaf.json","name":"product","suffix":"b-test-cinnamonleaf"}}},{"id":"3c6b638a-c8f3-49b6-bb49-3845c0ecbe28","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-coriander.json","name":"product","suffix":"a-test-coriander"},"b":{"template":"templates/product.b-test-coriander.json","name":"product","suffix":"b-test-coriander"}}},{"id":"c92966d2-f5ff-4a2a-a13c-d6f4120ddcd1","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-emptyroll-onbottle.json","name":"product","suffix":"a-test-emptyroll-onbottle"},"b":{"template":"templates/product.b-test-emptyroll-onbottle.json","name":"product","suffix":"b-test-emptyroll-onbottle"}}},{"id":"a0d9106c-7fff-4e40-a72e-1efc56eb662d","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-fennelseed.json","name":"product","suffix":"a-test-fennelseed"},"b":{"template":"templates/product.b-test-fennelseed.json","name":"product","suffix":"b-test-fennelseed"}}},{"id":"895e1a10-bc15-4010-88f4-d12aea992271","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-hyssop.json","name":"product","suffix":"a-test-hyssop"},"b":{"template":"templates/product.b-test-hyssop.json","name":"product","suffix":"b-test-hyssop"}}},{"id":"8ee05d77-41bf-416e-a034-3786263ee5de","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-kidsdailykit.json","name":"product","suffix":"a-test-kidsdailykit"},"b":{"template":"templates/product.b-test-kidsdailykit.json","name":"product","suffix":"b-test-kidsdailykit"}}},{"id":"4f79f8a5-0955-41c9-a964-81ba6750eb83","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-limoncello.json","name":"product","suffix":"a-test-limoncello"},"b":{"template":"templates/product.b-test-limoncello.json","name":"product","suffix":"b-test-limoncello"}}},{"id":"7e42f7c9-748f-47f4-980b-180ca0be7100","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-naturallaundrybundle.json","name":"product","suffix":"a-test-naturallaundrybundle"},"b":{"template":"templates/product.b-test-naturallaundrybundle.json","name":"product","suffix":"b-test-naturallaundrybundle"}}}
348,{"id":"1688c811-75d2-4e2b-b42b-689ed4b332de","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-mindalive.json","name":"product","suffix":"a-test-mindalive"},"b":{"template":"templates/product.b-test-mindalive.json","name":"product","suffix":"b-test-mindalive"}}},{"id":"d39fabd1-613f-4280-900c-3a5f98b69b89","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-myrtle.json","name":"product","suffix":"a-test-myrtle"},"b":{"template":"templates/product.b-test-myrtle.json","name":"product","suffix":"b-test-myrtle"}}},{"id":"c28300e2-1001-4884-aab6-cdef1fc008af","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-organicesseoilkit4-pack.json","name":"product","suffix":"a-test-organicesseoilkit4-pack"},"b":{"template":"templates/product.b-test-organicesseoilkit4-pack.json","name":"product","suffix":"b-test-organicesseoilkit4-pack"}}},{"id":"9849f4e3-d14b-44d9-9020-9a6633b2641d","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-palosanto.json","name":"product","suffix":"a-test-palosanto"},"b":{"template":"templates/product.b-test-palosanto.json","name":"product","suffix":"b-test-palosanto"}}},{"id":"51da63c9-c90c-4130-8578-af6db9646844","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-purification.json","name":"product","suffix":"a-test-purification"},"b":{"template":"templates/product.b-test-purification.json","name":"product","suffix":"b-test-purification"}}},{"id":"3b22db87-72bd-43d7-b101-fe940e73a26e","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-summerscentskit.json","name":"product","suffix":"a-test-summerscentskit"},"b":{"template":"templates/product.b-test-summerscentskit.json","name":"product","suffix":"b-test-summerscentskit"}}},{"id":"d8a347fc-c9c4-4683-bd3d-3a0a5d789aac","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-vitexberry.json","name":"product","suffix":"a-test-vitexberry"},"b":{"template":"templates/product.b-test-vitexberry.json","name":"product","suffix":"b-test-vitexberry"}}},{"id":"7289a41d-0d8a-4ea5-a00a-a231b832ba93","aPercentage":50,"type":"template","params":{"themeId":"gid://shopify/OnlineStoreTheme/185166496111","a":{"template":"templates/product.a-test-warmcozy.json","name":"product","suffix":"a-test-warmcozy"},"b":{"template":"templates/product.b-test-warmcozy.json","name":"product","suffix":"b-test-warmcozy"}}}]')
349  );
350</script>
350<!-- END app block --><!-- BEGIN app block: shopify://apps/xcloud-search-filter/blocks/cloudsearch_opt/8ddbd0bf-e311-492e-ab28-69d0ad268fac -->
350<script type="application/json" id="cloudsearch-settings">{"srp":"\/a\/search"}</script>
350<!-- END app block --><!-- BEGIN app block: shopify://apps/eg-auto-add-to-cart/blocks/app-embed/0f7d4f74-1e89-4820-aec4-6564d7e535d2 -->
351
352
353
354
355
356
357
358
359
360
361
362  
363    
363<script
364      async
365      type="text/javascript"
366      src="https://cdn.506.io/eg/script.js?shop=rocky-mountain-oils.myshopify.com&v=12"
367    ></script>
367
368  
369
370
371
372  <meta id="easygift-shop" itemid="c2hvcF8kXzE3OTEwNjI1Njc=" content="{&quot;isInstalled&quot;:true,&quot;installedOn&quot;:&quot;2023-08-12T00:15:59.986Z&quot;,&quot;appVersion&quot;:&quot;3.0&quot;,&quot;subscriptionName&quot;:&quot;Unlimited&quot;,&quot;cartAnalytics&quot;:true,&quot;freeTrialEndsOn&quot;:null,&quot;settings&quot;:{&quot;reminderBannerStyle&quot;:{&quot;position&quot;:{&quot;horizontal&quot;:&quot;right&quot;,&quot;vertical&quot;:&quot;bottom&quot;},&quot;backgroundColor&quot;:&quot;#FFFFFF&quot;,&quot;borderRadius&quot;:null,&quot;padding&quot;:null,&quot;headerFontSize&quot;:null,&quot;subHeaderFontSize&quot;:null,&quot;fontFamily&quot;:null,&quot;primaryColor&quot;:&quot;#484848&quot;,&quot;cssStyles&quot;:&quot;&quot;,&quot;headerText&quot;:&quot;Click here to reopen missed deals&quot;,&quot;subHeaderText&quot;:null,&quot;showImage&quot;:true,&quot;imageUrl&quot;:&quot;https:\/\/cdn.506.io\/eg\/eg_notification_default_512x512.png&quot;,&quot;displayAfter&quot;:5,&quot;closingMode&quot;:&quot;doNotAutoClose&quot;,&quot;selfcloseAfter&quot;:5,&quot;reshowBannerAfter&quot;:&quot;everyNewSession&quot;},&quot;addedItemIdentifier&quot;:&quot;_Gifted&quot;,&quot;ignoreOtherAppLineItems&quot;:null,&quot;customVariantsInfoLifetimeMins&quot;:1440,&quot;redirectPath&quot;:null,&quot;ignoreNonStandardCartRequests&quot;:false,&quot;bannerStyle&quot;:{&quot;position&quot;:{&quot;horizontal&quot;:&quot;right&quot;,&quot;vertical&quot;:&quot;bottom&quot;},&quot;backgroundColor&quot;:&quot;#FFFFFF&quot;,&quot;borderRadius&quot;:null,&quot;padding&quot;:null,&quot;headerFontSize&quot;:null,&quot;subHeaderFontSize&quot;:null,&quot;fontFamily&quot;:null,&quot;primaryColor&quot;:&quot;#484848&quot;,&quot;cssStyles&quot;:&quot;&quot;},&quot;themePresetId&quot;:&quot;0&quot;,&quot;notificationStyle&quot;:{&quot;position&quot;:{&quot;horizontal&quot;:&quot;right&quot;,&quot;vertical&quot;:&quot;bottom&quot;},&quot;backgroundColor&quot;:&quot;#FFFFFF&quot;,&quot;borderRadius&quot;:null,&quot;headerFontSize&quot;:null,&quot;subHeaderFontSize&quot;:null,&quot;padding&quot;:null,&quot;fontFamily&quot;:null,&quot;primaryColor&quot;:&quot;#484848&quot;,&quot;duration&quot;:&quot;3.0&quot;,&quot;cssStyles&quot;:&quot;#aca-notifications-wrapper {\n  display: block;\n  right: 0;\n  bottom: 0;\n  position: fixed;\n  z-index: 99999999;\n  max-height: 100%;\n  overflow: auto;\n}\n.aca-notification-container {\n  display: flex;\n  flex-direction: row;\n  text-align: left;\n  font-size: 16px;\n  margin: 12px;\n  padding: 8px;\n  background-color: #FFFFFF;\n  width: fit-content;\n  box-shadow: rgb(170 170 170) 0px 0px 5px;\n  border-radius: 8px;\n  opacity: 0;\n  transition: opacity 0.4s ease-in-out;\n}\n.aca-notification-container .aca-notification-image {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 60px;\n  min-width: 60px;\n  height: 60px;\n  width: 60px;\n  background-color: #FFFFFF;\n  margin: 8px;\n}\n.aca-notification-image img {\n  display: block;\n  max-width: 100%;\n  max-height: 100%;\n  width: auto;\n  height: auto;\n  border-radius: 6px;\n  box-shadow: rgba(99, 115, 129, 0.29) 0px 0px 4px 1px;\n}\n.aca-notification-container .aca-notification-text {\n  flex-grow: 1;\n  margin: 8px;\n  max-width: 260px;\n}\n.aca-notification-heading {\n  font-size: 24px;\n  margin: 0 0 0.3em 0;\n  line-height: normal;\n  word-break: break-word;\n  line-height: 1.2;\n  max-height: 3.6em;\n  overflow: hidden;\n  color: #484848;\n}\n.aca-notification-subheading {\n  font-size: 18px;\n  margin: 0;\n  line-height: normal;\n  word-break: break-word;\n  line-height: 1.4;\n  max-height: 5.6em;\n  overflow: hidden;\n  color: #484848;\n}\n@media screen and (max-width: 450px) {\n  #aca-notifications-wrapper {\n    left: 0;\n    right: 0;\n  }\n  .aca-notification-container {\n    width: auto;\n  }\n.aca-notification-container .aca-notification-text {\n    max-width: none;\n  }\n}&quot;,&quot;hasCustomizations&quot;:false},&quot;fetchCartData&quot;:false,&quot;useLocalStorage&quot;:{&quot;enabled&quot;:false,&quot;expiryMinutes&quot;:null},&quot;popupStyle&quot;:{&quot;buttonTextColor&quot;:null,&quot;backgroundColor&quot;:&quot;#FFFFFF&quot;,&quot;borderRadius&quot;:null,&quot;padding&quot;:null,&quot;headerFontSize&quot;:null,&quot;subHeaderFontSize&quot;:null,&quot;bodyColor&quot;:null,&quot;bodyFontSize&quot;:null,&quot;priceShowZeroDecimals&quot;:true,&quot;headerFontFamily&quot;:null,&quot;bodyFontFamily&quot;:null,&quot;primaryColor&quot;:&quot;#E040AF&quot;,&quot;secondaryColor&quot;:&quot;#484848&quot;,&quot;cssStyles&quot;:&quot;#aca-modal {\n  position: fixed;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background: rgba(0, 0, 0, 0.5);\n  z-index: 99999999;\n  overflow-x: hidden;\n  overflow-y: auto;\n  display: block;\n}\n#aca-modal-wrapper {\n  display: flex;\n  align-items: center;\n  width: 50%;\n  height: auto;\n  max-width: 800px;\n  min-height: calc(100% - 60px);\n  margin: 10px auto;\n}\n#aca-modal-container {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  box-shadow: 0 0 1.5rem rgba(17, 17, 17, 0.7);\n  width: 100%;\n  padding: 10px;\n  background-color: #FFFFFF;\n  border-radius: 10px;\n}\n#aca-close-icon-container {\n  position: absolute;\n  top: 12px;\n  right: 12px;\n  width: 25px;\n  display: none;\n}\n#aca-close-icon {\n  stroke: #333333;\n}\n#aca-modal-custom-image-container {\n  background-color: #FFFFFF;\n  margin: 0.25em 0;\n}\n#aca-modal-custom-image-container img {\n  display: block;\n  min-width: 60px;\n  min-height: 60px;\n  max-width: 200px;\n  max-height: 200px;\n  width: auto;\n  height: auto;\n}\n#aca-modal-headline {\n  text-align: center;\n  text-transform: none;\n  letter-spacing: normal;\n  margin: 0.5em 0;\n  font-size: 30px;\n  color: #484848;\n}\n#aca-modal-subheadline {\n  text-align: center;\n  font-weight: normal;\n  margin: 0 0 0.5em 0;\n  font-size: 14px;\n  color: #484848;\n}\n#aca-products-container {\n  display: flex;\n  align-items: flex-start;\n  justify-content: center;\n  flex-wrap: wrap;\n  width: 85%;\n}\n#aca-products-container .aca-product {\n  text-align: center;\n  margin: 10px;\n  width: 200px;\n}\n.aca-product-image {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  height: 150px;\n  background-color: #FFFFFF;\n  margin-bottom: 0.25em;\n}\n.aca-product-image img {\n  display: block;\n  max-width: 100%;\n  max-height: 100%;\n  width: auto;\n  height: auto;\nborder-radius: 10px;\n}\n.aca-product-name, .aca-subscription-name {\n  color: #333333;\n  line-height: inherit;\n  word-break: break-word;\n  font-size: 16px;\n  font-weight: bold;\n}\n.aca-product-variant-name {\n  margin-top: 1em;\n  color: #333333;\n  line-height: inherit;\n  word-break: break-word;\n  font-size: 16px;\n}
372\n\/*\n.aca-product-name::after {\n  content: \&quot; - Oregano Essential Oil is also anti-inflammatory and may help relieve common aches and pain.\&quot;; \/* Text you want to add before the price *\/\nfont-weight: normal;\nfont-size: 12px;\n}\n*\/\n.aca-product-price {\n  color: #333333;\n  line-height: inherit;\n  font-size: 16px;\n}\n.aca-subscription-label {\n  color: #333333;\n  line-height: inherit;\n  word-break: break-word;\n  font-weight: 600;\n  font-size: 16px;\n}\n.aca-product-dropdown {\n  position: relative;\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  width: 100%;\n  height: 42px;\n  background-color: #FFFFFF;\n  line-height: inherit;\n  margin-bottom: 1em;\n}\n.aca-product-dropdown .dropdown-icon {\n  position: absolute;\n  right: 8px;\n  height: 12px;\n  width: 12px;\n  fill: #E1E3E4;\n}\n.aca-product-dropdown select::before,\n.aca-product-dropdown select::after {\n  box-sizing: border-box;\n}\nselect.aca-product-dropdown::-ms-expand {\n  display: none;\n}\n.aca-product-dropdown select {\n  box-sizing: border-box;\n  background-color: transparent;\n  border: none;\n  margin: 0;\n  cursor: inherit;\n  line-height: inherit;\n  outline: none;\n  -moz-appearance: none;\n  -webkit-appearance: none;\n  appearance: none;\n  background-image: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n  z-index: 1;\n  width: 100%;\n  height: 100%;\n  cursor: pointer;\n  border: 1px solid #E1E3E4;\n  border-radius: 2px;\n  color: #333333;\n  padding: 0 30px 0 10px;\n  font-size: 15px;\n}\n.aca-product-button {\n  border: none;\n  cursor: pointer;\n  width: 100%;\n  min-height: 42px;\n  word-break: break-word;\n  padding: 8px 14px;\n  background-color: #d63384;\n  text-transform: uppercase;\n  line-height: inherit;\n  border: 1px solid transparent;\n  border-radius: 2px;\n  font-size: 14px;\n  color: #FFFFFF;\n  font-weight: bold;\n  letter-spacing: 1.039px;\nborder-radius: 10px;\n}\n.aca-product-button.aca-product-out-of-stock-button {\n  cursor: default;\n  background-color: #FFFFFF;\n  border: 1px solid #E040AF;\n  color: #E040AF;\n}\n.aca-button-loader {\n  display: block;\n  border: 3px solid transparent;\n  border-radius: 50%;\n  border-top: 3px solid #FFFFFF;\n  width: 20px;\n  height: 20px;\n  background: transparent;\n  margin: 0 auto;\n  -webkit-animation: aca-loader 0.5s linear infinite;\n  animation: aca-loader 0.5s linear infinite;\n}\n@-webkit-keyframes aca-loader {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n  }\n}\n@keyframes aca-loader {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n.aca-button-tick {\n  display: block;\n  transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  height: 19px;\n  width: 9px;\n  margin: 0 auto;\n  border-bottom: 3px solid #FFFFFF;\n  border-right: 3px solid #FFFFFF;\n}\n.aca-button-cross \u003e svg {\n  width: 22px;\n  margin-bottom: -6px;\n}\n.aca-button-cross .button-cross-icon {\n  stroke: #FFFFFF;\n}\n#aca-bottom-close {\n  cursor: pointer;\n  text-align: center;\n  word-break: break-word;\n  font-size: 14px;\n  color: #E040AF;\n}\n@media screen and (min-width: 951px) and (max-width: 1200px) {\n   #aca-products-container {\n    width: 95%;\n    padding: 20px 0;\n  }\n  #aca-products-container .aca-product {\n    margin: 20px 3%;\n    padding: 0;\n  }\n}\n@media screen and (min-width: 951px) and (max-width: 1024px) {\n  #aca-products-container .aca-product {\n    margin: 20px 2%;\n  }\n}\n@media screen and (max-width: 950px) {\n  #aca-products-container {\n    width: 95%;\n    padding: 0;\n  }\n  #aca-products-container .aca-product {\n    width: 45%;\n    max-width: 200px;\n    margin: 2.5%;\n  }\n}\n@media screen and (min-width: 602px) and (max-width: 950px) {\n  #aca-products-container .aca-product {\n    margin: 4%;\n  }\n}\n@media screen and (max-width: 767px) {\n  #aca-modal-wrapper {\n    width: 90%;\n  }\n}\n@media screen and (max-width: 576px) {\n  #aca-modal-container {\n    padding: 23px 0 0;\n  }\n  #aca-close-icon-container {\n    display: block;\n  }\n  #aca-bottom-close {\n  margin: 10px;\n  font-size: 14px;\n  color: #E040AF;\n}\n  #aca-modal-headline {\n  margin: 10px 5%;\n  font-size: 20px;\n  color: #484848;\n}\n  #aca-modal-subheadline {\n  margin: 0 0 5px 0;\n  font-size: 12px;\n  color: #484848;\n}\n  .aca-product-image {\n    height: 250px;\n    margin: 0;\n  }\n  .aca-product-name, .aca-subscription-name, .aca-product-variant-name {\n    font-size: 16px;\n    margin: 5px 0;\n    font-weight: bold;\n  }\n  .aca-product-dropdown select, .aca-product-button, .aca-subscription-label {\n    font-size: 12px;\n  }\n  .aca-product-dropdown {\n    height: 30px;\n    margin-bottom: 7px;\n  }\n  .aca-product-button {\n    min-height: 30px;\n    padding: 4px;\n    margin-bottom: 7px;\n  }\n  .aca-button-loader {\n    border: 2px solid transparent;\n    border-top: 2px solid #FFFFFF;\n    width: 12px;\n    height: 12px;\n  }\n  .aca-button-tick {\n    height: 12px;\n    width: 6px;\n    border-bottom: 2px solid #FFFFFF;\n    border-right: 2px solid #FFFFFF;\n  }\n  .aca-button-cross \u003e svg {\n    width: 15px;\n    margin-bottom: -4px;\n  }\n  .aca-button-cross .button-cross-icon {\n    stroke: #FFFFFF;\n  }\n}&quot;,&quot;hasCustomizations&quot;:false,&quot;addButtonText&quot;:&quot;Add to Order&quot;,&quot;
372dismissButtonText&quot;:&quot;No Thank You&quot;,&quot;outOfStockButtonText&quot;:&quot;Out of Stock&quot;,&quot;imageUrl&quot;:null,&quot;showProductLink&quot;:false,&quot;subscriptionLabel&quot;:&quot;Subscription Plan&quot;,&quot;closeModalOutsideClick&quot;:true},&quot;refreshAfterBannerClick&quot;:false,&quot;disableReapplyRules&quot;:false,&quot;disableReloadOnFailedAddition&quot;:false,&quot;autoReloadCartPage&quot;:false,&quot;ajaxRedirectPath&quot;:null,&quot;allowSimultaneousRequests&quot;:false,&quot;applyRulesOnCheckout&quot;:false,&quot;enableCartCtrlOverrides&quot;:true,&quot;customRedirectFromCart&quot;:null,&quot;scriptSettings&quot;:{&quot;branding&quot;:{&quot;show&quot;:false,&quot;removalRequestSent&quot;:null},&quot;productPageRedirection&quot;:{&quot;enabled&quot;:false,&quot;products&quot;:[],&quot;redirectionURL&quot;:&quot;\/&quot;},&quot;debugging&quot;:{&quot;enabled&quot;:false,&quot;enabledOn&quot;:null,&quot;stringifyObj&quot;:false},&quot;reApplyValueBasedRulesInCart&quot;:false,&quot;disableRedirectAfterFormSubmit&quot;:false,&quot;fetchProductInfoFromSavedDomain&quot;:false,&quot;enableBuyNowInterceptions&quot;:false,&quot;removeProductsAddedFromExpiredRules&quot;:false,&quot;useFinalPrice&quot;:false,&quot;useFinalPriceGetEntireCart&quot;:false,&quot;hideGiftedPropertyText&quot;:false,&quot;fetchCartDataBeforeRequest&quot;:false,&quot;removeEGPropertyFromSplitActionLineItems&quot;:false,&quot;hideAlertsOnFrontend&quot;:false,&quot;decodePayload&quot;:false,&quot;customCSS&quot;:null,&quot;delayUpdates&quot;:2000},&quot;promoCodeMessageStyle&quot;:{&quot;message&quot;:&quot;Free gift added!&quot;},&quot;egDiscount&quot;:{&quot;cartValueStopCollectionCheck&quot;:false},&quot;accessToEnterprise&quot;:true},&quot;translations&quot;:null,&quot;defaultLocale&quot;:&quot;en&quot;,&quot;shopDomain&quot;:&quot;www.rockymountainoils.com&quot;}">
373
374
375<script defer>
376  (async function() {
377    try {
378
379      const blockVersion = "v3"
380      if (blockVersion != "v3") {
381        return
382      }
383
384      let metaErrorFlag = false;
385      if (metaErrorFlag) {
386        return
387      }
388
389      // Parse metafields as JSON
390      const metafields = {"easygift-rule-669038cca3af096d5b96e2ac":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"sellingPlan":null},"hybrid":null,"promoCode":null,"promoCodeDiscount":null,"type":"productsInclude","minCartValue":null,"hasUpperCartValue":false,"upperCartValue":null,"products":[{"variantId":44111360459074,"sellingPlans":[]}],"collections":[],"condition":"quantity","conditionMin":1,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"easygiftAppDiscount":false,"discountType":null,"issue":null,"type":"shpPromo","id":"gid:\/\/shopify\/DiscountCodeNode\/1426321899842","code":"LAVENDER4YOU","title":"LAVENDER4YOU","createdByEasyGift":true,"value":100},"popupOptions":{"showVariantsSeparately":false,"headline":"Congratulations! You've unlocked FREE Lavender!","subHeadline":"Add to order now! Discount code would be applied at checkout!","showItemsPrice":false,"popupDismissable":false,"subscriptionLabel":"Subscription Plan","imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":false,"hideOOSItems":false},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"id":"8025540854082","title":"Lavender Essential Oil","handle":"lavender-essential-oil","variants":[{"id":"44111360459074","alerts":[],"showVariantName":false}]}],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":"product","data":{"availablePublicationCount":14,"createdAt":"2022-11-28T12:32:46Z","descriptionHtml":"\u003cp\u003eExperience deeper levels of peace and tranquility with sweet-smelling Lavender Essential Oil. With a gentle floral aroma that’s earthy and grounding, lavender is one of the most popular essential oils due to its holistic healing properties and natural medicinal benefits.\u003c\/p\u003e\n\u003cp\u003eLavender oil has been used for thousands of years in traditional medicine and herbal remedies as a rich source of anti-inflammatory compounds that \u003ca href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC3612440\/\" target=\"_blank\"\u003ehelp treat chronic pain\u003c\/a\u003e. It’s also used to support sleep, lower stress levels, and provide relief from skin irritations like insect bites. It also has antifungal and antibacterial properties to help prevent infection.\u003c\/p\u003e\n\u003cp\u003eThe medium-strength aroma of lavender oil is floral, herbaceous, sweet, and slightly woody. Rocky Mountain Oils’ Lavender oil is steam-distilled from the beautiful flowers of the \u003ci\u003eLavandula angustifolia\u003c\/i\u003e plant, sourced directly from the verdant French countryside.\u003c\/p\u003e\n\u003cp\u003eTry lavender oil to balance mood swings, reduce anxiety, and create serenity whenever you need a break from life’s daily stressors. Use for massage oils, aromatherapy, DIY skincare and haircare, candle-making, meditation, homemade cleaners, and more.\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.rockymountainoils.com\/blogs\/essential-oil-basics\/unlock-the-secrets-of-phoenix-s-favorite-single-oils\" target=\"_blank\" title=\"Unlock the Secrets of Phoenix’s Favorite Single Oils!\" rel=\"noopener noreferrer\"\u003e\"Learn why Lavender Essential Oil is Michael \u0026amp; Phoenix's favorite product\"\u003c\/a\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"https:\/\/www.rockymountainoils.com\/pages\/lavender-oil-benefits-uses\" target=\"_blank\"\u003eLearn More About Lavender\u003c\/a\u003e\u003c\/p\u003e\n\u003ccenter\u003e\u003cdiv dir=\"ltr\"\u003e\u003ciframe style=\"aspect-ratio: 16\/9; width: 100%;\" width=\"716\" height=\"403\" src=\"https:\/\/www.youtube.com\/embed\/w0eeVZLYmGE\" title=\"Lavender Essential Oil Review from RMO's Founder, Phoenix\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen\u003e\u003c\/iframe\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003chr\u003e\n\u003cp dir=\"ltr\"\u003e\u003cem\u003eThe statements contained herein have not been evaluated by the Food and Drug Administration. Neither Rocky Mountain Oils® nor its products are intended for the purpose of diagnosing, treating, curing, or preventing any disease. If you are pregnant, nursing, taking medication, or have a medical condition, consult your physician before using these products.\u003c\/em\u003e\u003c\/p\u003e","handle":"lavender-essential-oil","hasOnlyDefaultVariant":false,"id":"gid:\/\/shopify\/Product\/8025540854082","images":[{"id":"gid:\/\/shopify\/ProductImage\/43452351381826","altText":"Lavender Essential Oil - 15ml - Rocky Mountain Oils","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-15ml-1.jpg?v=1712608578"},{"id":"gid:\/\/shopify\/ProductImage\/41877240217922","altText":"Lavender Essential Oil Back","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-back.png?v=1701184849"},{"id":"gid:\/\/shopify\/ProductImage\/41877239988546","altText":"Lavender Essential Oil Spread","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-spread.png?v=1701184849"},{"id":"gid:\/\/shopify\/ProductImage\/41877240021314","altText":"Lavender Essential Oil Top","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-top.png?v=1701184849"},{"id":"gid:\/\/shopify\/ProductImage\/44365299745090","altText":"Lavender Essential Oil - 4oz - Rocky Mountain Oils","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-4oz-3.jpg?v=1710350671"}],"options":[{"id":"gid:\/\/shopify\/ProductOption\/10196688830786","name":"Size","position":1,"values":["15ml","4oz","5ml"]}],"productType":"Essential Oil","publishedAt":"2022-11-28T12:32:46Z","tags":["4oz","Aroma Artisan - 2023","bath care","Best Sellers","Build A Box","Crowd's Favorites - 2023","Floral","Immunity","Oils","Outdoor","Pain","Respiratory","Serenity Seeker - 2023","Singles","Skin","Skin Care","Spring Oils","Stress","summer oils","Trending","Valentine Day","Wholesale Oils"],"templateSuffix":"","title":"Lavender Essential Oil","totalInventory":3874,"totalVariants":3,"tracksInventory":true,"updatedAt":"2024-0
3907-11T13:24:28Z","variants":[{"availableForSale":true,"barcode":"053176181462","compareAtPrice":null,"createdAt":"2022-11-28T12:32:46Z","displayName":"Lavender Essential Oil - 15ml","fulfillmentService":{"id":"gid:\/\/shopify\/FulfillmentService\/manual","inventoryManagement":false,"productBased":true,"serviceName":"Manual","type":"MANUAL"},"id":"gid:\/\/shopify\/ProductVariant\/44111360459074","image":{"id":"gid:\/\/shopify\/ProductImage\/43452351381826","altText":"Lavender Essential Oil - 15ml - Rocky Mountain Oils","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-15ml-1.jpg?v=1712608578"},"inventoryItem":{"__typename":"InventoryItem","id":"gid:\/\/shopify\/InventoryItem\/46159406104898"},"inventoryManagement":"SHOPIFY","inventoryPolicy":"DENY","inventoryQuantity":3616,"position":1,"price":"20.95","product":{"__typename":"Product","id":"gid:\/\/shopify\/Product\/8025540854082"},"requiresShipping":true,"selectedOptions":[{"__typename":"SelectedOption","value":"15ml"}],"sku":"LAVGRE-S15","taxable":true,"title":"15ml","updatedAt":"2024-07-11T13:24:28Z","weight":45,"weightUnit":"GRAMS"},{"availableForSale":true,"barcode":"053176183145","compareAtPrice":null,"createdAt":"2024-05-16T19:28:08Z","displayName":"Lavender Essential Oil - 4oz","fulfillmentService":{"id":"gid:\/\/shopify\/FulfillmentService\/manual","inventoryManagement":false,"productBased":true,"serviceName":"Manual","type":"MANUAL"},"id":"gid:\/\/shopify\/ProductVariant\/48687729082690","image":{"id":"gid:\/\/shopify\/ProductImage\/44365299745090","altText":"Lavender Essential Oil - 4oz - Rocky Mountain Oils","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/files\/lavender-essential-oil-4oz-3.jpg?v=1710350671"},"inventoryItem":{"__typename":"InventoryItem","id":"gid:\/\/shopify\/InventoryItem\/50729117122882"},"inventoryManagement":"SHOPIFY","inventoryPolicy":"DENY","inventoryQuantity":40,"position":2,"price":"49.95","product":{"__typename":"Product","id":"gid:\/\/shopify\/Product\/8025540854082"},"requiresShipping":true,"selectedOptions":[{"__typename":"SelectedOption","value":"4oz"}],"sku":"LAVGRE-4OZ","taxable":true,"title":"4oz","updatedAt":"2024-07-11T01:25:03Z","weight":4,"weightUnit":"OUNCES"},{"availableForSale":true,"barcode":"053176181776","compareAtPrice":null,"createdAt":"2024-05-16T19:28:08Z","displayName":"Lavender Essential Oil - 5ml","fulfillmentService":{"id":"gid:\/\/shopify\/FulfillmentService\/manual","inventoryManagement":false,"productBased":true,"serviceName":"Manual","type":"MANUAL"},"id":"gid:\/\/shopify\/ProductVariant\/48687729115458","image":{"id":"gid:\/\/shopify\/ProductImage\/40133962531138","altText":"Lavender Essential Oil - 5ml","originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0679\/7908\/4098\/products\/Lavender-Essential-Oil-1.png?v=1671122677"},"inventoryItem":{"__typename":"InventoryItem","id":"gid:\/\/shopify\/InventoryItem\/50729117155650"},"inventoryManagement":"SHOPIFY","inventoryPolicy":"DENY","inventoryQuantity":218,"position":3,"price":"11.95","product":{"__typename":"Product","id":"gid:\/\/shopify\/Product\/8025540854082"},"requiresShipping":true,"selectedOptions":[{"__typename":"SelectedOption","value":"5ml"}],"sku":"LAVGRE-S5","taxable":true,"title":"5ml","updatedAt":"2024-07-07T03:00:45Z","weight":28,"weightUnit":"GRAMS"}],"vendor":"Rocky Mountain Oils","status":"ACTIVE"},"cookieLifetime":1},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"link"},"settings":{"worksInReverse":true,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"testMode":false,"_id":"669038cca3af096d5b96e2ac","name":"LAVENDER4YOU","active":true,"translations":null},"easygift-rule-66a78b1e132c2fcd6de8ca93":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"collectionInfo":null,"sellingPlan":null},"promoCode":null,"promoCodeDiscount":null,"type":"cartValue","minCartValue":50,"hasUpperCartValue":false,"upperCartValue":null,"products":[],"collections":[],"condition":null,"conditionMin":null,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"type":"shpPromo","code":"CARDIFFUSER50","id":"gid:\/\/shopify\/DiscountCodeNode\/1426536956226","createdByEasyGift":false,"easygiftAppDiscount":false,"value":null,"discountType":null,"title":"CARDIFFUSER50","issue":null},"popupOptions":{"showVariantsSeparately":false,"headline":"Congratulations! You've unlocked FREE Hanging Car Diffuser!","subHeadline":"Add to order now!","
390showItemsPrice":false,"popupDismissable":false,"subscriptionLabel":"Subscription Plan","imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":false,"hideOOSItems":false},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"handle":"aromatherapy-hanging-car-diffuser","title":"Aromatherapy Hanging Car Diffuser","id":"8047238250818","gid":"gid:\/\/shopify\/Product\/8047238250818","hasOnlyDefaultVariant":false,"variants":[{"title":"Default Title","displayName":"Aromatherapy Hanging Car Diffuser - Default Title","id":"49116053209410","gid":"gid:\/\/shopify\/ProductVariant\/49116053209410","showVariantName":false,"alerts":[]}]}],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":"home","data":null,"cookieLifetime":1},"testMode":{"testCount":0,"lastTestedAt":null,"currentNonce":null,"lastTestUrl":null,"lastTokenExpiresAt":null},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"link"},"settings":{"worksInReverse":true,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"translations":null,"testMode":false,"_id":"66a78b1e132c2fcd6de8ca93","name":"CARDIFFUSER50","store":"64b6d3cb32a7338aa9b60f8a","shop":"rocky-mountain-oils","active":true,"createdAt":"2024-07-29T12:29:18.474Z","updatedAt":"2026-01-09T18:28:15.480Z","__v":0},"easygift-rule-6706df0b2983c7ad262c698d":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"sellingPlan":null},"hybrid":null,"promoCode":null,"promoCodeDiscount":null,"type":"productsInclude","minCartValue":null,"upperCartValue":null,"products":[{"variantId":48633909543234,"sellingPlans":[]}],"collections":[],"condition":"quantity","conditionMin":1,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"easygiftAppDiscount":false,"discountType":"percentage","type":"shpAutomatic","title":"Massage Oil 25% OFF","id":"gid:\/\/shopify\/DiscountAutomaticNode\/1638617940335","createdByEasyGift":true,"value":25,"issue":null,"code":null},"popupOptions":{"showVariantsSeparately":false,"headline":"Congratulations! You've earned 1 Massage Oil for 25% OFF!","subHeadline":"Click Add to Order Now!","showItemsPrice":false,"popupDismissable":true,"imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":true,"hideOOSItems":true},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"id":"9064111997250","title":"Lavender Massage Oil","handle":"lavender-massage-oil","variants":[{"id":"51879169327471","alerts":[],"showVariantName":false}]},{"id":"9064125530434","title":"Spearmint Massage Oil","handle":"spearmint-massage-oil","variants":[{"id":"51879186202991","alerts":[],"showVariantName":false}]},{"id":"9064137720130","title":"True Blue Massage Oil","handle":"true-blue-massage-oil","variants":[{"id":"51879166181743","alerts":[],"showVariantName":false}]}],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":null,"data":null,"cookieLifetime":14},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"all"},"settings":{"worksInReverse":true,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"testMode":false,"_id":"6706df0b2983c7ad262c698d","name":"Massage Oil 25% OFF","active":true,"translations":null},"easygift-rule-673bb17f9424c4723df30a54":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"collectionInfo":null,"sellingPlan":null},"promoCode":null,"promoCodeDiscount":null,"type":"collection","minCartValue":null,"hasUpperCartValue":false,"upperCartValue":null,"products":[],"collections":[{"alerts":[],"name":"Upsell Spray Head","id":630636118383,"gid":"gid:\/\/shopify\/Collection\/630636118383","handle":"upsell-spray-head","_id":"673bb3d3cae6b04d75154916"}
390],"condition":null,"conditionMin":null,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"easygiftAppDiscount":false,"type":null,"id":null,"title":null,"createdByEasyGift":false,"code":null,"issue":null,"discountType":null,"value":null},"popupOptions":{"showVariantsSeparately":false,"headline":"Customers who bought 15ml Essential Oils also bought:","subHeadline":null,"showItemsPrice":true,"popupDismissable":true,"subscriptionLabel":"Subscription Plan","imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":false,"hideOOSItems":false},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"handle":"spray-head-essential-oils","title":"Spray Head For Essential Oil Bottles","id":"8376809226562","gid":"gid:\/\/shopify\/Product\/8376809226562","hasOnlyDefaultVariant":true,"variants":[{"title":"Default Title","displayName":"Spray Head For Essential Oil Bottles - Default Title","id":"45318592758082","gid":"gid:\/\/shopify\/ProductVariant\/45318592758082","showVariantName":false,"alerts":[]}]}],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":null,"data":null,"cookieLifetime":14},"testMode":{"testCount":0,"lastTestedAt":null,"currentNonce":null,"lastTestUrl":null,"lastTokenExpiresAt":null},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"all"},"settings":{"worksInReverse":false,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"translations":null,"testMode":false,"_id":"673bb17f9424c4723df30a54","name":"Add Spray Head","store":"64b6d3cb32a7338aa9b60f8a","shop":"rocky-mountain-oils","active":true,"createdAt":"2024-11-18T21:28:31.543Z","updatedAt":"2026-02-05T12:38:30.400Z","__v":0},"easygift-rule-678829a447474ddda010c00e":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"sellingPlan":null},"hybrid":null,"promoCode":null,"promoCodeDiscount":null,"type":"productsInclude","minCartValue":null,"hasUpperCartValue":false,"upperCartValue":null,"products":[{"variantId":44111529771330,"sellingPlans":[]},{"variantId":44276013269314,"sellingPlans":[]},{"variantId":47468641616194,"sellingPlans":[]}],"collections":[],"condition":"quantity","conditionMin":1,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"easygiftAppDiscount":false,"type":null,"id":null,"title":null,"createdByEasyGift":false,"code":null,"issue":null,"discountType":null,"value":null},"popupOptions":{"showVariantsSeparately":false,"headline":"Using Sacred Frankincense for your skin care routine? Try combining it with our Mountain Rain Facial Cleanser!","subHeadline":null,"showItemsPrice":true,"popupDismissable":true,"subscriptionLabel":"Subscription Plan","imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":false,"hideOOSItems":false},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"id":"8896792625474","title":"Mountain Rain Facial Cleanser","handle":"mountain-rain-facial-cleanser","variants":[{"id":"47363190030658","alerts":[],"showVariantName":false}]}
390],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":null,"data":null,"cookieLifetime":14},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"all"},"settings":{"worksInReverse":true,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"translations":null,"testMode":false,"_id":"678829a447474ddda010c00e","name":"Sacred Frankincense and Mountain Rain Facial Cleanser","active":true},"easygift-rule-6952c65cb263ac5ab8b39a7c":{"schedule":{"enabled":false,"starts":null,"ends":null},"trigger":{"productTags":{"targets":[],"sellingPlan":null},"hybrid":null,"promoCode":null,"promoCodeDiscount":null,"type":"productsInclude","minCartValue":null,"hasUpperCartValue":false,"upperCartValue":null,"products":[{"variantId":47158794846530,"sellingPlans":[]}],"collections":[],"condition":"quantity","conditionMin":1,"conditionMax":null,"collectionSellingPlanType":null,"cartValueExcludedVariants":[]},"action":{"notification":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":""},"discount":{"easygiftAppDiscount":false,"type":null,"id":null,"title":null,"createdByEasyGift":false,"code":null,"issue":null,"discountType":null,"value":null},"popupOptions":{"headline":"Customers who bought 16oz Spray Bottle also bought:","subHeadline":null,"showItemsPrice":true,"showVariantsSeparately":false,"popupDismissable":true,"imageUrl":null,"persistPopup":false,"rewardQuantity":1,"showDiscountedPrice":false,"hideOOSItems":true},"banner":{"enabled":false,"headerText":null,"subHeaderText":null,"showImage":false,"imageUrl":null,"displayAfter":"5","closingMode":"doNotAutoClose","selfcloseAfter":"5","reshowBannerAfter":"everyNewSession","redirectLink":null},"showPromoCodeMessage":false,"type":"offerToCustomer","products":[{"id":"8870795575618","title":"Silicone Sleeve for 16oz Bottle","handle":"silicone-sleeve-for-16oz-bottle","variants":[{"id":"47158783672642","alerts":[],"showVariantName":false},{"id":"47158783705410","alerts":[],"showVariantName":false},{"id":"47158783738178","alerts":[],"showVariantName":false},{"id":"47158783770946","alerts":[],"showVariantName":false}]}],"limit":1,"preventProductRemoval":false,"addAvailableProducts":false},"targeting":{"link":{"destination":null,"data":null,"cookieLifetime":14},"additionalCriteria":{"geo":{"include":[],"exclude":[]},"type":null,"customerTags":[],"customerTagsExcluded":[],"customerId":[],"orderCount":null,"hasOrderCountMax":false,"orderCountMax":null,"totalSpent":null,"hasTotalSpentMax":false,"totalSpentMax":null},"type":"all"},"settings":{"worksInReverse":true,"runsOncePerSession":false,"preventAddedItemPurchase":false,"showReminderBanner":false},"testMode":false,"_id":"6952c65cb263ac5ab8b39a7c","name":"16oz Spray Bottle and 16oz Sleeve","active":true,"translations":null}};
391
392      // Process metafields in JavaScript
393      let savedRulesArray = [];
394      for (const [key, value] of Object.entries(metafields)) {
395        if (value) {
396          for (const prop in value) {
397            // avoiding Object.Keys for performance gain -- no need to make an array of keys.
398            savedRulesArray.push(value);
399            break;
400          }
401        }
402      }
403
404      const metaTag = document.createElement('meta');
405      metaTag.id = 'easygift-rules';
406      metaTag.content = JSON.stringify(savedRulesArray);
407      metaTag.setAttribute('itemid', 'cnVsZXNfJF8xNzkxMDYyNTY3');
408
409      document.head.appendChild(metaTag);
410      } catch (err) {
411        
412      }
413  })();
414</script>
414
415
416
417  
417<script
418    type="text/javascript"
419    defer
420  >
421
422    (function () {
423      try {
424        window.EG_INFO = window.EG_INFO || {};
425        var shopInfo = {"isInstalled":true,"installedOn":"2023-08-12T00:15:59.986Z","appVersion":"3.0","subscriptionName":"Unlimited","cartAnalytics":true,"freeTrialEndsOn":null,"settings":{"reminderBannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"backgroundColor":"#FFFFFF","borderRadius":null,"padding":null,"headerFontSize":null,"subHeaderFontSize":null,"fontFamily":null,"primaryColor":"#484848","cssStyles":"","headerText":"Click here to reopen missed deals","subHeaderText":null,"showImage":true,"imageUrl":"https:\/\/cdn.506.io\/eg\/eg_notification_default_512x512.png","displayAfter":5,"closingMode":"doNotAutoClose","selfcloseAfter":5,"reshowBannerAfter":"everyNewSession"},"addedItemIdentifier":"_Gifted","ignoreOtherAppLineItems":null,"customVariantsInfoLifetimeMins":1440,"redirectPath":null,"ignoreNonStandardCartRequests":false,"bannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"backgroundColor":"#FFFFFF","borderRadius":null,"padding":null,"headerFontSize":null,"subHeaderFontSize":null,"fontFamily":null,"primaryColor":"#484848","cssStyles":""},"themePresetId":"0","notificationStyle":{"position":{"horizontal":"right","vertical":"bottom"},"backgroundColor":"#FFFFFF","borderRadius":null,"headerFontSize":null,"subHeaderFontSize":null,"padding":null,"fontFamily":null,"primaryColor":"#484848","duration":"3.0","cssStyles":"#aca-notifications-wrapper {\n  display: block;\n  right: 0;\n  bottom: 0;\n  position: fixed;\n  z-index: 99999999;\n  max-height: 100%;\n  overflow: auto;\n}\n.aca-notification-container {\n  display: flex;\n  flex-direction: row;\n  text-align: left;\n  font-size: 16px;\n  margin: 12px;\n  padding: 8px;\n  background-color: #FFFFFF;\n  width: fit-content;\n  box-shadow: rgb(170 170 170) 0px 0px 5px;\n  border-radius: 8px;\n  opacity: 0;\n  transition: opacity 0.4s ease-in-out;\n}\n.aca-notification-container .aca-notification-image {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 60px;\n  min-width: 60px;\n  height: 60px;\n  width: 60px;\n  background-color: #FFFFFF;\n  margin: 8px;\n}\n.aca-notification-image img {\n  display: block;\n  max-width: 100%;\n  max-height: 100%;\n  width: auto;\n  height: auto;\n  border-radius: 6px;\n  box-shadow: rgba(99, 115, 129, 0.29) 0px 0px 4px 1px;\n}\n.aca-notification-container .aca-notification-text {\n  flex-grow: 1;\n  margin: 8px;\n  max-width: 260px;\n}\n.aca-notification-heading {\n  font-size: 24px;\n  margin: 0 0 0.3em 0;\n  line-height: normal;\n  word-break: break-word;\n  line-height: 1.2;\n  max-height: 3.6em;\n  overflow: hidden;\n  color: #484848;\n}\n.aca-notification-subheading {\n  font-size: 18px;\n  margin: 0;\n  line-height: normal;\n  word-break: break-word;\n  line-height: 1.4;\n  max-height: 5.6em;\n  overflow: hidden;\n  color: #484848;\n}\n@media screen and (max-width: 450px) {\n  #aca-notifications-wrapper {\n    left: 0;\n    right: 0;\n  }\n  .aca-notification-container {\n    width: auto;\n  }\n.aca-notification-container .aca-notification-text {\n    max-width: none;\n  }\n}","hasCustomizations":false},"fetchCartData":false,"useLocalStorage":{"enabled":false,"expiryMinutes":null},"popupStyle":{"buttonTextColor":null,"backgroundColor":"#FFFFFF","borderRadius":null,"padding":null,"headerFontSize":null,"subHeaderFontSize":null,"bodyColor":null,"bodyFontSize":null,"priceShowZeroDecimals":true,"headerFontFamily":null,"bodyFontFamily":null,"primaryColor":"#E040AF","secondaryColor":"#484848","cssStyles":"#aca-modal {\n  position: fixed;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  background: rgba(0, 0, 0, 0.5);\n  z-index: 99999999;\n  overflow-x: hidden;\n  overflow-y: auto;\n  display: block;\n}\n#aca-modal-wrapper {\n  display: flex;\n  align-items: center;\n  width: 50%;\n  height: auto;\n  max-width: 800px;\n  min-height: calc(100% - 60px);\n  margin: 10px auto;\n}\n#aca-modal-container {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  box-shadow: 0 0 1.5rem rgba(17, 17, 17, 0.7);\n  width: 100%;\n  padding: 10px;\n  background-color: #FFFFFF;\n  border-radius: 10px;\n}\n#aca-close-icon-container {\n  position: absolute;\n  top: 12px;\n  right: 12px;\n  width: 25px;\n  display: none;\n}\n#aca-close-icon {\n  stroke: #333333;\n}\n#aca-modal-custom-image-container {\n  background-color: #FFFFFF;\n  margin: 0.25em 0;\n}\n#aca-modal-custom-image-container img {\n  display: block;\n  min-width: 60px;\n  min-height: 60px;\n  max-width: 200px;\n  max-height: 200px;\n  width: auto;\n  height: auto;\n}\n#aca-modal-headline {\n  text-align: center;\n  text-transform: none;\n  letter-spacing: normal;\n  margin: 0.5em 0;\n  font-size: 30px;\n  color: #484848;\n}\n#aca-modal-subheadline {\n  text-align: center;\n  font-weight: normal;\n  margin: 0 0 0.5em 0;\n  font-size: 14px;\n  color: #484848;\n}\n#aca-products-container {\n  display: flex;\n  align-items: flex-start;\n  justify-content: center;\n  flex-wrap: wrap;\n  width: 85%;\n}\n#aca-products-container .aca-product {\n  text-align: center;\n  margin: 10px;\n  width: 200px;\n}\n.aca-product-image {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  height: 150px;\n  background-color: #FFFFFF;\n  margin-bottom: 0.25em;\n}\n.aca-product-image img {\n  display: block;\n  max-width: 100%;\n  max-height: 100%;\n  width: auto;\n  height: auto;\nborder-radius: 10px;\n}\n.aca-product-name, .aca-subscription-name {\n  color: #333333;\n  line-height: inherit;\n  word-break: break-word;\n  font-size: 16px;\n  font-weight: bold;\n}\n.aca-product-variant-name {\n  margin-top: 1em;\n  color: #333333;\n  line-height: inherit;\n  word-break: break-word;\n  font-size: 16px;\n}
425\n\/*\n.aca-product-name::after {\n  content: \" - Oregano Essential Oil is also anti-inflammatory and may help relieve common aches and pain.\"; \/* Text you want to add before the price *\/\nfont-weight: normal;\nfont-size: 12px;\n}\n*\/\n.aca-product-price {\n  color: #333333;\n  line-height: inherit;\n  font-size: 16px;\n}\n.aca-subscription-label {\n  color: #333333;\n  line-height: inherit;\n  word-break: break-word;\n  font-weight: 600;\n  font-size: 16px;\n}\n.aca-product-dropdown {\n  position: relative;\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  width: 100%;\n  height: 42px;\n  background-color: #FFFFFF;\n  line-height: inherit;\n  margin-bottom: 1em;\n}\n.aca-product-dropdown .dropdown-icon {\n  position: absolute;\n  right: 8px;\n  height: 12px;\n  width: 12px;\n  fill: #E1E3E4;\n}\n.aca-product-dropdown select::before,\n.aca-product-dropdown select::after {\n  box-sizing: border-box;\n}\nselect.aca-product-dropdown::-ms-expand {\n  display: none;\n}\n.aca-product-dropdown select {\n  box-sizing: border-box;\n  background-color: transparent;\n  border: none;\n  margin: 0;\n  cursor: inherit;\n  line-height: inherit;\n  outline: none;\n  -moz-appearance: none;\n  -webkit-appearance: none;\n  appearance: none;\n  background-image: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n  z-index: 1;\n  width: 100%;\n  height: 100%;\n  cursor: pointer;\n  border: 1px solid #E1E3E4;\n  border-radius: 2px;\n  color: #333333;\n  padding: 0 30px 0 10px;\n  font-size: 15px;\n}\n.aca-product-button {\n  border: none;\n  cursor: pointer;\n  width: 100%;\n  min-height: 42px;\n  word-break: break-word;\n  padding: 8px 14px;\n  background-color: #d63384;\n  text-transform: uppercase;\n  line-height: inherit;\n  border: 1px solid transparent;\n  border-radius: 2px;\n  font-size: 14px;\n  color: #FFFFFF;\n  font-weight: bold;\n  letter-spacing: 1.039px;\nborder-radius: 10px;\n}\n.aca-product-button.aca-product-out-of-stock-button {\n  cursor: default;\n  background-color: #FFFFFF;\n  border: 1px solid #E040AF;\n  color: #E040AF;\n}\n.aca-button-loader {\n  display: block;\n  border: 3px solid transparent;\n  border-radius: 50%;\n  border-top: 3px solid #FFFFFF;\n  width: 20px;\n  height: 20px;\n  background: transparent;\n  margin: 0 auto;\n  -webkit-animation: aca-loader 0.5s linear infinite;\n  animation: aca-loader 0.5s linear infinite;\n}\n@-webkit-keyframes aca-loader {\n  0% {\n    -webkit-transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n  }\n}\n@keyframes aca-loader {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n.aca-button-tick {\n  display: block;\n  transform: rotate(45deg);\n  -webkit-transform: rotate(45deg);\n  height: 19px;\n  width: 9px;\n  margin: 0 auto;\n  border-bottom: 3px solid #FFFFFF;\n  border-right: 3px solid #FFFFFF;\n}\n.aca-button-cross \u003e svg {\n  width: 22px;\n  margin-bottom: -6px;\n}\n.aca-button-cross .button-cross-icon {\n  stroke: #FFFFFF;\n}\n#aca-bottom-close {\n  cursor: pointer;\n  text-align: center;\n  word-break: break-word;\n  font-size: 14px;\n  color: #E040AF;\n}\n@media screen and (min-width: 951px) and (max-width: 1200px) {\n   #aca-products-container {\n    width: 95%;\n    padding: 20px 0;\n  }\n  #aca-products-container .aca-product {\n    margin: 20px 3%;\n    padding: 0;\n  }\n}\n@media screen and (min-width: 951px) and (max-width: 1024px) {\n  #aca-products-container .aca-product {\n    margin: 20px 2%;\n  }\n}\n@media screen and (max-width: 950px) {\n  #aca-products-container {\n    width: 95%;\n    padding: 0;\n  }\n  #aca-products-container .aca-product {\n    width: 45%;\n    max-width: 200px;\n    margin: 2.5%;\n  }\n}\n@media screen and (min-width: 602px) and (max-width: 950px) {\n  #aca-products-container .aca-product {\n    margin: 4%;\n  }\n}\n@media screen and (max-width: 767px) {\n  #aca-modal-wrapper {\n    width: 90%;\n  }\n}\n@media screen and (max-width: 576px) {\n  #aca-modal-container {\n    padding: 23px 0 0;\n  }\n  #aca-close-icon-container {\n    display: block;\n  }\n  #aca-bottom-close {\n  margin: 10px;\n  font-size: 14px;\n  color: #E040AF;\n}\n  #aca-modal-headline {\n  margin: 10px 5%;\n  font-size: 20px;\n  color: #484848;\n}\n  #aca-modal-subheadline {\n  margin: 0 0 5px 0;\n  font-size: 12px;\n  color: #484848;\n}\n  .aca-product-image {\n    height: 250px;\n    margin: 0;\n  }\n  .aca-product-name, .aca-subscription-name, .aca-product-variant-name {\n    font-size: 16px;\n    margin: 5px 0;\n    font-weight: bold;\n  }\n  .aca-product-dropdown select, .aca-product-button, .aca-subscription-label {\n    font-size: 12px;\n  }\n  .aca-product-dropdown {\n    height: 30px;\n    margin-bottom: 7px;\n  }\n  .aca-product-button {\n    min-height: 30px;\n    padding: 4px;\n    margin-bottom: 7px;\n  }\n  .aca-button-loader {\n    border: 2px solid transparent;\n    border-top: 2px solid #FFFFFF;\n    width: 12px;\n    height: 12px;\n  }\n  .aca-button-tick {\n    height: 12px;\n    width: 6px;\n    border-bottom: 2px solid #FFFFFF;\n    border-right: 2px solid #FFFFFF;\n  }\n  .aca-button-cross \u003e svg {\n    width: 15px;\n    margin-bottom: -4px;\n  }\n  .aca-button-cross .button-cross-icon {\n    stroke: #FFFFFF;\n  }\n}","hasCustomizations":false,"addButtonText":"Add to Order","dismissButtonText":"No Thank You","outOfStockButtonText":"Out of Stock","imageUrl":null,"showProductLink":false,"subscriptionLabel":"Subscription Plan","closeModalOutsideClick":true},"refreshAfterBannerClick":false,"disableReapplyRules":false,"disableReloadOnFailedAddition":false,"autoReloadCartPage":false,"ajaxRedirectPath":null,"allowSimultaneousRequests":false,"applyRulesOnCheckout":false,"enableCartCtrlOverrides":true,"customRedirectFromCart":null,"scriptSettings":{"branding":{"show":false,"removalRequestSent":null},"productPageRedirection":{"enabled":false,"products":[],"redirectionURL":"\/"},"debugging":{"enabled":false,"enabledOn":null,"stringifyObj":false}
425,"reApplyValueBasedRulesInCart":false,"disableRedirectAfterFormSubmit":false,"fetchProductInfoFromSavedDomain":false,"enableBuyNowInterceptions":false,"removeProductsAddedFromExpiredRules":false,"useFinalPrice":false,"useFinalPriceGetEntireCart":false,"hideGiftedPropertyText":false,"fetchCartDataBeforeRequest":false,"removeEGPropertyFromSplitActionLineItems":false,"hideAlertsOnFrontend":false,"decodePayload":false,"customCSS":null,"delayUpdates":2000},"promoCodeMessageStyle":{"message":"Free gift added!"},"egDiscount":{"cartValueStopCollectionCheck":false},"accessToEnterprise":true},"translations":null,"defaultLocale":"en","shopDomain":"www.rockymountainoils.com"};
426        var productRedirectionEnabled = shopInfo.settings.scriptSettings.productPageRedirection.enabled;
427        if (["Unlimited", "Enterprise"].includes(shopInfo.subscriptionName) && productRedirectionEnabled) {
428          var products = shopInfo.settings.scriptSettings.productPageRedirection.products;
429          if (products.length > 0) {
430            var productIds = products.map(function(prod) {
431              var productGid = prod.id;
432              var productIdNumber = parseInt(productGid.split('/').pop());
433              return productIdNumber;
434            });
435            var productInfo = null;
436            var isProductInList = productIds.includes(productInfo.id);
437            if (isProductInList) {
438              var redirectionURL = shopInfo.settings.scriptSettings.productPageRedirection.redirectionURL;
439              if (redirectionURL) {
440                window.location = redirectionURL;
441              }
442            }
443          }
444        }
445
446        
447      } catch(err) {
448      return
449    }}
449)()
450  </script>
450
451
452
453
454<!-- END app block --><!-- BEGIN app block: shopify://apps/attentive/blocks/attn-tag/8df62c72-8fe4-407e-a5b3-72132be30a0d -->
454<script type="text/javascript" src="https://wrllp.rockymountainoils.com/rockymountainoils/load" onerror=" var fallbackScript = document.createElement('script'); fallbackScript.src = 'https://cdn.attn.tv/rockymountainoils/dtag.js'; document.head.appendChild(fallbackScript);" data-source="loaded?source=app-embed" defer="defer"></script>
454
455
456
457<!-- END app block --><!-- BEGIN app block: shopify://apps/yotpo-product-reviews/blocks/settings/eb7dfd7d-db44-4334-bc49-c893b51b36cf -->
458
459
460  
460<script type="text/javascript" src="https://cdn-widgetsrepository.yotpo.com/v1/loader/lJQvWsNScp9JikHPae5aRIjveHBjpzkexd8mF1de?languageCode=en" async></script>
460
461
462
463
464  
465<!-- END app block --><!-- BEGIN app block: shopify://apps/yotpo-loyalty-rewards/blocks/loader-app-embed-block/2f9660df-5018-4e02-9868-ee1fb88d6ccd -->
466    
466<script src="https://cdn-widgetsrepository.yotpo.com/v1/loader/1mzqlpuEeK12ZA7oqhI7dA" async></script>
466
467
468
469
470
471
472
473
474<!-- END app block --><!-- BEGIN app block: shopify://apps/regios-discounts/blocks/regios_discounts_embed/dc1514bb-4830-4102-bffa-e8b300bac5bd -->
475
476<script id="regios-dopp-config" type="application/json">
477{
478  "discountConfigs": {"1395517686082":"null","1395985318210":"null","1396108722498":"null","1396258505026":"null","1396432961858":"null","1398913335618":"null","1399524196674":"null","1399563813186":"null","1399709368642":"null","1400079057218":"null","1400277336386":"null","1400396939586":"null","1400616714562":"null","1400977097026":"null","1401057640770":"null","1401385713986":"null","1401508233538":"null","1401888440642":"null","1402028884290":"null","1402488095042":"null","1405469229378":"null","1405642375490":"null","1405969236290":"null","1407287951682":"null","1407300567362":"null","1407455592770":"null","1407635423554":"null","1407857656130":"null","1409679196482":"null","1409865875778":"null","1410568454466":"null","1410895020354":"null","1410917663042":"null","1410918809922":"null","1411040182594":"null","1411076194626":"null","1411129770306":"null","1411443622210":"null","1411552870722":"null","1411789783362":"null","1411913515330":"null","1412632412482":"null","1413023596866":"null","1413066424642":"null","1413141430594":"null","1413488443714":"null","1413615452482":"null","1413679579458":"null","1413736759618":"null","1413837521218":"null","1413861048642":"null","1414019744066":"null","1414118965570":"null","1414270157122":"null","1414501728578":"null","1414528434498":"null","1414528532802":"null","1414679855426":"null","1414705578306":"null","1414705807682":"null","1414747390274":"null","1414794477890":"null","1414818169154":"null","1414819053890":"null","1414852084034":"null","1414852215106":"null","1414852247874":"null","1414855524674":"null","1414855557442":"null","1414918373698":"null","1414921814338":"null","1414991020354":"{\"config\":{\"message\":\"Individual\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if0\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if1\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount0\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":995.8908986790632,\"y\":0},\"title\":\"Employee 50% off\"},\"otherwise\":{\"id\":\"check-if2\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount1\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"35\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":1416.7817973581264,\"y\":264},\"title\":\"DRC 35% off\"},\"otherwise\":{\"id\":\"check-if3\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount2\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"20\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":1821.8908986790632,\"y\":528},\"title\":\"Affiliate 20% off\"},\"otherwise\":{\"id\":\"check-if4\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount3\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"10\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":2227.8908986790634,\"y\":792},\"title\":\"Military 10% off\"},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Military\"]}}],\"dimensions\":{\"width\":278,\"height\":148},\"position\":{\"x\":1853,\"y\":792}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Affiliate\"]}}],\"dimensions\":{\"width\":278,\"height\":148},\"position\":{\"x\":1447,\"y\":528}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Doug Releaf Center\"]}}],\"dimensions\":{\"width\":292,\"height\":168},\"position\":{\"x\":1027,\"y\":264}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Employee\"]}}
478],\"dimensions\":{\"width\":278,\"height\":148},\"position\":{\"x\":620,\"y\":0}},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[{\"availablePublicationCount\":10,\"description\":\"\",\"descriptionHtml\":\"\",\"handle\":\"site-wide\",\"id\":\"gid:\/\/shopify\/Collection\/472076222786\",\"productsAutomaticallySortedCount\":294,\"productsCount\":294,\"productsManuallySortedCount\":0,\"publicationCount\":12,\"seo\":{\"description\":null,\"title\":null},\"ruleSet\":{\"appliedDisjunctively\":false,\"rules\":[{\"column\":\"VARIANT_INVENTORY\",\"condition\":\"0\",\"relation\":\"GREATER_THAN\"},{\"column\":\"TITLE\",\"condition\":\"Kit\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Free\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Membership\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Letter\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Bundle\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Oil'ty Plus Gift\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Bulk\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Gift Card\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"CBD\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Duo\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Test\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Donate\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Note\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Scented Storytime Essentials\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Literary Aromatica Collection\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Christmas Trio\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Holiday Traditions On-The-Go\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"SavedBy Package Protection\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Fall Blends Collection\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Harvest Festival On-the-Go\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Bamboo Toothbrush\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Holiday Blends Collection\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"9-Pack\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Tohi Immune Strength Multi-Purpose Cleaning Concentrate with Bottle Spray and Silicone Sleeve\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"2 Pack\",\"relation\":\"NOT_CONTAINS\"},{\"column\":\"TITLE\",\"condition\":\"Draft\",\"relation\":\"NOT_CONTAINS\"}]},\"sortOrder\":\"BEST_SELLING\",\"storefrontId\":\"gid:\/\/shopify\/Collection\/472076222786\",\"templateSuffix\":\"\",\"title\":\"Site Wide\",\"updatedAt\":\"2024-04-12T13:53:56Z\"}]}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"}],\"dimensions\":{\"width\":278,\"height\":201},\"position\":{\"x\":246,\"y\":0}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\"},\"startDate\":\"2024-04-11T17:16:16Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1414996885826":"null","1414997410114":"null","1415014973762":"null","1415015137602":"null","1415068680514":"null","1415097614658":"null","1415141327170":"null","1415141425474":"null","1415169212738":"null","1415169409346":"null","1415169442114":"null","1415187693890":"null","1415187824962":"null","1415285145922":"null","1415285244226":"null","1415285276994":"null","1415308640578":"null","1415308673346":"null","1415308804418":"null","1415309164866":"null","1415372210498":"null","1415375782210":"null","1415375814978":"null","1415375913282":"null","1415375946050":"null","1415376011586":"null","1415398359362":"null","1415398949186":"null","1415398981954":"null","1415399014722":"null","1415399047490":"null","1415399080258":"null","1415474577730":"null","1415477395778":"null","1415540769090":"null","1415540834626":"null","1415575404866":"null","1415594836290":"null","1415597031746":"null","1415597064514":"null","1415597130050":"null","1415597162818":"null","1415601488194":"null","1415673315650":"null","1415674036546":"null","1415676789058":"null","1415819166018":"null","1415819198786":"null","1415863370050":"null","1415870972226":"null","1415960002882":"null","1415960068418":"null","1415960199490":"null","1415975010626":"null","1415976190274":"null","1415976517954":"null","1415976649026":"null","1415976780098":"null","1415976845634":"null","1415977304386":"null","1415977795906":"null","1415978910018":"null","1415995195714":"null","1416041103682":"null","1416061878594":"null","1416066236738":"null","1416067088706":"null","1416069349698":"null","1416081670466":"null","1416085307714":"null","1416139833666":"null","1416141570370":"null","1416141668674":"null","1416149336386":"null","1416149369154":"null","1416191770946":"null","1416196063554":"null","1416266088770":"null","1416284635458":"null","1416284733762":"null","1416285061442":"null","1416365801794":"null","1416466825538":"null","1416467448130":"null","1416477049154":"null","1416481472834":"null","1416483930434":"null","1416494547266":"null","1416587149634":"null","1416611496258":"null","1416611660098":"null","1416800796994":"null","1416813478210":"null","1416862794050":"null","1416992129346":"null","1417027060034":"null","1417041150274":"null","1417041183042":"null","1417062515010":"null","1417158754626":"null","1417302442306":"{\"config\":{\"message\"
478:\"Wholesale\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if734\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if536\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount335\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":1030.9116923515815,\"y\":-90.13589104844854},\"title\":\"Wholesale Oils 50% Discount\"},\"otherwise\":{\"id\":\"check-if33\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount557\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"40\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":1452.447692505632,\"y\":171.08974303991113},\"title\":\"Wholesale Oils 40% Discount\"},\"otherwise\":{\"id\":\"check-if752\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount443\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"30\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":1839,\"y\":528},\"title\":\"Wholesale Oils 30% Discount\"},\"otherwise\":{\"id\":\"check-if725\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount345\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"25\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":2252.594420889743,\"y\":792},\"title\":\"Wholesale Oils 25% Discount\"},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Starter\",\"Wholesale Basic New\"]}}],\"dimensions\":{\"width\":292,\"height\":168},\"position\":{\"x\":1830.1194869375609,\"y\":894.2012826560978}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Starter\"]}},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"714.29\",\"appliesTo\":\"ENTIRE_ORDER\"}}],\"dimensions\":{\"width\":283,\"height\":201},\"position\":{\"x\":1451,\"y\":528}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Basic\",\"Wholesale Pro New\",\"Wholesale Starter 2\",\"Wholesale Basic New 2\"]}}],\"dimensions\":{\"width\":292,\"height\":208},\"position\":{\"x\":1031,\"y\":264}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Pro\"]}}],\"dimensions\":{\"width\":278,\"height\":148},\"position\":{\"x\":625,\"y\":0}},\"otherwise\":{\"id\":\"check-if786\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if682\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount258\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"20\"},\"dimensions\":{\"width\":332,\"height\":216},\"position\":{\"x\":1442.7312822272283,\"y\":768.1566668096231},\"title\":\"Wholesale Kits 20% Discount\"},\"otherwise\":{\"id\":\"check-if113\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount306\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"10\"},\"dimensions\":{\"width\":332,\"height\":336},\"position\":{\"x\":1828.3812239942686,\"y\":1112.0848568872639},\"title\":\"Wholesale Kits 10% Discount\"},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Starter\",\"Wholesale Starter 2\",\"Wholesale Basic New\",\"Wholesale Basic New 2\"]}}],\"dimensions\":{\"width\":292,\"height\":208},\"position\":{\"x\":1430.8640278775893,\"y\":1200.2413999663972}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Pro\",\"Wholesale Basic\",\"Wholesale Pro New\"]}}
478],\"dimensions\":{\"width\":292,\"height\":188},\"position\":{\"x\":1001.2239781958071,\"y\":529.3712429703917}},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"475126694210\"}}],\"dimensions\":{\"width\":292,\"height\":180},\"position\":{\"x\":657,\"y\":196},\"tooltips\":{}},\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"474194706754\"}}],\"dimensions\":{\"width\":283,\"height\":160},\"position\":{\"x\":246,\"y\":0},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\"},\"startDate\":\"2024-05-03T16:02:01Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1417331212610":"null","1417343795522":"null","1417382330690":"null","1417382396226":"null","1417382428994":"null","1417645261122":"null","1417729671490":"null","1417753657666":"null","1417810870594":"null","1417933652290":"null","1418092577090":"null","1418172662082":"null","1418179543362":"null","1418190586178":"null","1418192027970":"null","1418209231170":"null","1418209329474":"null","1418209395010":"null","1418212245826":"null","1418212278594":"null","1418232529218":"null","1418281255234":"null","1418347282754":"null","1418363306306":"null","1418373923138":"null","1418408657218":"null","1418420912450":"null","1418421076290":"null","1418460561730":"null","1418461118786":"null","1418461249858":"null","1418461380930":"null","1418504962370":"null","1418516234562":"null","1418516300098":"null","1418519773506":"null","1418539270466":"null","1418543857986":"null","1418614833474":"null","1418625777986":"null","1418636820802":"null","1418636853570":"null","1418638262594":"{\"config\":{\"message\":\"Oilty Plus\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if86\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if338\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount493\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"20\"},\"dimensions\":{\"width\":332,\"height\":244},\"position\":{\"x\":1039.2764082173626,\"y\":0},\"title\":\"Oilty Plus 20% OFF\"},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"483001893186,639998853487,463206875458,648980037999\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025567494466\":\"52064202457455\",\"8025539838274\":\"52064210354543\",\"8025537380674\":\"52064215433583\",\"8025523618114\":\"52064222282095\",\"8025534529858\":\"52064228901231\",\"8025533776194\":\"52064234307951\",\"8025539084610\":\"52064239780207\",\"8025532334402\":\"52064259408239\"}}}],\"dimensions\":{\"width\":292,\"height\":518},\"position\":{\"x\":642,\"y\":0},\"tooltips\":{}},\"otherwise\":{\"id\":\"check-if524\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount645\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"20\"}
478,\"dimensions\":{\"width\":332,\"height\":340},\"position\":{\"x\":1038.6862944162435,\"y\":319.5710659898477},\"title\":\"Oilty Plus 20% OFF\"},\"otherwise\":null,\"conditions\":[{\"type\":\"IF_IN_CART\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCTS\",\"selectedProducts\":[],\"asListOfIds\":\"8215212327234\"}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"483001893186,639998853487,463206875458,648980037999\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025567494466\":\"52064202457455\",\"8025539838274\":\"52064210354543\",\"8025537380674\":\"52064215433583\",\"8025523618114\":\"52064222282095\",\"8025534529858\":\"52064228901231\",\"8025533776194\":\"52064234307951\",\"8025539084610\":\"52064239780207\",\"8025532334402\":\"52064259408239\"}}}],\"dimensions\":{\"width\":292,\"height\":631},\"position\":{\"x\":643.0206039539254,\"y\":617.9831262115042},\"tooltips\":{}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}}],\"dimensions\":{\"width\":300,\"height\":0},\"position\":{\"x\":246,\"y\":0}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"NONE\"},\"startDate\":\"2024-05-13T18:03:58Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1418664640834":"null","1418664739138":"null","1418752819522":"null","1418762944834":"null","1418766090562":"null","1418793648450":"null","1418847420738":"null","1418861117762":"null","1418886644034":"null","1418910138690":"null","1418910335298":"null","1418925801794":"null","1418963845442":"null","1419031576898":"null","1419044225346":"null","1419096064322":"null","1419096162626":"null","1419096195394":"null","1419144069442":"null","1419144167746":"null","1419144200514":"null","1419144233282":"null","1419144266050":"null","1419147182402":"null","1419151802690":"null","1419168350530":"null","1419168383298":"null","1419168416066":"null","1419183456578":"null","1419183751490":"null","1419233689922":"null","1419234672962":"null","1419243585858":"null","1419341988162":"null","1419342020930":"null","1419343593794":"null","1419343823170":"null","1419357651266":"null","1419362533698":"null","1419362632002":"null","1419362664770":"null","1419362697538":"null","1419365876034":"null","1419366203714":"null","1419366433090":"null","1419438686530":"null","1419457036610":"null","1419553603906":"null","1423161000258":"null","1424955736386":"null","1424961306946":"null","1426322391362":"null","1637700206959":"{\"config\":{\"message\":\"Wholesale Pro Discount\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"converted-legacy-criteria\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Pro\"]}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"tagsToCheck\":[],\"selectedCollections\":[],\"asListOfIds\":\"474194706754\"}}],\"then\":{\"id\":\"converted-legacy-discount\",\"type\":\"APPLY_DISCOUNT\",\"title\":\"Wholesale Oils 50% OFF\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\",\"quantity\":null}
478,\"dimensions\":{\"width\":332,\"height\":336},\"position\":{\"x\":655.4544613350957,\"y\":-0.7081295439524524}},\"otherwise\":{\"id\":\"check-if559\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount897\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"20\"},\"dimensions\":{\"width\":332,\"height\":336},\"position\":{\"x\":1045.7081295439525,\"y\":384.7081295439524},\"title\":\"Wholesale Kits 20% OFF\"},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Pro\"]}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"475126694210\"}}],\"dimensions\":{\"width\":292,\"height\":233},\"position\":{\"x\":657,\"y\":384.7081295439524},\"tooltips\":{}},\"dimensions\":{\"width\":283,\"height\":372},\"position\":{\"x\":246,\"y\":0},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ONE_TIME_ONLY\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\"},\"startDate\":\"2024-10-04T16:06:53Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1638618595695":"null","1639605371247":"{\"config\":{\"message\":\"Wholesale Basic Discount\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"converted-legacy-criteria\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Basic\"]}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"tagsToCheck\":[],\"selectedCollections\":[],\"asListOfIds\":\"474194706754\"}}],\"then\":{\"id\":\"converted-legacy-discount\",\"type\":\"APPLY_DISCOUNT\",\"title\":\"Wholesale Oils 40% OFF\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"40\",\"quantity\":null},\"dimensions\":{\"width\":332,\"height\":336},\"position\":{\"x\":655.4544613350957,\"y\":-0.7081295439524524}},\"otherwise\":{\"id\":\"check-if559\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount897\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"20\"},\"dimensions\":{\"width\":332,\"height\":336},\"position\":{\"x\":1045.7081295439525,\"y\":384.7081295439524},\"title\":\"Wholesale Kits 20% OFF\"},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Wholesale Basic\"]}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"475126694210\"}}],\"dimensions\":{\"width\":292,\"height\":233},\"position\":{\"x\":657,\"y\":384.7081295439524},\"tooltips\":{}},\"dimensions\":{\"width\":283,\"height\":213},\"position\":{\"x\":246,\"y\":0},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\"}
478,\"startDate\":\"2024-10-11T12:01:37Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1658202030447":"null","1658202554735":"null","1658202587503":"null","1665488093551":"null","1665490256239":"null","1666257387887":"null","1666470805871":"null","1668327965039":"null","1669053186415":"{\"config\":{\"message\":\"Subscription + Oilty Plus Regular Combo\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if86\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if338\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount493\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\"},\"dimensions\":{\"width\":332,\"height\":244},\"position\":{\"x\":1040.411214951014,\"y\":0},\"title\":\"Oilty Plus + Sub Combo\"},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"463206875458\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"35.00\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"}}],\"dimensions\":{\"width\":292,\"height\":286},\"position\":{\"x\":642,\"y\":0},\"tooltips\":{}},\"otherwise\":{\"id\":\"check-if524\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount645\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\"},\"dimensions\":{\"width\":332,\"height\":308},\"position\":{\"x\":1035.9275540169886,\"y\":331.3098152276321},\"title\":\"Oilty Plus + Sub Combo\"},\"otherwise\":null,\"conditions\":[{\"type\":\"IF_IN_CART\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCTS\",\"selectedProducts\":[],\"asListOfIds\":\"8215212327234\"}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"463206875458\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"35.00\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Special Postcard Offer\"]}}],\"dimensions\":{\"width\":292,\"height\":432},\"position\":{\"x\":641.7693078539081,\"y\":313.81315377689657},\"tooltips\":{}},\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMERS\",\"selectedCustomers\":[{\"id\":\"gid:\/\/shopify\/Customer\/7106794291522\",\"name\":\"Karlo Vladomar Jamandores\",\"caption\":\"[email protected]\"}]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Has active product subscriptions\"]}}],\"dimensions\":{\"width\":292,\"height\":306},\"position\":{\"x\":246,\"y\":0},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"NONE\"}
478,\"startDate\":\"2024-05-13T18:03:58Z\",\"endDate\":\"2025-02-10T13:20:25Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1669241602415":"null","1669635735919":"null","1670596854127":"null","1670601015663":"null","1670604489071":"null","1671074808175":"null","1672310030703":"null","1673341960559":"null","1673345925487":"null","1673467429231":"null","1674826416495":"{\"config\":{\"message\":\"Oilty Plus + Special Postcard Offer\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if86\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if338\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount493\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"28.65\"},\"dimensions\":{\"width\":332,\"height\":316},\"position\":{\"x\":1039.2764082173626,\"y\":0},\"title\":\"Addt'l Oilty Plus Discount\"},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"639998853487,648980037999,463206875458\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"SUBSCRIPTIONS_ONLY\"},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"35.00\",\"appliesTo\":\"ENTIRE_ORDER\"}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025567494466\":\"52064202457455\",\"8025539838274\":\"52064210354543\",\"8025537380674\":\"52064215433583\",\"8025523618114\":\"52064222282095\",\"8025534529858\":\"52064228901231\",\"8025533776194\":\"52064234307951\",\"8025539084610\":\"52064239780207\",\"8025532334402\":\"52064259408239\"}}}],\"dimensions\":{\"width\":292,\"height\":711},\"position\":{\"x\":642,\"y\":0},\"tooltips\":{}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Special Postcard Offer\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Subscription Discount Combo\"]}}],\"dimensions\":{\"width\":292,\"height\":306},\"position\":{\"x\":246,\"y\":-1.3047377326565055},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"STACK\",\"cartLineSortOrder\":\"NONE\"},\"startDate\":\"2024-05-13T18:03:58Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1676495749487":"{\"config\":{\"message\":\"Oilty Plus + Discount Combo\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if86\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if338\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount493\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"23.5\"},\"dimensions\":{\"width\":332,\"height\":308},\"position\":{\"x\":1021.0446147553998,\"y\":-20.257548291069895},\"title\":\"Addt'l Oilty Plus Discount\"},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"639998853487,429243957570,463206875458\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"SUBSCRIPTIONS_ONLY\"},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"35.00\",\"appliesTo\":\"ENTIRE_ORDER\"}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"14725145461103\":\"52018307629423\",\"8025567330626\":\"52064
478188629359\",\"8025567494466\":\"52064202457455\",\"8025539838274\":\"52064210354543\",\"8025537380674\":\"52064215433583\",\"8025523618114\":\"52064222282095\",\"8025534529858\":\"52064228901231\",\"8025533776194\":\"52064234307951\",\"8025539084610\":\"52064239780207\",\"8025532334402\":\"52064259408239\"}}}],\"dimensions\":{\"width\":292,\"height\":719},\"position\":{\"x\":642,\"y\":0},\"tooltips\":{}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Subscription Discount Combo\"]}}],\"dimensions\":{\"width\":292,\"height\":233},\"position\":{\"x\":246,\"y\":-1.3047377326565055},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"STACK\",\"cartLineSortOrder\":\"NONE\"},\"startDate\":\"2024-05-13T18:03:58Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1677628309871":"{\"config\":{\"message\":\"Oilty Plus + Discount Combo - On Singles and Blends\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if86\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if338\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount493\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"35\"},\"dimensions\":{\"width\":332,\"height\":340},\"position\":{\"x\":1021.0446147553998,\"y\":-20.257548291069895},\"title\":\"Oilty Plus + Subscriber Discount\"},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"639998853487,648980037999,463206875458\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"429147455810,429147423042\"}},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"35.00\",\"appliesTo\":\"ENTIRE_ORDER\"}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025567494466\":\"52064202457455\",\"8025539838274\":\"52064210354543\",\"8025537380674\":\"52064215433583\",\"8025523618114\":\"52064222282095\",\"8025534529858\":\"52064228901231\",\"8025533776194\":\"52064234307951\",\"8025539084610\":\"52064239780207\",\"8025532334402\":\"52064259408239\"}}}],\"dimensions\":{\"width\":292,\"height\":784},\"position\":{\"x\":642,\"y\":0},\"tooltips\":{}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Subscription Discount Combo\"]}}],\"dimensions\":{\"width\":292,\"height\":233},\"position\":{\"x\":246,\"y\":-1.3047377326565055},\"tooltips\":{}}
478,\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"NONE\"},\"startDate\":\"2024-05-13T18:03:58Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1677633978735":"{\"config\":{\"message\":\"Oilty Plus + Special Postcard Offer + Discount Combo\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if86\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"check-if338\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"apply-discount493\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\"},\"dimensions\":{\"width\":332,\"height\":340},\"position\":{\"x\":1006.1704056338626,\"y\":2.0268981173571348},\"title\":\"Oilty Plus + Subscriber Discount\"},\"otherwise\":null,\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"639998853487,648980037999,463206875458\"}},{\"type\":\"SELLING_PLAN\",\"includeOrExclude\":\"INCLUDE\",\"appliesTo\":\"ONE_TIME_ONLY\"},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"429147423042,429147455810\"}},{\"type\":\"PURCHASE_REQUIREMENTS\",\"minOrMax\":\"MIN\",\"requirements\":{\"requirementType\":\"SUBTOTAL\",\"quantity\":\"0\",\"subtotal\":\"35.00\",\"appliesTo\":\"ENTIRE_ORDER\"}},{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"EXCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025567494466\":\"52064202457455\",\"8025539838274\":\"52064210354543\",\"8025537380674\":\"52064215433583\",\"8025523618114\":\"52064222282095\",\"8025534529858\":\"52064228901231\",\"8025533776194\":\"52064234307951\",\"8025539084610\":\"52064239780207\",\"8025532334402\":\"52064259408239\"}}}],\"dimensions\":{\"width\":292,\"height\":784},\"position\":{\"x\":642,\"y\":0},\"tooltips\":{}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Special Postcard Offer\"]}},{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Subscription Discount Combo\"]}}],\"dimensions\":{\"width\":292,\"height\":306},\"position\":{\"x\":246,\"y\":-1.3047377326565055},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"NONE\"}
478,\"startDate\":\"2024-05-13T18:03:58Z\",\"endDate\":null,\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1679006761327":"null","1680937353583":"null","1680981492079":"null","1680982016367":"null","1680982409583":"null","1683166626159":"null","1684690076015":"null","1684696760687":"null","1684697186671":"null","1686201106799":"null","1686213722479":"null","1688972984687":"{\"config\":{\"message\":\"Oilty Plus - Early Access - Buy 2, get another 1 Free\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"entrypoint\",\"type\":\"BUY_X\",\"requirements\":[{\"quantity\":3,\"productEligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"472076222786\",\"selectedProductVariants\":[],\"compactFormat\":{\"8047238250818\":\"49116053209410\",\"8286183686466\":\"45012481081666,45012481114434,45012481147202\",\"9073966842178\":\"47745637286210\",\"8833223917890\":\"47069438607682\",\"14622951801199\":\"51901252305263\",\"8025529155906\":\"44111254913346\"}}}],\"then\":{\"id\":\"entrypoint-then-apply-discount\",\"type\":\"APPLY_DISCOUNT\",\"title\":\"Buy 2, get another 1 free\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"472076222786\",\"selectedProductVariants\":[],\"compactFormat\":{\"8047238250818\":\"49116053209410\",\"8286183686466\":\"45012481081666,45012481114434,45012481147202\",\"9073966842178\":\"47745637286210\",\"8833223917890\":\"47069438607682\",\"14622951801199\":\"51901252305263\",\"8025529155906\":\"44111254913346\"}},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"100\"},\"quantity\":\"1\"},\"tooltips\":{},\"dimensions\":{\"width\":650,\"height\":964},\"position\":{\"x\":1377.1307017543859,\"y\":87.08746867167919}},\"otherwise\":null,\"dimensions\":{\"width\":324,\"height\":472},\"position\":{\"x\":578,\"y\":0}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_CUSTOMER_TAGS\",\"tagsToCheck\":[\"Oilty Plus\"]}}],\"position\":{\"x\":246,\"y\":0},\"dimensions\":{\"width\":247,\"height\":160},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-05-21T06:00:00Z\",\"endDate\":\"2026-05-22T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1688980423023":"{\"config\":{\"message\":\"Buy 2, get another 1 Free\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"buy-x726\",\"type\":\"BUY_X\",\"requirements\":[{\"quantity\":3,\"productEligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"429146669378\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8025523618114\":\"52064222282095\",\"8025567494466\":\"52064202457455\",\"8025533776194\":\"52064234307951\",\"14725145461103\":\"52681213509999\",\"8025539084610\":\"52064239780207\"}}}],\"then\":{\"id\":\"apply-discount518\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8025523618114\":\"52064222282095\",\"8025567494466\":\"52064202457455\",\"8025533776194\":\"52064234307951\",\"14725145461103\":\"52681213509999\",\"8025539084610\":\"52064239780207\"}},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"100\"},\"quantity\":\"1\"}
478,\"dimensions\":{\"width\":650,\"height\":1336},\"position\":{\"x\":1171.0000105765869,\"y\":20.000000846126945},\"title\":\"Buy 2, get another 1 Free\"},\"otherwise\":null,\"position\":{\"x\":589.9869602771422,\"y\":-0.9869602771422592},\"dimensions\":{\"width\":587,\"height\":868}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"ALL_CUSTOMERS\"}}],\"position\":{\"x\":246,\"y\":0},\"dimensions\":{\"width\":228,\"height\":212},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-08-15T06:00:00Z\",\"endDate\":\"2026-08-16T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1691298496879":"null","1696461881711":"null","1696462340463":"null","1696462799215":"null","1696463061359":"null","1698844279151":"null","1720390156655":"null","1732104192367":"null","1733161058671":"null","1734285361519":"null","1735133626735":"null","1736314913135":"null","1737187754351":"null","1737316434287":"null","1738645209455":"null","1751098655087":"null","1751472177519":"null","1769778577775":"{\"config\":{\"message\":\"BOGO Mix and Match\",\"isEnabled\":true,\"customLogic\":{\"id\":\"root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"ALL_CUSTOMERS\"}}],\"then\":{\"id\":\"buy-x726\",\"type\":\"BUY_X\",\"requirements\":[{\"productEligibility\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"431063892290\"},\"quantity\":2}],\"then\":{\"id\":\"apply-discount518\",\"type\":\"APPLY_DISCOUNT\",\"title\":\"2026-09 - National Coffee Day BOGO\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_COLLECTIONS\",\"selectedCollections\":[],\"asListOfIds\":\"431063892290\"},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"100\"},\"quantity\":\"1\"},\"dimensions\":{\"width\":650,\"height\":964},\"position\":{\"x\":1166.8502160760586,\"y\":1.9375972342264483}},\"otherwise\":null,\"disableCurrencyConversion\":false,\"dimensions\":{\"width\":300,\"height\":0},\"position\":{\"x\":642,\"y\":0}},\"otherwise\":null,\"dimensions\":{\"width\":300,\"height\":0},\"position\":{\"x\":246,\"y\":0}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-09-25T06:00:00Z\",\"endDate\":\"2026-09-30T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1773430309231":"null","1773586088303":"null","1779224150383":"null","1780893253999":"null","1780896366959":"null","1780902363503":"{\"config\":{\"message\":\"BOGO 50% OFF 15ml Oils\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"buy-x726\",\"type\":\"BUY_X\",\"requirements\":[{\"quantity\":2,\"productEligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"650543464815\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8652751077698\":\"47078204834114\",\"8896924516674\":\"47226891534658\",\"8025515393346\":\"44111103918402\",\"8025520374082\":\"44111183642946\",\"8025522864450\":\"44111202025794\",\"8025523028290\":\"44111202353474\",\"8025523093826\":\"44111204254018\",\"8025526403394\":\"44111230861634\",\"8025526436162\":\"44111230894402\",\"8025526665538\":\"44111237382466\",\"8025526993218\":\"44111238955330\",\"8025526829378\":\"44111238758722\",\"8025527058754\":\"44111239184706\",\"9176715854146\":\"51879290405231\",\"8025566806338\":\"44111527149890\",\"8025553011010\":\"44111435759938\",\"9583563964738\":\"49109628092738\",\"8025528009026\":\"44111245574466\",\"8025534136642\":\"44111298625858\",\"8025528336706\":\"44111247835458\",\"8973668319554\":\"51879047856495\",\"8025529221442\":\"44111255273794\",\"8025529811266\":\"44111260877122\",\"8025530401090\":\"44111265956162\",\"8025539543362\":\"44111350333762\",\"8025531842882\":\"44111279882562\",\"8025563398466\":\"44111498117442\",\"8025532006722\":\"44111280800066\",\"8025567756610\":\"44111536488770\",\"8025567494466\":\"44111532425538\",\"9692562850114\":\"51986965954927\",\"8323577479490\":\"45140473479490\",\"8307945111874\":\"45092108239170\",\"8025544589634\":\"45739965546818\",\"8025534005570\":\"44111296135490\",\"8025568051522\":\"44111539437890\",\"9583530246466\":\"49109448720706\",\"8025568215362\":\"44111541109058\",\"9585364861250\":\"51879297483119\",\"9039492743490\":\"518793406385
47875\",\"8025535021378\":\"44111302885698\",\"8025535086914\":\"44111303016770\",\"8025535578434\":\"44111305474370\",\"8652750848322\":\"47078220398914\",\"8025536168258\":\"44111311503682\",\"8025536332098\":\"44111312027970\",\"8025536594242\":\"44111313469762\",\"8671334302018\":\"46808482775362\",\"8025536790850\":\"44111316844866\",\"8025537151298\":\"51752046952815\",\"8025567330626\":\"44111529771330\",\"8025537610050\":\"44111330902338\",\"8025539838274\":\"44111352037698\",\"8025538396482\":\"44111343288642\",\"8025538560322\":\"44111343714626\",\"8025538920770\":\"44111344959810\",\"8047231893826\":\"49037006864706\"}}}],\"then\":{\"id\":\"apply-discount518\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8652751077698\":\"47078204834114\",\"8896924516674\":\"47226891534658\",\"8025515393346\":\"44111103918402\",\"8025520374082\":\"44111183642946\",\"8025522864450\":\"44111202025794\",\"8025523028290\":\"44111202353474\",\"8025523093826\":\"44111204254018\",\"8025526403394\":\"44111230861634\",\"8025526436162\":\"44111230894402\",\"8025526665538\":\"44111237382466\",\"8025526993218\":\"44111238955330\",\"8025526829378\":\"44111238758722\",\"8025527058754\":\"44111239184706\",\"9176715854146\":\"51879290405231\",\"8025566806338\":\"44111527149890\",\"8025553011010\":\"44111435759938\",\"9583563964738\":\"49109628092738\",\"8025528009026\":\"44111245574466\",\"8025534136642\":\"44111298625858\",\"8025528336706\":\"44111247835458\",\"8973668319554\":\"51879047856495\",\"8025529221442\":\"44111255273794\",\"8025529811266\":\"44111260877122\",\"8025530401090\":\"44111265956162\",\"8025539543362\":\"44111350333762\",\"8025531842882\":\"44111279882562\",\"8025563398466\":\"44111498117442\",\"8025532006722\":\"44111280800066\",\"8025567756610\":\"44111536488770\",\"8025567494466\":\"44111532425538\",\"9692562850114\":\"51986965954927\",\"8323577479490\":\"45140473479490\",\"8307945111874\":\"45092108239170\",\"8025544589634\":\"45739965546818\",\"8025534005570\":\"44111296135490\",\"8025568051522\":\"44111539437890\",\"9583530246466\":\"49109448720706\",\"8025568215362\":\"44111541109058\",\"9585364861250\":\"51879297483119\",\"9039492743490\":\"51879340638575\",\"8025535021378\":\"44111302885698\",\"8025535086914\":\"44111303016770\",\"8025535578434\":\"44111305474370\",\"8652750848322\":\"47078220398914\",\"8025536168258\":\"44111311503682\",\"8025536332098\":\"44111312027970\",\"8025536594242\":\"44111313469762\",\"8671334302018\":\"46808482775362\",\"8025536790850\":\"44111316844866\",\"8025537151298\":\"51752046952815\",\"8025567330626\":\"44111529771330\",\"8025537610050\":\"44111330902338\",\"8025539838274\":\"44111352037698\",\"8025538396482\":\"44111343288642\",\"8025538560322\":\"44111343714626\",\"8025538920770\":\"44111344959810\",\"8047231893826\":\"49037006864706\"}},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"50\"},\"quantity\":\"1\"},\"dimensions\":{\"width\":650,\"height\":3064},\"position\":{\"x\":1371.327446209709,\"y\":2.36110714258162},\"title\":\"BOGO 50% OFF 15ml Oils\"},\"otherwise\":null,\"position\":{\"x\":592.2356329043987,\"y\":3.4989784677659372},\"dimensions\":{\"width\":634,\"height\":2596}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"ALL_CUSTOMERS\"}}],\"position\":{\"x\":246,\"y\":0},\"dimensions\":{\"width\":228,\"height\":212},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"}
478,\"startDate\":\"2026-08-11T06:00:00Z\",\"endDate\":\"2026-08-12T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1781208351087":"null","1781362884975":"null","1782972088687":"{\"config\":{\"message\":\"B2G1 - End of Summer Sale\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"buy-x726\",\"type\":\"BUY_X\",\"requirements\":[{\"quantity\":3,\"productEligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"429146669378\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8025523552578\":\"44111210807618\",\"9418313072962\":\"51977942565231\",\"8025526436162\":\"44111230894402\",\"8025552585026\":\"44111434711362\",\"8025527746882\":\"44111243936066\",\"8025567068482\":\"53115392491887\",\"9583563964738\":\"49109628092738\",\"8025542525250\":\"44111374745922\",\"8025563758914\":\"44111498641730\",\"8025578078530\":\"52948354269551\",\"8323577479490\":\"45140473479490\",\"8025544589634\":\"45739965546818\",\"9583530246466\":\"49109448720706\",\"8025568411970\":\"52948343062895\",\"8025542328642\":\"44111370912066\",\"8025542361410\":\"44111370944834\",\"8025537937730\":\"44111337587010\",\"8652750127426\":\"46808401871170\",\"8025542623554\":\"44111375532354\",\"8025538658626\":\"44111343878466\",\"8025542558018\":\"44111374778690\",\"8025538756930\":\"44111344828738\"}}}],\"then\":{\"id\":\"apply-discount518\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8025523552578\":\"44111210807618\",\"9418313072962\":\"51977942565231\",\"8025526436162\":\"44111230894402\",\"8025552585026\":\"44111434711362\",\"8025527746882\":\"44111243936066\",\"8025567068482\":\"53115392491887\",\"9583563964738\":\"49109628092738\",\"8025542525250\":\"44111374745922\",\"8025563758914\":\"44111498641730\",\"8025578078530\":\"52948354269551\",\"8323577479490\":\"45140473479490\",\"8025544589634\":\"45739965546818\",\"9583530246466\":\"49109448720706\",\"8025568411970\":\"52948343062895\",\"8025542328642\":\"44111370912066\",\"8025542361410\":\"44111370944834\",\"8025537937730\":\"44111337587010\",\"8652750127426\":\"46808401871170\",\"8025542623554\":\"44111375532354\",\"8025538658626\":\"44111343878466\",\"8025542558018\":\"44111374778690\",\"8025538756930\":\"44111344828738\"}},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"100\"},\"quantity\":\"1\"},\"dimensions\":{\"width\":650,\"height\":2781},\"position\":{\"x\":1171.0000105765869,\"y\":20.000000846126945},\"title\":\"Buy 2, get another 1 Free\"},\"otherwise\":null,\"position\":{\"x\":589.9869602771422,\"y\":-0.9869602771422592},\"dimensions\":{\"width\":493,\"height\":2313}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"ALL_CUSTOMERS\"}}],\"position\":{\"x\":246,\"y\":0},\"dimensions\":{\"width\":228,\"height\":212},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-08-21T06:00:00Z\",\"endDate\":\"2026-08-24T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}
478","1782972449135":"{\"config\":{\"message\":\"B2G1 - Harvest Season Preparation\",\"isEnabled\":true,\"customLogic\":{\"id\":\"converted-legacy-root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"then\":{\"id\":\"buy-x726\",\"type\":\"BUY_X\",\"requirements\":[{\"quantity\":3,\"productEligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"429146669378\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8025542197570\":\"44111368421698\",\"9583563964738\":\"49109628092738\",\"9565521838402\":\"51879406993775\",\"9583530246466\":\"49109448720706\",\"8025565561154\":\"44111514468674\",\"8025536758082\":\"44111314387266\",\"8025542263106\":\"44111369666882\"}}}],\"then\":{\"id\":\"apply-discount518\",\"type\":\"APPLY_DISCOUNT\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"\",\"selectedProducts\":[],\"selectedProductVariants\":[],\"compactFormat\":{\"8025542197570\":\"44111368421698\",\"9583563964738\":\"49109628092738\",\"9565521838402\":\"51879406993775\",\"9583530246466\":\"49109448720706\",\"8025565561154\":\"44111514468674\",\"8025536758082\":\"44111314387266\",\"8025542263106\":\"44111369666882\"}},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"100\"},\"quantity\":\"1\"},\"dimensions\":{\"width\":650,\"height\":1506},\"position\":{\"x\":1171.0000105765869,\"y\":20.000000846126945},\"title\":\"Buy 2, get another 1 Free\"},\"otherwise\":null,\"position\":{\"x\":589.9869602771422,\"y\":-0.9869602771422592},\"dimensions\":{\"width\":493,\"height\":1038}},\"otherwise\":null,\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"ALL_CUSTOMERS\"}}],\"position\":{\"x\":246,\"y\":0},\"dimensions\":{\"width\":228,\"height\":212},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-08-29T06:00:00Z\",\"endDate\":\"2026-09-01T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1785854984559":"{\"config\":{\"message\":\"B2G1 - 9\/11 Remembrance\",\"isEnabled\":true,\"customLogic\":{\"id\":\"root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if39\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"conditions\":[{\"type\":\"CUSTOMER_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"ALL_CUSTOMERS\"}}],\"then\":{\"id\":\"buy-x726\",\"type\":\"BUY_X\",\"requirements\":[{\"productEligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025566445890\":\"44111522758978\",\"8025515393346\":\"44111103918402\",\"8025526665538\":\"44111237382466\",\"9176715854146\":\"51879290405231\",\"8025532498242\":\"44111284633922\",\"8025533415746\":\"44111294300482\",\"8025536332098\":\"44111312027970\",\"8025536495938\":\"44111312388418\",\"8293731762498\":\"45042609226050\",\"8025538396482\":\"44111343288642\",\"8025541050690\":\"44111360590146\"}},\"quantity\":2}],\"then\":{\"id\":\"apply-discount518\",\"type\":\"APPLY_DISCOUNT\",\"title\":\"Buy 1, get another 1 Free\",\"value\":{\"type\":\"GET_Y\",\"customerGets\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedProductVariants\":[],\"compactFormat\":{\"8025566445890\":\"44111522758978\",\"8025515393346\":\"44111103918402\",\"8025526665538\":\"44111237382466\",\"9176715854146\":\"51879290405231\",\"8025532498242\":\"44111284633922\",\"8025533415746\":\"44111294300482\",\"8025536332098\":\"44111312027970\",\"8025536495938\":\"44111312388418\",\"8293731762498\":\"45042609226050\",\"802553839
4786482\":\"44111343288642\",\"8025541050690\":\"44111360590146\"}},\"atDiscountedValue\":{\"type\":\"PERCENTAGE\",\"percentage\":\"100\"},\"quantity\":\"1\"},\"dimensions\":{\"width\":650,\"height\":1846},\"position\":{\"x\":1038,\"y\":0}},\"otherwise\":null,\"disableCurrencyConversion\":false,\"dimensions\":{\"width\":300,\"height\":0},\"position\":{\"x\":642,\"y\":0}},\"otherwise\":null,\"dimensions\":{\"width\":300,\"height\":0},\"position\":{\"x\":246,\"y\":0}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"LOWEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-09-11T06:00:00Z\",\"endDate\":\"2026-09-12T05:59:59Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}","1789746610543":"{\"config\":{\"message\":\"Build a Fall Kit\",\"isEnabled\":true,\"customLogic\":{\"id\":\"root\",\"type\":\"ROOT\",\"entryPoint\":{\"id\":\"check-if-0\",\"type\":\"CHECK_IF\",\"matchType\":\"AND\",\"conditions\":[{\"type\":\"PRODUCT_ELIGIBILITY\",\"includeOrExclude\":\"INCLUDE\",\"eligibility\":{\"type\":\"SPECIFIC_PRODUCT_VARIANTS\",\"selectedCollections\":[],\"asListOfIds\":\"615752958319\",\"selectedProductVariants\":[],\"compactFormat\":{\"8652751077698\":\"47078204834114\",\"8025566806338\":\"44111527149890\",\"8025532006722\":\"44111280800066\",\"8896924516674\":\"47226891534658\",\"8671334302018\":\"46808482775362\",\"8025536758082\":\"44111314387266\",\"8025542197570\":\"44111368421698\",\"8025542263106\":\"44111369666882\",\"8025565561154\":\"44111514468674\",\"8025526993218\":\"44111238955330\",\"8025531842882\":\"44111279882562\",\"8025539543362\":\"44111350333762\",\"8025536168258\":\"44111311503682\",\"8652750848322\":\"47078220398914\",\"8025539838274\":\"44111352037698\"}}}],\"then\":{\"id\":\"apply-discount-0\",\"type\":\"APPLY_DISCOUNT\",\"title\":\"Build a Fall Kit\",\"value\":{\"type\":\"VOLUME\",\"breaks\":[{\"minimumQuantity\":\"2\",\"discount\":{\"type\":\"PERCENTAGE\",\"percentage\":\"15\"}},{\"minimumQuantity\":\"3\",\"discount\":{\"type\":\"PERCENTAGE\",\"percentage\":\"25\"}},{\"minimumQuantity\":\"4\",\"discount\":{\"type\":\"PERCENTAGE\",\"percentage\":\"35\"}},{\"minimumQuantity\":\"5\",\"discount\":{\"type\":\"PERCENTAGE\",\"percentage\":\"45\"}}],\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\",\"basedOn\":\"QUANTITY\",\"disableCurrencyConversion\":false},\"dimensions\":{\"width\":606,\"height\":744},\"position\":{\"x\":642,\"y\":0}},\"otherwise\":null,\"dimensions\":{\"width\":292,\"height\":512},\"position\":{\"x\":246,\"y\":0},\"tooltips\":{}},\"dimensions\":{\"width\":150,\"height\":0},\"position\":{\"x\":0,\"y\":0}},\"customerEligibility\":{\"type\":\"ALL_CUSTOMERS\"},\"productEligibility\":{\"type\":\"ALL_PRODUCTS\"},\"developerOptions\":{\"alwaysThrow\":false},\"minimumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"maximumPurchaseRequirements\":{\"requirementType\":\"NONE\",\"quantity\":\"0\",\"subtotal\":\"0\",\"appliesTo\":\"ELIGIBLE_LINE_ITEMS\"},\"value\":{\"type\":\"PERCENTAGE\",\"percentage\":\"0\"},\"appliesToSellingPlans\":\"ALL_SELLING_PLANS\",\"salePriceHandlingStrategy\":\"APPLY_TO_COMPARE_AT_PRICE\",\"cartLineSortOrder\":\"HIGHEST_PRICED_PRODUCTS\"},\"startDate\":\"2026-10-02T06:00:00Z\",\"endDate\":\"2026-10-05T06:00:00Z\",\"discountClass\":\"PRODUCT\",\"discountClasses\":[\"PRODUCT\"]}"},
479  "calculateDiscountBasedOnQuantity": false,
480  "countryCode": "US",
481  "currencyCode": "USD",
482  "currencySymbol": "$",
483  
484  "customer": null,
485  
486  "customerMetafieldsToCheck": "",
487  
488  "moneyFormat": "$0.00",
489  "moneyFormatString": "${{amount}}",
490  
491  "themeType": "auto_detect",
492  "badgeTemplate": "[discount_percentage] OFF",
493  "badgeCss": "",
494  "descriptionTemplate": "Your price: \u003cb\u003e[sale_price]\u003c\/b\u003e",
495  "descriptionCss": "",
496  "priceOnSaleClass": "",
497  "delay": 0,
498  "logLevel": "error",
499  "regularPriceTemplate": "[regular_price]",
500  "salePriceTemplate": "[sale_price]",
501  "regiosDiscountsAppProxyUrl": "\/apps\/regios-discounts",
502  "useAppProxyForManualCodeStrikethrough": false,
503  "cart": {
504    "attributes": {},
505    "discountCodes": [],
506    "items": [
507      
508    ]
509  },
510  "featureFlags": "",
511  "designMode": false,
512  
513    "marketId": 39835631938,
514  
515
516  "doppV3Fallbacks": {
517    
518      "product": null,
519    
520    "keep-this-last": ""
521  }
522  
523}
524</script>
524
525
526<script id="regios-dopp-script">
527  var configScript = document.getElementById('regios-dopp-config');
528
529  if (!configScript) {
530    throw new Error('[Regios Discounts] Critical error: Configuration script not found.');
531  } 
532
533  var config = JSON.parse(configScript.textContent);
534  window.RegiosDOPP = Object.assign(window.RegiosDOPP || {}, config);
535</script>
535
536
537
538<!-- END app block -->
538<script src="https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-selleasy.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 538
538
539<script src="https://cdn.shopify.com/extensions/01a0ec76-5fb5-755e-9044-58df84589822/xcloud-search-filter-75/assets/shopify.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 539
539
540<script src="https://cdn.shopify.com/extensions/01a0fc09-fc82-7b7d-a2d5-0cf4cae65dc9/regios-automatic-discounts-1516/assets/regios_discounts_embed.js" type="text/javascript" defer="defer"></script>
540
541<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
542<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: 67979084098,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "index"};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 542
542
543<script>
544  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
545</script>
vendor: 1 bytes, line 545
545
546<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}
546).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: 67979084098,storefrontBaseUrl: "https://www.rockymountainoils.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.rockymountainoils.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2811199855","configuration":"{\"shop\":\"rocky-mountain-oils.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"933d4caa1e2cc643aeb46e3c5f7a4c7d","type":"APP","apiClientId":18394152961,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
546,"dataSharingState":"unrestricted"},{"id":"2550989167","configuration":"{\"accountID\":\"selleasy-metrics-track\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"50acfdcd7b118f50e52df83f64624d06","type":"APP","apiClientId":5519923,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1916666223","configuration":"{\"shopId\":\"gid:\/\/shopify\/Shop\/67979084098\",\"baseUrl\":\"https:\/\/ab-testing.essential-apps.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"b26e45fa9a7a5cf51742cf4b300d6739","type":"APP","apiClientId":248390909953,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1915617647","configuration":"{\"baseUrl\":\"https:\/\/wishlist.xobuilder.app\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9c6ceed5ad8172883427700a3c12afd5","type":"APP","apiClientId":152864980993,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1699217775","configuration":"{\"ti\":\"97013981\",\"endpoint\":\"https:\/\/bat.bing.com\/action\/0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"5ee93563fe31b11d2d65e2f09a5229dc","type":"APP","apiClientId":2997493,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1540260207","configuration":"{\"account_ID\":\"361669\",\"google_analytics_tracking_tag\":\"1\",\"measurement_id\":\"2\",\"api_secret\":\"3\",\"shop_settings\":\"{\\\"custom_pixel_script\\\":\\\"https:\\\\\\\/\\\\\\\/storage.googleapis.com\\\\\\\/gsf-scripts\\\\\\\/custom-pixels\\\\\\\/rocky-mountain-oils.js\\\"}\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"dbf16afd37d7bda963909dd4e886232e","type":"APP","apiClientId":1558137,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1493926255","configuration":"{\"env\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"8a9a175b11d15038a70fe78d09c59720","type":"APP","apiClientId":3977633,"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":"734331247","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\",\\\"GT-KD23J5W\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/n3N2CJ6eqsIYEIDVxf4p\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/LdCtCJieqsIYEIDVxf4p\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-25N5FJKQ0T\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/9_DSCJWeqsIYEIDVxf4p\\\",\\\"MC-MM0M8R6GP8\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-25N5FJKQ0T\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/lw1MCI-eqsIYEIDVxf4p\\\",\\\"MC-MM0M8R6GP8\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/EyXOCJKeqsIYEIDVxf4p\\\",\\\"MC-MM0M8R6GP8\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-25N5FJKQ0T\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/n0T8CKGeqsIYEIDVxf4p\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-25N5FJKQ0T\\\",\\\"AW-11271236224\\\/x0EgCJueqsIYEIDVxf4p\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-25N5FJKQ0T\\\"}],\\\"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":"657326447","configuration":"{\"pixelCode\":\"CPG7S63C77UEREVSP7CG\"}","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":"368574786","configuration":"{\"pixel_id\":\"454506200363093\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","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":"210895170","configuration":"{\"masterTagID\":\"73099\",\"merchantID\":\"83601\",\"appPath\":\"https:\/\/daedalus.shareasale.com\",\"storeID\":\"NaN\",\"xTypeMode\":\"NaN\",\"xTypeValue\":\"NaN\",\"channelDedup\":\"NaN\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"f300cca684872f2df140f714437af558","type":"APP","apiClientId":4929191,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
546,{"id":"196411714","configuration":"{\"tagID\":\"2616683366557\"}","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":"141001071","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"ShareASale Tracking"},{"id":"141033839","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Microsoft Clarity Tracking"},{"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":"Rocky Mountain Oils","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"rocky-mountain-oils.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.rockymountainoils.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"8215212327234","handle":"membership","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44794297090370","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"14686600233327","handle":"mystery-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51814431687023","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025566609730","handle":"breathe-ease-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52912994877807","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025560121666","handle":"eucalyptus-radiata-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"48687488991554","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025540657474","handle":"immune-strength-essential-oil-blends","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111359082818","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025540854082","handle":"lavender-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111360459074","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025578078530","handle":"lemon-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52948354269551","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025568411970","handle":"orange-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52948343062895","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025578602818","handle":"peppermint-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111590523202","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025569132866","handle":"purify-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111543894338","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025569296706","handle":"rosemary-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111544451394","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025567330626","handle":"frankincense-sacred-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111529771330","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025567494466","handle":"helichrysum-italicum-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111532425538","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025539838274","handle":"sandalwood-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111352037698","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025537380674","handle":"rose-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111325430082","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025532334402","handle":"jasmine-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111282209090","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523618114","handle":"blue-tansy-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111212314946","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025534529858","handle":"neroli-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111301673282","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025533776194","handle":"melissa-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111294955842","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025539084610","handle":"vitex-berry-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111346794818","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}
546,{"id":"14725145461103","handle":"moldavian-dragonhead-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52681248309615","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025526305090","handle":"1-4-ounce-plastic-blending-bottle-bkit8pack","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51753324347759","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8870804783426","handle":"16oz-spray-bottle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"47158794846530","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025566282050","handle":"aligning-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111522562370","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8652751077698","handle":"allspice-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"47078204834114","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025506152770","handle":"almond-carrier-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44110976221506","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9213852909890","handle":"alpine-glow-facial-serum","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51879351517551","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8942900085058","handle":"anxiety-and-aromatherapy-by-phoenix-vincent","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"47354806436162","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8896924516674","handle":"apple-cider-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"47226891534658","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9039484944706","handle":"arctic-rose-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51879253344623","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8652749668674","handle":"argan-carrier-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"46760212988226","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025544458562","handle":"aroma-inhaler-replacement-wicks-24-pack","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111383757122","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8976620388674","handle":"aromafuse-waterless-diffuser","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"47440260759874","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8047238250818","handle":"aromatherapy-hanging-car-diffuser","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"49116053209410","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025566445890","handle":"at-peace-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"48953495716162","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025540133186","handle":"attention-assist-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111356690754","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025539281218","handle":"attention-assist-roll-on","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111348269378","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8293733794114","handle":"aura-awakening-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"45042619580738","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025542197570","handle":"autumn-air-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111368421698","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8193444938050","handle":"aviva-waterless-diffuser","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"48170965172546","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025506808130","handle":"baby-skin-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"48955852390722","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025515393346","handle":"balance-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111103918402","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025516147010","handle":"balsam-of-peru-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111117812034","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025517916482","handle":"basil-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111146320194","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025518735682","handle":"bergamot-fcf-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111158182210","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8047224979778","handle":"birch-bark","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51879239319919","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025520374082","handle":"black-pepper-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111183642946","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025524109634","handle":"blend-essential-kit","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111214936386","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025522864450","handle":"blend-of-cinnamon","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111202025794","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025522995522","handle":"blend-of-jasmine","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111202320706","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523028290","handle":"blend-of-melissa","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111202353474","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523093826","handle":"blend-of-neroli","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111204254018","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523224898","handle":"blend-of-rose","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111206252866","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025541280066","handle":"blend-of-sacred-frankincense","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111362720066","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523290434","handle":"blend-of-sandalwood","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111206285634","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523552578","handle":"blood-orange-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111210807618","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025523487042","handle":"blossoms-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111210447170","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9656010211650","handle":"blue-horizon-facial-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51879264911727","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025526403394","handle":"brainstorm-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111230861634","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025548292418","handle":"breathe-ease-roll-on","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111415345474","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025551929666","handle":"breathe-roll-on","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111433892162","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9418313072962","handle":"bug-away-balm","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51977942565231","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025526436162","handle":"bug-away-bottle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111230894402","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025552585026","handle":"bug-away-roll-on","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111434711362","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9418368680258","handle":"bug-away-spray","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51977940238703","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025526665538","handle":"calming-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111237382466","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8047288090946","handle":"candy-cane-essential-oil-blend","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"47256748163394","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9597254467906","handle":"car-essential-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"49168699097410","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"8025526993218","handle":"cardamom-essential-oil","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"44111238955330","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}
546,{"id":"14622951801199","handle":"natures-pure-laundry-detergent-sheets","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"51901252305263","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://www.rockymountainoils.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"188727001455","themePublished":"true","eventMetadataId":"bcbf3c36-32be-4b70-955e-f5e087b045a3","pageType":"home","shopId":"67979084098","storefrontBaseUrl":"https:\/\/www.rockymountainoils.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
546<script>
547  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
548  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
549  window.ShopifyAnalytics.meta.currency = 'USD';
550  var meta = {"page":{"pageType":"home","requestId":"f3e44af7-63f6-4294-8fed-499f683f564b-1791062567"}};
551  for (var attr in meta) {
552    window.ShopifyAnalytics.meta[attr] = meta[attr];
553  }
554</script>
vendor: 1 bytes, line 554
554
555<script class="analytics">
556  (function () {
557    var customDocumentWrite = function(content) {
558      var jquery = null;
559
560      if (window.jQuery) {
561        jquery = window.jQuery;
562      } else if (window.Checkout && window.Checkout.$) {
563        jquery = window.Checkout.$;
564      }
565
566      if (jquery) {
567        jquery('body').append(content);
568      }
569    };
570
571    var hasLoggedConversion = function(token) {
572      if (token) {
573        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
574      }
575      return false;
576    }
577
578    var setCookieIfConversion = function(token) {
579      if (token) {
580        var twoMonthsFromNow = new Date(Date.now());
581        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
582
583        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
584      }
585    }
586
587    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
588    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
589    if (trekkie.integrations) {
590      return;
591    }
592    trekkie.methods = [
593      'identify',
594      'page',
595      'ready',
596      'track',
597      'trackForm',
598      'trackLink'
599    ];
600    trekkie.factory = function(method) {
601      return function() {
602        var args = Array.prototype.slice.call(arguments);
603        args.unshift(method);
604        trekkie.push(args);
605        if (method == 'track' || method == 'page') {
606          var pageUrl;
607          try {
608            pageUrl = window.location.href;
609          } catch (e) {}
610          var pageReferrer;
611          try {
612            pageReferrer = document.referrer;
613          } catch (e) {}
614          try {
615            if (window.__TREKKIE_SHIM_QUEUE == null) {
616              window.__TREKKIE_SHIM_QUEUE = [];
617            }
618            window.__TREKKIE_SHIM_QUEUE.push({
619              from: 'trekkie-stub',
620              method: method,
621              args: args.slice(1),
622              pageContext: {
623                url: pageUrl,
624                referrer: pageReferrer
625              }
626            });
627          } catch (e) {
628            // no-op
629          }
630        }
631        return trekkie;
632      };
633    };
634    for (var i = 0; i < trekkie.methods.length; i++) {
635      var key = trekkie.methods[i];
636      trekkie[key] = trekkie.factory(key);
637    }
638    trekkie.load = function(config) {
639      trekkie.config = config || {};
640      trekkie.config.initialDocumentCookie = document.cookie;
641      var first = document.getElementsByTagName('script')[0];
642var script = document.createElement('script');
643script.type = 'text/javascript';
644script.onerror = function(e) {
645  var scriptFallback = document.createElement('script');
646  scriptFallback.type = 'text/javascript';
647  scriptFallback.onerror = function(error) {
648          var Monorail = {
649      produce: function produce(monorailDomain, schemaId, payload) {
650        var currentMs = new Date().getTime();
651        var event = {
652          schema_id: schemaId,
653          payload: payload,
654          metadata: {
655            event_created_at_ms: currentMs,
656            event_sent_at_ms: currentMs
657          }
658        };
659        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
660      },
661      sendRequest: function sendRequest(endpointUrl, payload) {
662        // Try the sendBeacon API
663        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
664          var blobData = new window.Blob([payload], {
665            type: 'text/plain'
666          });
667
668          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
669            return true;
670          } // sendBeacon was not successful
671
672        } // XHR beacon
673
674        var xhr = new XMLHttpRequest();
675
676        try {
677          xhr.open('POST', endpointUrl);
678          xhr.setRequestHeader('Content-Type', 'text/plain');
679          xhr.send(payload);
680        } catch (e) {
681          console.log(e);
682        }
683
684        return false;
685      },
686      isIos12: function isIos12() {
687        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
688      }
689    };
690    Monorail.produce('monorail-edge.shopifysvc.com',
691      'trekkie_storefront_load_errors/1.1',
692      {shop_id: 67979084098,
693      theme_id: 188727001455,
694      app_name: "storefront",
695      context_url: window.location.href,
696      source_url: "//www.rockymountainoils.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
697
698  };
699  scriptFallback.async = true;
700  scriptFallback.src = '//www.rockymountainoils.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
701  first.parentNode.insertBefore(scriptFallback, first);
702};
703script.async = true;
704script.src = '//www.rockymountainoils.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
705first.parentNode.insertBefore(script, first);
706
707    };
708    trekkie.load(
709      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":67979084098,"isMerchantRequest":null,"themeId":188727001455,"themeCityHash":"11484302718442395350","contentLanguage":"en","currency":"USD","eventMetadataId":"bcbf3c36-32be-4b70-955e-f5e087b045a3"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
710    );
711
712    var loaded = false;
713    trekkie.ready(function() {
714      if (loaded) return;
715      loaded = true;
716
717      window.ShopifyAnalytics.lib = window.trekkie;
718
719      var originalDocumentWrite = document.write;
720      document.write = customDocumentWrite;
721      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
722      document.write = originalDocumentWrite;
723
724      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
725      var token = match? match[1]: undefined;
726      if (!hasLoggedConversion(token)) {
727        setCookieIfConversion(token);
728        
729      }
730    });
731
732    window.ShopifyAnalytics.lib.page(null,{"pageType":"home","requestId":"f3e44af7-63f6-4294-8fed-499f683f564b-1791062567","shopifyEmitted":true});
733
734    var eventsListenerScript = document.createElement('script');
735    eventsListenerScript.async = true;
736    eventsListenerScript.src = "//www.rockymountainoils.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
737    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
738})();</script>
vendor: 1 bytes, line 738
738
739<script
740  defer
741  src="https://www.rockymountainoils.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
742  data-application="storefront-renderer"
743  data-shop-id="67979084098"
744  data-render-region="gcp-us-central1"
745  data-page-type="index"
746  data-theme-instance-id="188727001455"
747  data-theme-name="Rocky Mountain Oils"
748  data-theme-version="2.0.0"
749  data-monorail-region="shop_domain"
750  data-resource-timing-sampling-rate="10"
751  data-shs="true"
752  data-shs-beacon="true"
753  data-shs-export-with-fetch="true"
754  data-shs-logs-sample-rate="1"
755  data-shs-beacon-endpoint="https://www.rockymountainoils.com/api/collect"
756></script>
756
757<meta name="shopify-y" content="ade57fcd-4b33-4185-9a50-7e5b717ee517" data-expiration="1822620167000"><meta name="shopify-s" content="a096f28a-7430-4ef9-bf77-263d5f46d2ce" data-expiration="1791064367000"><meta name="new-cookie-storage-activated" content="t">
758</head>
759  <body class="template-index">
760
761    
762    <div class="skip-links">
763      <a href="#main-content" class="skip-to-main-link">Skip to main content</a>
764      <a href="#search-input" class="skip-to-search">Skip to search</a>
765      <a href="#cart-sidebar" class="skip-to-cart">Skip to cart</a>
766    </div>
767    
768    <div class="Wrapper">
769      <header class="site-header">
770        <section id="shopify-section-announcement-bar" class="shopify-section section">
771
772
773<div class="header-top">
774  <div class="container">
775    <div class="top-slider-wrap">
776      <div class="SalesSliderWrapper">
777        <div id="SalesSlider" class="owl-carousel carousel-fade owl-theme">
778            
779            
780             <div class="item"><a class = "item_link"  href="/collections/build-a-fall-kit"><div class="__desktop">
781                        <p style="font-size: 16px; color: white;">🍂 Build a Fall Kit Sale — Mix & Match 20 Fall Oils | Save Up to 45% Off | Oct 2–4 Only → Shop Now</p>
782                          </div>
783                      <div class="__mobile __announcement_mobile">🍂 Build a Fall Kit Sale — Mix & Match 20 Fall Oils | Save Up to 45% Off | Oct 2–4 Only → Shop Now</div></a></div>
784            
785
786            
787            
788             <div class="item"><a class = "item_link"  href="/products/membership"><div class="__desktop">
789                        <p style="font-size: 16px; color: white;">Oil'ty Plus! Experience Huge Savings With Our New Membership!</p>
790                          </div>
791                      <div class="__mobile __announcement_mobile">Oil'ty Plus! Experience Huge Savings With Our New Membership!</div></a></div>
792            
793
794            
795            
796             <div class="item"><a class = "item_link"  href="/pages/rocky-mountain-impact-partners"><div class="__desktop">
797                        <p style="font-size: 16px; color: white;">Become A Rocky Mountain Impact Partner</p>
798                          </div>
799                      <div class="__mobile __announcement_mobile">Become A Rocky Mountain Impact Partner</div></a></div>
800            
801
802            
803            
804             <div class="item"><a class = "item_link"  href="/products/membership"><div class="__desktop">
805                        <p style="font-size: 16px; color: white;">Get HUGE Savings and Amazing Perks | Oil'ty Plus is Here!</p>
806                          </div>
807                      <div class="__mobile __announcement_mobile">Get HUGE Savings and Amazing Perks | Oil'ty Plus is Here!</div></a></div>
808            
809
810            
811            
812             <div class="item"><a class = "item_link"  href="/collections/shop"><div class="__desktop">
813                        <p style="font-size: 16px; color: white;">FREE shipping on orders over $49.95</p>
814                          
815                            
816                           <div id="header-countdown-fb0c4bdc-b85d-4990-b520-d890c066ab23" class="_countdown"></div></div>
817                      <div class="__mobile __announcement_mobile">FREE shipping on orders over $49.95</div></a></div>
818            
819</div>
820      </div>  
821    </div>
822  </div>
823</div>
824
825
826<script>
827  pushCountdown('_countdown', '2026-10-05 00:00:00');
828  function pushCountdown( countdown, countTo ) {
829
830      // Set the date we're counting down to
831      var countToSplit = countTo.split(/[- :]/);
832      ///console.log(countToSplit);
833      var countDownDate = new Date( countToSplit[0], countToSplit[1]-1, countToSplit[2], countToSplit[3], countToSplit[4], countToSplit[5] ).getTime();
834
835      // Update the count down every 1 second
836      var x = setInterval(function() {
837
838        // Get today's date and time
839        var now = new Date().getTime();
840
841        // Find the distance between now and the count down date
842        var distance = countDownDate - now;
843
844        // Time calculations for days, hours, minutes and seconds
845        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
846        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
847        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
848        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
849
850        var dclass = '';
851        var hclass = '';
852        var mclass = '';
853        var sclass = '';
854
855        if (hours < 13) {
856          hclass = ' class="bright"';
857          mclass = ' class="bright"';
858          sclass = ' class="bright"';
859        }
860
861        dclass = ' class="fadeds"';
862        if (hours == 0 && days == 0) hclass = ' class="faded"';
863        if (minutes == 0 && hours == 0 && days == 0) mclass = ' class="faded_"';
864
865        // If the count down is finished, write some text
866        if (distance < 0) {
867          clearInterval(x);
868          //document.getElementsByClassName( countdown )[0].innerHTML = "EXPIRED";
869        } else {
870          for (let i = 0; i < document.getElementsByClassName(countdown).length; i++) {
871            document.getElementsByClassName( countdown )[i].innerHTML  = "<span" + dclass + ">" + days + "<i>d</i></span>";
872            document.getElementsByClassName( countdown )[i].innerHTML += "<span" + hclass + ">" + hours + "<i>hr</i></span>";
873            document.getElementsByClassName( countdown )[i].innerHTML += "<span" + mclass + ">" + minutes + "<i>m</i></span>";
874            document.getElementsByClassName( countdown )[i].innerHTML += "<span" + sclass + ">" + seconds + "<i>s</i></span>";
875          }
876        }
877      }, 1000);
878    }
879  </script>
879
880</section>
881        <div id="shopify-section-header" class="shopify-section section-header"><div class="header-navbar">
882  <div class="container">
883      <div class="header-navbar-wrapper">
884          <div class="d-flex justify-content-between align-items-center">
885              <div class="logo-menu-wrap">
886                  <div class="d-flex align-items-center">
887                      <button id="BurgerMenu" class="burger-menu" aria-label="Open navigation menu" aria-expanded="false" aria-controls="side-menu"><i class="menu-icon" aria-hidden="true"></i></button>
888                      <div class="site-logo"><a href="https://www.rockymountainoils.com">
889                              <img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/rmo-logo.svg?v=119252189530219791611785434280" width="100" class="img-fluid" height="44" alt="Rocky Mountain Oils"/>
890                            </a></div>
891                  </div>
892              </div>
893              <div class="nav-search-wrap">
894                  <div class="rocky_search_bar">
895                    <form action="/search" method="get" role="search" class="search-bar" aria-label="Search form">
896                      <label for="search-input" class="visually-hidden">Search</label>
897                      <input 
898                        id="search-input"
899                        type="search" 
900                        name="q" 
901                        placeholder="Search solutions, categories, products"
902                        aria-label="Search Input"
903                      >
904                      <input type="hidden" name="type" value="product">
905                      <button type="submit" aria-label="Search">
906                        <i class="search-icon" aria-hidden="true"></i>
907                      </button>
908                    </form>
909                  </div>
910              </div>
911              <div class="user-actions-wrap">
912                  <div class="user-actions">
913                    <div class="user-action-item"><a href="/pages/contact"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/chat.svg?v=85283629329099276931785434158" class="chat" width="28" height="34" alt="Help Icon"><span>Contact Us</span></a></div>
914                      
915                        <div class="user-action-item"><a href="/account/login"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/account.svg?v=64592610833481847801785434122" width="30" height="30"  alt="Account Icon"><span>Account</span></a></div>
916                      
917                        <button
918                          class="user-action-item mini-cart"
919                          id="CartMenu"
920                          aria-label="Open cart, 0 items"
921                          aria-haspopup="true"
922                          aria-controls="cart-sidebar"
923                          type="button"
924                        >
925                          <img 
926                            src="//www.rockymountainoils.com/cdn/shop/t/383/assets/cart.svg?v=89473404183696256301785434154" 
927                            width="30" 
928                            height="30"  
929                            alt=""
930                            aria-hidden="true"
931                          >
932
933                          <span>Cart</span>
934
935                          <span 
936                            class="mini-cart-count"
937                            aria-live="polite"
938                          >
939                            0
940                          </span>
941                        </button>
942                  </div>
943              </div>
944          </div>
945      </div>
946  </div>
947</div>
948            
949          
950
951  
952
953
954</div>
955        <section id="shopify-section-menu-bar" class="shopify-section section"><div class="header-menu-wrapper">
956<div class="container">
957    <nav class="nav-menu">
958        <ul class="main-menu">
959                
960                
961               
962                      <li><a href="/collections/shop">Shop All</a></li>              
963                
964
965                
966                      <li  class="has_sub_menu bb">
967                          <a href="/collections/all-essential-oils">Essential Oils</a>
968                          <ul class="sub_menu "><li><a href="/collections/essential-oil-kits">
969                                    Bundles & Kits
970                                    </a></li><li><a href="/collections/essential-oils">
971                                    Singles
972                                    </a></li><li><a href="/collections/essential-oil-blends">
973                                    Blends
974                                    </a></li><li><a href="/collections/organic-essential-oils">
975                                    Organics
976                                    </a></li><li><a href="/collections/luxury-oils">
977                                    Luxury Oils
978                                    </a></li><li><a href="/collections/essential-oil-roll-ons">
979                                    Roll-Ons
980                                    </a></li><li><a href="/collections/for-kids">
981                                    Kid Safe
982                                    </a></li><li><a href="/collections/accessories">
983                                    Accessories
984                                    </a></li><li><a href="/collections/seasonal">
985                                    Seasonal
986                                    </a></li></ul>
987                      </li>              
988                
989                
990               
991
992                
993                
994                  <li class="has_sub_menu aa">
995                    <a href="/collections/body-care">Home & Body</a>
996                    <ul class="sub_menu">
997                          <li><a href="/collections/essential-oil-kits">Bundles & Kits</a></li>
998                        
999
1000                          <li class="has_nested_sub_menu">
1001                            <a href="/collections/body-care">Body Care<img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/Path-arrow-next.png?v=76227656136117390941785434244" alt="Path Arrow Next" class="content-icon arrow"></a>
1002                            <ul class="nested_sub_menu"><li><a href="/collections/carrier-oils">Carrier Oils</a></li><li><a href="/collections/massage-oils">Massage</a></li><li><a href="/collections/pain-essential-oils">Pain Relief</a></li></ul>
1003                          </li>
1004                        
1005
1006                          <li><a href="/collections/skin-care">Skin Care</a></li>
1007                        
1008
1009                          <li><a href="/collections/hair-care">Hair Care</a></li>
1010                        
1011
1012                          <li><a href="/collections/bath-care">Bath Care</a></li>
1013                        
1014
1015                          <li class="has_nested_sub_menu">
1016                            <a href="https://www.rockymountainoils.com/collections/wellness">Wellness<img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/Path-arrow-next.png?v=76227656136117390941785434244" alt="Path Arrow Next" class="content-icon arrow"></a>
1017                            <ul class="nested_sub_menu"><li><a href="/collections/immunity-essential-oils">Immunity</a></li><li><a href="/collections/mood-boost">Mood & Stress</a></li></ul>
1018                          </li>
1019                        
1020
1021                          <li><a href="/collections/cleaning-essential-oils">Cleaning & Laundry</a></li>
1022                        
1023
1024                          <li><a href="/collections/outdoor-essentials">Outdoor Essentials</a></li>
1025                        
1026
1027                          <li class="has_nested_sub_menu">
1028                            <a href="/collections/essential-oil-diffusers">Diffusers<img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/Path-arrow-next.png?v=76227656136117390941785434244" alt="Path Arrow Next" class="content-icon arrow"></a>
1029                            <ul class="nested_sub_menu"><li><a href="/collections/ultrasonic-diffusers">Ultrasonic</a></li><li><a href="/collections/waterless-diffusers">Waterless</a></li><li><a href="/collections/passive-diffusers">Passive</a></li></ul>
1030                          </li>
1031                        
1032
1033                          <li><a href="/collections/accessories">Accessories</a></li>
1034                        
1035</ul>
1036                  </li>
1037                
1038               
1039
1040                
1041                      <li  class="has_sub_menu bb">
1042                          <a href="/pages/essential-oil-101">Learn</a>
1043                          <ul class="sub_menu "><li><a href="https://www.rockymountainoils.com/blogs/all">
1044                                    Our Blog "The Blend"
1045                                    </a></li><li><a href="https://www.rockymountainoils.com/pages/essential-oil-101">
1046                                    Essential Oil 101
1047                                    </a></li><li><a href="https://www.rockymountainoils.com/pages/kid-safety">
1048                                    Kids & Essential Oils 101
1049                                    </a></li><li><a href="https://www.rockymountainoils.com/pages/dilution-rate">
1050                                    Dilution Guide
1051                                    </a></li><li><a href="https://www.rockymountainoils.com/pages/compare">
1052                                    Compare Oils
1053                                    </a></li><li><a href="https://www.rockymountainoils.com/pages/essential-oil-garden">
1054                                    Essential Oil Garden
1055                                    </a></li><li><a href="https://www.rockymountainoils.com/pages/get-gcms-test-results">
1056                                    Your GC/MS Lookup
1057                                    </a></li></ul>
1058                      </li>              
1059                
1060                
1061               
1062
1063                
1064                
1065               
1066                      <li><a href="/collections/new-arrivals">New Arrivals</a></li>              
1067                
1068
1069                
1070                
1071                  <li class="has_sub_menu aa">
1072                    <a href="/pages/rewards">Rewards</a>
1073                    <ul class="sub_menu">
1074                          <li><a href="/products/membership">Oil'ty Plus</a></li>
1075                        
1076
1077                          <li><a href="/pages/rewards">Earn Points</a></li>
1078                        
1079</ul>
1080                  </li>
1081                
1082               
1083
1084                
1085                
1086               
1087                      <li><a href="/collections/sale">Sale</a></li>              
1088                
1089</ul>
1090    </nav>
1091</div>
1092</div>
1093
1094<aside class="side-menu">
1095    <div class="side-menu-close">
1096      <button class="side-menu-close" aria-label="Close menu">
1097        <i class="icon-close" aria-hidden="true"></i>
1098      </button>
1099    </div>
1100    <div class="sidebar-menu-wrapper">
1101        <div class="sidebar-menu-wrap">
1102            <nav class="sidebar-nav-menu">
1103                <ul class="sidebar-menu menu-lavel-0">
1104                     
1105                    
1106                     
1107                    
1108                     
1109                    
1110                      <li class="menu-item"><a href="/collections/shop">Shop All</a></li>              
1111                    
1112                  
1113                     
1114                    
1115                              <li class="menu-item discover-dropdown-menu">
1116                                    <div class="sub-menu-item">
1117                                        Essential Oils
1118                                        <div id="menu-accordion-icon" class="isClosed">+</div>
1119                                    </div>
1120                                    <ul class="sidebar-sub-menu menu-lavel-1"><li><a href="/collections/essential-oil-kits">
1121                                            Bundles & Kits
1122                                            </a></li><li><a href="/collections/essential-oils">
1123                                            Singles
1124                                            </a></li><li><a href="/collections/essential-oil-blends">
1125                                            Blends
1126                                            </a></li><li><a href="/collections/organic-essential-oils">
1127                                            Organics
1128                                            </a></li><li><a href="/collections/luxury-oils">
1129                                            Luxury Oils
1130                                            </a></li><li><a href="/collections/essential-oil-roll-ons">
1131                                            Roll-Ons
1132                                            </a></li><li><a href="/collections/for-kids">
1133                                            Kid Safe
1134                                            </a></li><li><a href="/collections/accessories">
1135                                            Accessories
1136                                            </a></li><li><a href="/collections/seasonal">
1137                                            Seasonal
1138                                            </a></li></ul>
1139                              </li>
1140                    
1141                     
1142                    
1143                     
1144                    
1145                  
1146                     
1147                    
1148                     
1149                    
1150                              <li class="menu-item discover-dropdown-menu">
1151                                    <div class="sub-menu-item">
1152                                        Home & Body
1153                                        <div id="menu-accordion-icon" class="isClosed">+</div>
1154                                    </div>
1155                                    <ul class="sidebar-sub-menu menu-lavel-1"><li class="menu-item discover-dropdown-menu">
1156                                              <div class="sub-menu-item-2">
1157                                                  <a href="/collections/essential-oil-kits">Bundles & Kits</a>
1158                                                
1159                                              </div>
1160                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1161                                          </li><li class="menu-item discover-dropdown-menu">
1162                                              <div class="sub-menu-item-2"><a>Body Care
1163<div id="menu-accordion-icon" class="isClosed">+</div></a>
1164                                                
1165                                              </div>
1166                                            <ul class="sidebar-sub-menu menu-lavel-2"><li><a href="/collections/carrier-oils">Carrier Oils</a></li><li><a href="/collections/massage-oils">Massage</a></li><li><a href="/collections/pain-essential-oils">Pain Relief</a></li></ul>
1167                                          </li><li class="menu-item discover-dropdown-menu">
1168                                              <div class="sub-menu-item-2">
1169                                                  <a href="/collections/skin-care">Skin Care</a>
1170                                                
1171                                              </div>
1172                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1173                                          </li><li class="menu-item discover-dropdown-menu">
1174                                              <div class="sub-menu-item-2">
1175                                                  <a href="/collections/hair-care">Hair Care</a>
1176                                                
1177                                              </div>
1178                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1179                                          </li><li class="menu-item discover-dropdown-menu">
1180                                              <div class="sub-menu
1180-item-2">
1181                                                  <a href="/collections/bath-care">Bath Care</a>
1182                                                
1183                                              </div>
1184                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1185                                          </li><li class="menu-item discover-dropdown-menu">
1186                                              <div class="sub-menu-item-2"><a>Wellness
1187<div id="menu-accordion-icon" class="isClosed">+</div></a>
1188                                                
1189                                              </div>
1190                                            <ul class="sidebar-sub-menu menu-lavel-2"><li><a href="/collections/immunity-essential-oils">Immunity</a></li><li><a href="/collections/mood-boost">Mood & Stress</a></li></ul>
1191                                          </li><li class="menu-item discover-dropdown-menu">
1192                                              <div class="sub-menu-item-2">
1193                                                  <a href="/collections/cleaning-essential-oils">Cleaning & Laundry</a>
1194                                                
1195                                              </div>
1196                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1197                                          </li><li class="menu-item discover-dropdown-menu">
1198                                              <div class="sub-menu-item-2">
1199                                                  <a href="/collections/outdoor-essentials">Outdoor Essentials</a>
1200                                                
1201                                              </div>
1202                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1203                                          </li><li class="menu-item discover-dropdown-menu">
1204                                              <div class="sub-menu-item-2"><a>Diffusers
1205<div id="menu-accordion-icon" class="isClosed">+</div></a>
1206                                                
1207                                              </div>
1208                                            <ul class="sidebar-sub-menu menu-lavel-2"><li><a href="/collections/ultrasonic-diffusers">Ultrasonic</a></li><li><a href="/collections/waterless-diffusers">Waterless</a></li><li><a href="/collections/passive-diffusers">Passive</a></li></ul>
1209                                          </li><li class="menu-item discover-dropdown-menu">
1210                                              <div class="sub-menu-item-2">
1211                                                  <a href="/collections/accessories">Accessories</a>
1212                                                
1213                                              </div>
1214                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1215                                          </li></ul>
1216                              </li>
1217                    
1218                     
1219                    
1220                  
1221                     
1222                    
1223                              <li class="menu-item discover-dropdown-menu">
1224                                    <div class="sub-menu-item">
1225                                        Learn
1226                                        <div id="menu-accordion-icon" class="isClosed">+</div>
1227                                    </div>
1228                                    <ul class="sidebar-sub-menu menu-lavel-1"><li><a href="https://www.rockymountainoils.com/blogs/all">
1229                                            Our Blog "The Blend"
1230                                            </a></li><li><a href="https://www.rockymountainoils.com/pages/essential-oil-101">
1231                                            Essential Oil 101
1232                                            </a></li><li><a href="https://www.rockymountainoils.com/pages/kid-safety">
1233                                            Kids & Essential Oils 101
1234                                            </a></li><li><a href="https://www.rockymountainoils.com/pages/dilution-rate">
1235                                            Dilution Guide
1236                                            </a></li><li><a href="https://www.rockymountainoils.com/pages/compare">
1237                                            Compare Oils
1238                                            </a></li><li><a href="https://www.rockymountainoils.com/pages/essential-oil-garden">
1239                                            Essential Oil Garden
1240                                            </a></li><li><a href="https://www.rockymountainoils.com/pages/get-gcms-test-results">
1241                                            Your GC/MS Lookup
1242                                            </a></li></ul>
1243                              </li>
1244                    
1245                     
1246                    
1247                     
1248                    
1249                  
1250                     
1251                    
1252                     
1253                    
1254                     
1255                    
1256                      <li class="menu-item"><a href="/collections/new-arrivals">New Arrivals</a></li>              
1257                    
1258                  
1259                     
1260                    
1261                     
1262                    
1263                              <li class="menu-item discover-dropdown-menu">
1264                                    <div class="sub-menu-item">
1265                                        Rewards
1266                                        <div id="menu-accordion-icon" class="isClosed">+</div>
1267                                    </div>
1268                                    <ul class="sidebar-sub-menu menu-lavel-1"><li class="menu-item discover-dropdown-menu">
1269                                              <div class="sub-menu-item-2">
1270                                                  <a href="/products/membership">Oil'ty Plus</a>
1271                                                
1272                                              </div>
1273                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1274                                          </li><li class="menu-item discover-dropdown-menu">
1275                                              <div class="sub-menu-item-2">
1276                                                  <a href="/pages/rewards">Earn Points</a>
1277                                                
1278                                              </div>
1279                                            <ul class="sidebar-sub-menu menu-lavel-2"></ul>
1280                                          </li></ul>
1281                              </li>
1282                    
1283                     
1284                    
1285                  
1286                     
1287                    
1288                     
1289                    
1290                     
1291                    
1292                      <li class="menu-item"><a href="/collections/sale">Sale</a></li>              
1293                    
1294                  
1295                                                  
1296                </ul>
1297              <div class="sidebar-account-button">
1298                
1299                  <a href="/account/login" class="sidebar-account-btn">LOGIN / CREATE AN ACCOUNT</a>
1300                
1301            </div>
1302          </nav>
1303      </div>
1304  </div>
1305</aside>                      
1306
1307<style> #shopify-section-menu-bar .container {max-width: 1200px;} </style></section>
1308        <div id="shopify-section-cart-sidebar" class="shopify-section"><link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/securely-checkout.css?v=42801585711833878161785434286" rel="stylesheet" type="text/css" media="all" />
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318<aside class="cart-side-menu cart-sidebar  is_empty" id="cart-sidebar" aria-label="Shopping cart sidebar">
1319  <div class="cart-menu-heading">
1320    <span id="cart-sidebar-heading">Cart</span>
1321    <button class="cart-side-menu-close" aria-label="Close cart" aria-controls="cart-sidebar">
1322      <i class="icon-close-b" aria-hidden="true"></i>
1323    </button>
1324  </div>
1325
1326  <div class="product-in-cart">
1327    
1328    
1329    
1330    
1331    
1332    
1333    
1334    
1335    <div class="ajax-cart-free-shipping" 100>
1336      <h3>Almost There! Add $<span>49.95</span> To Unlock Free Shipping</h3>
1337      <div class="progress"> 
1338        <div class="progress-bar progress-bar-striped bg-warning progress-bar-animated" role="progressbar" style="width: 0%" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="49.95"></div>
1339      </div>
1340    </div>
1341    
1342
1343
1344    <p class="empty-cart" aria-live="polite">You have no items in your shopping cart.</p>
1345
1346    <div class="upsell-cart" role="region" aria-label="Recommended product">
1347      
1348  
1349    
1350
1351    
1352      
1353      
1354      
1355
1356      
1357      
1358
1359      <div class="upsell-cart-sidebar" id="upsell-cart-sidebar-14622951801199">
1360        
1361
1362        <div class="upsell-info">
1363          
1364            <img class="upsell-image"
1365                 src="//www.rockymountainoils.com/cdn/shop/files/Nature_s_Pure_Laundry_Sheets_4.png?v=1744302547&width=160"
1366                 alt="Nature&#39;s Pure Laundry Detergent Sheets, Rocky Mountain Oils"
1367                 width="80" height="80" loading="lazy"
1368                 style="width:80px;height:80px;object-fit:contain;">
1369          
1370
1371          <div class="upsell-info-details">
1372            <h5 class="upsell-title">Nature&#39;s Pure Laundry Detergent Sheets</h5>
1373            <p class="upsell-price">$19.95</p><form method="post" action="/cart/add" id="upsell-form-14622951801199" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
1374                <input type="hidden" name="id" value="51901252305263">
1375              
1376
1377              <button type="submit" class="upsell-add add-to-cart" data-product-id="14622951801199">
1378                <span>Add to Cart</span>
1379              </button><input type="hidden" name="product-id" value="14622951801199" /><input type="hidden" name="section-id" value="cart-sidebar" /></form></div>
1380        </div>
1381      </div>
1382    
1383  
1384
1385
1386<script>
1387  document.addEventListener('DOMContentLoaded', function () {
1388    document.querySelectorAll('.upsell-variant-select').forEach(function (select) {
1389      select.addEventListener('change', function () {
1390        var opt = this.options[this.selectedIndex];
1391        var wrap = this.closest('.upsell-cart-sidebar');
1392        if (!wrap || !opt) return;
1393        var priceEl = wrap.querySelector('.upsell-price');
1394        var imgEl = wrap.querySelector('.upsell-image');
1395        if (priceEl && opt.dataset.price) { priceEl.textContent = opt.dataset.price; }
1396        if (imgEl && opt.dataset.image) { imgEl.src = opt.dataset.image; }
1397        if (imgEl && opt.dataset.alt) { imgEl.alt = opt.dataset.alt; }
1398      });
1399    });
1400
1401    function syncUpsell() {
1402      fetch('/cart.js')
1403        .then(function (r) { return r.json(); })
1404        .then(function (cart) {
1405          document.querySelectorAll('.upsell-cart-sidebar').forEach(function (el) {
1406            var pid = parseInt(el.id.replace('upsell-cart-sidebar-', ''), 10);
1407            var inCart = cart.items.some(function (item) { return item.product_id === pid; });
1408            el.style.display = inCart ? 'none' : '';
1409          });
1410        });
1411    }
1412    syncUpsell();
1413
1414    document.addEventListener('click', function (event) {
1415      var addBtn = event.target.closest('.upsell-add');
1416      if (addBtn) {
1417        var wrap = addBtn.closest('.upsell-cart-sidebar');
1418        if (wrap) { wrap.style.display = 'none'; }
1419      }
1420    });
1421
1422    var cartList = document.querySelector('.carts-product-list');
1423    if (cartList) {
1424      var syncTimer;
1425      new MutationObserver(function () {
1426        clearTimeout(syncTimer);
1427        syncTimer = setTimeout(syncUpsell, 150);
1428      }).observe(cartList, { childList: true });
1429    }
1430  });
1431</script>
1431
1432    </div>
1433    
1434    <div class="cart-sidebar-loading"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/ajax-loader.gif?v=344831891803776881785434126" alt="Loading, please wait"></div>
1435    <div class="cart-sidebar-error-message" style="display:none;" role="alert" aria-live="assertive"></div>
1436<script>
1437  window.RMO_COMPARE = window.RMO_COMPARE || {};</script>
1437
1438<ul class="carts-product-list" aria-label="Products in your cart"><p role="listitem" style="text-align:center;">Start shopping now!</p>
1439</ul>
1440
1441  <div class="securely-checkout-cart-sidebar">
1442    <h6>Securely Checkout With</h6>
1443    <div class="cro-payment-icons">
1444        <div class="icon-container">
1445        <ul>
1446            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pi-american_express" viewBox="0 0 38 24" width="38" height="24">
1447                    <title id="pi-american_express">American Express</title>
1448                    <path fill="#000" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3Z" opacity=".07"></path>
1449                    <path fill="#006FCF" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32Z"></path>
1450                    <path fill="#FFF" d="M22.012 19.936v-8.421L37 11.528v2.326l-1.732 1.852L37 17.573v2.375h-2.766l-1.47-1.622-1.46 1.628-9.292-.02Z"></path>
1451                    <path fill="#006FCF" d="M23.013 19.012v-6.57h5.572v1.513h-3.768v1.028h3.678v1.488h-3.678v1.01h3.768v1.531h-5.572Z"></path>
1452                    <path fill="#006FCF" d="m28.557 19.012 3.083-3.289-3.083-3.282h2.386l1.884 2.083 1.89-2.082H37v.051l-3.017 3.23L37 18.92v.093h-2.307l-1.917-2.103-1.898 2.104h-2.321Z"></path>
1453                    <path fill="#FFF" d="M22.71 4.04h3.614l1.269 2.881V4.04h4.46l.77 2.159.771-2.159H37v8.421H19l3.71-8.421Z"></path>
1454                    <path fill="#006FCF" d="m23.395 4.955-2.916 6.566h2l.55-1.315h2.98l.55 1.315h2.05l-2.904-6.566h-2.31Zm.25 3.777.875-2.09.873 2.09h-1.748Z"></path>
1455                    <path fill="#006FCF" d="M28.581 11.52V4.953l2.811.01L32.84 9l1.456-4.046H37v6.565l-1.74.016v-4.51l-1.644 4.494h-1.59L30.35 7.01v4.51h-1.768Z"></path>
1456                </svg></li>
1457            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay">
1458                    <title id="pi-apple_pay">Apple Pay</title>
1459                    <path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z"></path>
1460                    <path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875"></path>
1461                    <g>
1462                        <g>
1463                            <path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 
14631.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858"></path>
1464                            <path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048"></path>
1465                        </g>
1466                        <g>
1467                            <path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z"></path>
1468                            <path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z"></path>
1469                            <path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z"></path>
1470                        </g>
1471                    </g>
1472                </svg></li>
1473            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-diners_club">
1474                    <title id="pi-diners_club">Diners Club</title>
1475                    <path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1476                    <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"></path>
1477                    <path d="M12 12v3.7c0 .3-.2.3-.5.2-1.9-.8-3-3.3-2.3-5.4.4-1.1 1.2-2 2.3-2.4.4-.2.5-.1.5.2V12zm2 0V8.3c0-.3 0-.3.3-.2 2.1.8 3.2 3.3 2.4 5.4-.4 1.1-1.2 2-2.3 2.4-.4.2-.4.1-.4-.2V12zm7.2-7H13c3.8 0 6.8 3.1 6.8 7s-3 7-6.8 7h8.2c3.8 0 6.8-3.1 6.8-7s-3-7-6.8-7z" fill="#3086C8"></path>
1478                </svg></li>
1479            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg">
1480                    <title id="pi-discover">Discover</title>
1481                    <path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1482                    <path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"></path>
1483                    <path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"></path>
1484                    <path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"></path>
1485                    <path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"></path>
1486                    <path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"></path>
1487                    <path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"></path>
1488                    <path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"></path>
1489                    <defs>
1490                        <linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse">
1491                            <stop offset="0" stop-color="#F89F20"></stop>
1492                            <stop offset=".25" stop-color="#F79A20"></stop>
1493                            <stop offset=".533" stop-color="#F68D20"></stop>
1494                            <stop offset=".62" stop-color="#F58720"></stop>
1495                            <stop offset=".723" stop-color="#F48120"></stop>
1496                            <stop offset="1" stop-color="#F37521"></stop>
1497                        </linearGradient>
1498                        <linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse">
1499                            <stop offset="0" stop-color="#F58720"></stop>
1500                            <stop offset=".359" stop-color="#E16F27"></stop>
1501                            <stop offset=".703" stop-color="#D4602C"></stop>
1502                            <stop offset=".982" stop-color="#D05B2E"></stop>
1503                        </linearGradient>
1504                    </defs>
1505                </svg></li>
1506            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" width="38" height="24" role="img" aria-labelledby="pi-metapay" viewB
1506ox="0 0 38 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1507                    <title id="pi-metapay">Meta Pay</title>
1508                    <path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"></path>
1509                    <path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"></path>
1510                    <path d="M4.983 12.986c0 .348.076.614.176.776a.6.6 0 00.524.3c.257 0 .491-.063.943-.688.362-.5.788-1.204 1.076-1.645l.486-.747c.337-.518.728-1.095 1.176-1.486.366-.319.76-.496 1.158-.496.667 0 1.302.386 1.788 1.111.532.794.79 1.793.79 2.825 0 .613-.12 1.064-.326 1.42-.2.345-.587.688-1.238.688v-.981c.558 0 .697-.513.697-1.1 0-.836-.195-1.764-.624-2.427-.305-.47-.7-.757-1.134-.757-.47 0-.848.354-1.274.986-.226.336-.457.745-.718 1.207l-.287.508c-.576 1.02-.722 1.254-1.01 1.637-.504.672-.935.927-1.502.927-.674 0-1.1-.291-1.363-.73C4.106 13.956 4 13.486 4 12.95l.983.035z" fill="#0081FB"></path>
1511                    <path d="M4.775 10.18C5.225 9.486 5.875 9 6.622 9c.432 0 .861.128 1.31.494.49.4 1.013 1.06 1.665 2.146l.234.39c.565.94.886 1.424 1.074 1.652.242.293.411.38.631.38.558 0 .697-.512.697-1.099l.867-.027c0 .613-.12 1.064-.326 1.42-.2.345-.587.688-1.238.688-.405 0-.764-.088-1.16-.462-.306-.287-.663-.798-.937-1.257l-.816-1.363c-.41-.684-.785-1.194-1.003-1.425-.234-.249-.534-.549-1.014-.549-.388 0-.718.273-.994.69l-.837-.498z" fill="url(#pi-paint0_linear_1164_3)"></path>
1512                    <path d="M6.606 9.988c-.388 0-.718.273-.994.69-.39.588-.629 1.466-.629 2.308 0 .348.076.614.176.776l-.838.552C4.106 13.956 4 13.486 4 12.95c0-.973.267-1.987.775-2.77C5.225 9.485 5.875 9 6.622 9l-.016.988z" fill="url(#pi-paint1_linear_1164_3)"></path>
1513                    <path d="M15.01 9.191h1.138l1.933 3.498 1.934-3.498h1.112v5.747h-.928v-4.405l-1.695 3.05h-.87l-1.696-3.05v4.405h-.927V9.191zm9.023 2.143c-.665 0-1.066.5-1.162 1.12h2.258c-.046-.638-.415-1.12-1.096-1.12zm-2.081 1.474c0-1.305.843-2.254 2.097-2.254 1.234 0 1.971.937 1.971 2.323v.255h-3.148c.111.674.559 1.129 1.28 1.129.576 0 .936-.176 1.277-.497l.493.603c-.465.427-1.055.674-1.803.674-1.358 0-2.167-.99-2.167-2.233zm5.193-1.392h-.854v-.76h.854V9.402h.895v1.256h1.297v.76H28.04v1.924c0 .657.21.89.726.89.236 0 .371-.02.57-.053v.752c-.248.07-.485.102-.742.102-.966 0-1.45-.528-1.45-1.584v-2.032zm5.96.739a1.207 1.207 0 00-1.17-.788c-.766 0-1.256.543-1.256 1.428 0 .863.451 1.433 1.22 1.433.603 0 1.034-.351 1.206-.788v-1.285zM34 14.938h-.878v-.6c-.246.353-.693.703-1.417.703-1.164 0-1.941-.975-1.941-2.246 0-1.283.796-2.241 1.99-2.241.591 0 1.055.236 1.368.653v-.55H34v4.281z" fill="#000000"></path>
1514                    <defs>
1515                        <linearGradient id="pi-paint0_linear_1164_3" x1="5.93" y1="12.703" x2="12.196" y2="13.019" gradientUnits="userSpaceOnUse">
1516                            <stop offset="0" stop-color="#0064E1"></stop>
1517                            <stop offset=".4" stop-color="#0064E1"></stop>
1518                            <stop offset=".83" stop-color="#0073EE"></stop>
1519                            <stop offset="1" stop-color="#0082FB"></stop>
1520                        </linearGradient>
1521                        <linearGradient id="pi-paint1_linear_1164_3" x1="5.424" y1="13.399" x2="5.424" y2="11.089" gradientUnits="userSpaceOnUse">
1522                            <stop offset="0" stop-color="#0082FB"></stop>
1523                            <stop offset="1" stop-color="#0064E0"></stop>
1524                        </linearGradient>
1525                    </defs>
1526                </svg></li>
1527            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay">
1528                    <title id="pi-google_pay">Google Pay</title>
1529                    <path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"></path>
1530                    <path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"></path>
1531                    <path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
153106zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"></path>
1532                    <path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"></path>
1533                    <path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"></path>
1534                    <path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"></path>
1535                    <path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"></path>
1536                </svg></li>
1537            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-master">
1538                    <title id="pi-master">Mastercard</title>
1539                    <path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1540                    <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"></path>
1541                    <circle fill="#EB001B" cx="15" cy="12" r="7"></circle>
1542                    <circle fill="#F79E1B" cx="23" cy="12" r="7"></circle>
1543                    <path fill="#FF5F00" d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"></path>
1544                </svg></li>
1545            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal">
1546                    <title id="pi-paypal">PayPal</title>
1547                    <path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1548                    <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"></path>
1549                    <path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"></path>
1550                    <path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"></path>
1551                    <path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 
15510-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"></path>
1552                </svg></li>
1553            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay">
1554                    <title id="pi-shopify_pay">Shop Pay</title>
1555                    <path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"></path>
1556                    <path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"></path>
1557                    <path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"></path>
1558                </svg></li>
1559            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" viewBox="0 0 38 24" width="38" height="24" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pi-venmo">
1560                    <title id="pi-venmo">Venmo</title>
1561                    <g fill="none" fill-rule="evenodd">
1562                        <rect fill-opacity=".07" fill="#000" width="38" height="24" rx="3"></rect>
1563                        <path fill="#3D95CE" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"></path>
1564                        <path d="M24.675 8.36c0 3.064-2.557 7.045-4.633 9.84h-4.74L13.4 6.57l4.151-.402 1.005 8.275c.94-1.566 2.099-4.025 2.099-5.702 0-.918-.154-1.543-.394-2.058l3.78-.783c.437.738.634 1.499.634 2.46z" fill="#FFF" fill-rule="nonzero"></path>
1565                    </g>
1566                </svg></li>
1567            <li style="list-style:none; display: inline-block; margin-right: 5px; max-width: 40px;"><svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-visa">
1568                    <title id="pi-visa">Visa</title>
1569                    <path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1570                    <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"></path>
1571                    <path d="M28.3 10.1H28c-.4 1-.7 1.5-1 3h1.9c-.3-1.5-.3-2.2-.6-3zm2.9 5.9h-1.7c-.1 0-.1 0-.2-.1l-.2-.9-.1-.2h-2.4c-.1 0-.2 0-.2.2l-.3.9c0 .1-.1.1-.1.1h-2.1l.2-.5L27 8.7c0-.5.3-.7.8-.7h1.5c.1 0 .2 0 .2.2l1.4 6.5c.1.4.2.7.2 1.1.1.1.1.1.1.2zm-13.4-.3l.4-1.8c.1 0 .2.1.2.1.7.3 1.4.5 2.1.4.2 0 .5-.1.7-.2.5-.2.5-.7.1-1.1-.2-.2-.5-.3-.8-.5-.4-.2-.8-.4-1.1-.7-1.2-1-.8-2.4-.1-3.1.6-.4.9-.8 1.7-.8 1.2 0 2.5 0 3.1.2h.1c-.
15711.6-.2 1.1-.4 1.7-.5-.2-1-.4-1.5-.4-.3 0-.6 0-.9.1-.2 0-.3.1-.4.2-.2.2-.2.5 0 .7l.5.4c.4.2.8.4 1.1.6.5.3 1 .8 1.1 1.4.2.9-.1 1.7-.9 2.3-.5.4-.7.6-1.4.6-1.4 0-2.5.1-3.4-.2-.1.2-.1.2-.2.1zm-3.5.3c.1-.7.1-.7.2-1 .5-2.2 1-4.5 1.4-6.7.1-.2.1-.3.3-.3H18c-.2 1.2-.4 2.1-.7 3.2-.3 1.5-.6 3-1 4.5 0 .2-.1.2-.3.2M5 8.2c0-.1.2-.2.3-.2h3.4c.5 0 .9.3 1 .8l.9 4.4c0 .1 0 .1.1.2 0-.1.1-.1.1-.1l2.1-5.1c-.1-.1 0-.2.1-.2h2.1c0 .1 0 .1-.1.2l-3.1 7.3c-.1.2-.1.3-.2.4-.1.1-.3 0-.5 0H9.7c-.1 0-.2 0-.2-.2L7.9 9.5c-.2-.2-.5-.5-.9-.6-.6-.3-1.7-.5-1.9-.5L5 8.2z" fill="#142688"></path>
1572                </svg></li>
1573        </ul>
1574        </div>
1575    </div>
1576  </div>
1577  
1578  
1579
1580<div class="oilty-plus-cart-sidebar" >
1581  <input type="checkbox" id="oilty-plus-checkbox" name="oilty-plus-checkbox" value="1"/>
1582  <label for="oilty-plus-checkbox">Oil'ty Plus Monthly Membership</label>
1583  <div class="oilty-info">
1584   Save an additional 20% off this order + free shipping on orders over $15! Sign up Oil'ty Plus $9.95/mo. Note: This offer cannot be combined with current sale promotions.<form method="post" action="/cart/add" id="8215212327234" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="id" value="44794297090370"/>
1585    <input type="hidden" name="quantity" value="1"/>
1586    
1587      
1588      	<input type="hidden" name="selling_plan" value="691797361007"/>
1589       
1590     
1591    <button type="submit" title="Add to Cart" class="oilty-plus-add add-to-cart">
1592      <span>Become A Member</span>
1593    </button><input type="hidden" name="product-id" value="8215212327234" /><input type="hidden" name="section-id" value="cart-sidebar" /></form></div>
1594</div>
1595  </div>
1596  
1597  <div class="cart-menu-checkout-actions">
1598    <div class="checkout-ammount">
1599      <div class="cart-total">
1600        <span>Total</span>
1601        <span class="__total" aria-live="polite" aria-label="Cart total: $0.00">$0.00</span>
1602      </div>
1603      <p>Shipping and taxes calculated on checkout.</p>
1604      <input type="hidden" id="cart-value" value="0"/>
1605      <input type="hidden" id="cart-type" value="monthly"/>
1606      <a href="/checkout" class="checkout-popup checkout-btn" aria-label="Proceed to checkout">CHECKOUT</a>
1607    </div>
1608  </div>
1609  
1610</aside>
1611
1612<style>
1613  .oilty-plus-cart-sidebar{
1614    padding: 5px 10px;
1615    background-color: #a4197a;
1616    border-radius: 5px;
1617    margin-top: 10px;
1618    color:#fff;
1619    width: calc(90%);
1620    margin-left: calc(5%);
1621    margin-bottom: 100px;
1622    position: sticky;
1623    bottom: 0;
1624  }
1625  .cart-container .oilty-plus-cart-sidebar{
1626    text-align: center;
1627    font-size:14px;
1628  }
1629  .oilty-plus-cart-sidebar > input{
1630    float: left;
1631    width: 15px;
1632    height: 15px;
1633    margin: 2px 5px 0px 0px;
1634  }
1635  .oilty-plus-cart-sidebar a{
1636    width: 16px;
1637    font-size: 12px;
1638    color: #fff;
1639    font-weight: 300;
1640    line-height: 16px;
1641    height: 16px;
1642    background-color: #763d1a;
1643    display: inline-block;
1644    text-align: center;
1645    border-radius: 100%;
1646  }
1647  .oilty-plus-add{
1648    background:#000;
1649    border:none;
1650    color:#fff;
1651    padding:3px 15px;
1652    border-radius:20px;
1653    display:none;
1654  }
1655  .oilty-plus-cart-sidebar .oilty-info{
1656    font-size:13px;
1657  }
1658
1659  .upsell-cart {
1660    width: calc(90%);
1661    margin-left: calc(5%);
1662  }
1663  .upsell-cart-sidebar {
1664    display: flex;
1665    flex-direction: column;
1666    padding: 8px;
1667    background-color: #f9f9f9;
1668    border: 1px solid #ddd;
1669    border-radius: 5px;
1670    margin-top: 10px;
1671  }
1672  .upsell-info {
1673    display: flex;
1674    align-items: center;
1675    gap: 10px;
1676  }
1677  .upsell-info img {
1678    flex-shrink: 0;
1679  }
1680  .upsell-info-details {
1681    display: flex;
1682    flex-direction: column;
1683  }
1684  .upsell-cart-sidebar > h5 {
1685    font-size: 16px;
1686  }
1687  .upsell-add {
1688    background-color: #a4197a;
1689    color: #fff;
1690    border: none;
1691    padding: 3px 8px;
1692    border-radius: 5px;
1693    cursor: pointer;
1694  }
1695  .upsell-add:hover {
1696    background-color: #d60069;
1697  }
1698
1699  /* ---- Variant selection styling ---- */
1700  .upsell-info-details {
1701    gap: 6px;
1702    flex: 1;
1703    min-width: 0;
1704  }
1705  .upsell-title {
1706    margin: 0;
1707    font-size: 14px;
1708    font-weight: 600;
1709    line-height: 1.3;
1710  }
1711  .upsell-price {
1712    margin: 0;
1713    font-size: 14px;
1714    font-weight: 700;
1715    color: #a4197a;
1716  }
1717  .upsell-cart-sidebar .upsell-variant-select {
1718    box-sizing: border-box;
1719    width: 100%;
1720    max-width: 240px;
1721    margin: 2px 0;
1722    padding: 8px 34px 8px 12px;
1723    font-size: 13px;
1724    line-height: 1.2;
1725    color: #1a1a1a;
1726    background-color: #fff;
1727    border: 1px solid #ddd;
1728    border-radius: 6px;
1729    cursor: pointer;
1730    appearance: none;
1731    -webkit-appearance: none;
1732    -moz-appearance: none;
1733    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%23a4197a' d='M6 8 0 2l1.4-1.4L6 5.2 10.6.6 12 2z'/%3E%3C/svg%3E");
1734    background-repeat: no-repeat;
1735    background-position: right 12px center;
1736    transition: border-color .15s ease, box-shadow .15s ease;
1737  }
1738  .upsell-cart-sidebar .upsell-variant-select:hover {
1739    border-color: #a4197a;
1740  }
1741  .upsell-cart-sidebar .upsell-variant-select:focus,
1742  .upsell-cart-sidebar .upsell-variant-select:focus-visible {
1743    outline: none;
1744    border-color: #a4197a;
1745    box-shadow: 0 0 0 3px rgba(164, 25, 122, 0.15);
1746  }
1747  .upsell-cart-sidebar .upsell-variant-select option:disabled {
1748    color: #aaa;
1749  }
1750  .upsell-add {
1751    align-self: flex-start;
1752    display: inline-flex;
1753    align-items: center;
1754    justify-content: center;
1755    padding: 8px 16px;
1756    font-size: 13px;
1757    font-weight: 600;
1758    border-radius: 6px;
1759    transition: background-color .15s ease;
1760  }
1761
1762  @media (max-width: 768px) {
1763    .oilty-plus-cart-sidebar {
1764      position: static;
1765      margin-bottom: 20px;
1766    }
1767  }
1768</style>
1769
1770<script>
1771  var is_oilty = false;
1772  var oilty_id_monthly = 44794297090370;
1773  var oilty_id_annually = 44794297123138;
1774  var oilty_type = 'monthly';
1775  var hide_oilty_signup = false;
1776</script>
1776
1777
1778</div>
1779      </header>
1780
1781      <main id="main-content" class="main-content">
1782        <section id="shopify-section-template--27595751620975__hero_slideshow_FppVXP" class="shopify-section frontpage-slideshow">
1783
1784<div class="slideshow-container" style="--desktop-height: 450px; --mobile-height: 400px;">
1785  
1786  <div class="slides-wrapper" data-speed="10">
1787    
1788      
1789      
1790      
1791        <div class="slide">
1792          
1793            <a href="/collections/build-a-fall-kit" class="slide-link">
1794          
1795              
1796                <img src="//www.rockymountainoils.com/cdn/shop/files/2026-10-Build_a_Fall_Kit_Web_Slider_2000x.webp?v=1790937319" alt="Build a Fall Kit" class="desktop-image" loading="lazy" width="1920" height="450"/>
1797              
1798              
1799                <img src="//www.rockymountainoils.com/cdn/shop/files/2026-10-Build_a_Fall_Kit_Mobile_Slider_1000x.webp?v=1790937319" alt="Build a Fall Kit" class="mobile-image" loading="lazy" width="767" height="900"/>
1800              
1801          
1802            </a>
1803          
1804        </div>
1805      
1806    
1807      
1808      
1809      
1810        <div class="slide">
1811          
1812            <a href="/products/membership" class="slide-link">
1813          
1814              
1815                <img src="//www.rockymountainoils.com/cdn/shop/files/2026-10-October_Oilty_Plus_Web_Slider_2000x.webp?v=1790834663" alt="OIlty Plus" class="desktop-image" loading="lazy" width="1920" height="450"/>
1816              
1817              
1818                <img src="//www.rockymountainoils.com/cdn/shop/files/2026-10-October_Oilty_Plus_Mobile_Slider_1000x.webp?v=1790834662" alt="OIlty Plus" class="mobile-image" loading="lazy" width="767" height="900"/>
1819              
1820          
1821            </a>
1822          
1823        </div>
1824      
1825    
1826      
1827      
1828      
1829        <div class="slide">
1830          
1831            <a href="/products/mystery-bundle" class="slide-link">
1832          
1833              
1834                <img src="//www.rockymountainoils.com/cdn/shop/files/mystery-bundle-web-slider_2000x.webp?v=1760031646" alt="Mystery Bundle" class="desktop-image" loading="lazy" width="1920" height="450"/>
1835              
1836              
1837                <img src="//www.rockymountainoils.com/cdn/shop/files/mystery-bundle-mobile-slider_1000x.webp?v=1760031640" alt="Mystery Bundle" class="mobile-image" loading="lazy" width="767" height="900"/>
1838              
1839          
1840            </a>
1841          
1842        </div>
1843      
1844    
1845  </div>
1846
1847
1848  <!-- Navigation Arrows -->
1849  <button class="arrow arrow-left" aria-label="Previous slide">&#10094;</button>
1850  <button class="arrow arrow-right" aria-label="Next slide">&#10095;</button>
1851</div>
1852
1853<script>
1854document.addEventListener('DOMContentLoaded', () => {
1855  const wrapper = document.querySelector('.slides-wrapper');
1856  const slides = wrapper.querySelectorAll('.slide');
1857  const speed = parseInt(wrapper.dataset.speed, 10) * 1000;
1858  const leftArrow = document.querySelector('.arrow-left');
1859  const rightArrow = document.querySelector('.arrow-right');
1860  const container = document.querySelector('.slideshow-container');
1861
1862  if (slides.length <= 1) return;
1863
1864  let current = 0;
1865  let autoplay;
1866  let startX, moveX;
1867  let isDragging = false;
1868  let translateX = 0;
1869
1870  const goToSlide = (index, animate = true) => {
1871    current = (index + slides.length) % slides.length;
1872    wrapper.style.transition = animate ? 'transform 0.3s ease-in-out' : 'none';
1873    wrapper.style.transform = `translateX(-${current * 100}%)`;
1874    translateX = -current * 100;
1875  };
1876
1877  const startAutoplay = () => {
1878    autoplay = setInterval(() => {
1879      goToSlide(current + 1);
1880    }, speed);
1881  };
1882
1883  const stopAutoplay = () => {
1884    clearInterval(autoplay);
1885  };
1886
1887  // Mouse and touch event handlers
1888  const handleStart = (clientX) => {
1889    stopAutoplay();
1890    isDragging = true;
1891    startX = clientX;
1892    wrapper.classList.add('grabbing');
1893  };
1894
1895  const handleMove = (clientX) => {
1896    if (!isDragging) return;
1897    moveX = clientX;
1898    const diff = moveX - startX;
1899    const newTranslateX = translateX + (diff / container.offsetWidth) * 100;
1900    wrapper.style.transform = `translateX(calc(${newTranslateX}% + ${diff}px))`;
1901  };
1902
1903  const handleEnd = (clientX) => {
1904    if (!isDragging) return;
1905    isDragging = false;
1906    wrapper.classList.remove('grabbing');
1907    
1908    moveX = clientX;
1909    const diff = moveX - startX;
1910    const threshold = container.offsetWidth * 0.1; // 10% threshold
1911    
1912    if (diff > threshold) {
1913      goToSlide(current - 1);
1914    } else if (diff < -threshold) {
1915      goToSlide(current + 1);
1916    } else {
1917      goToSlide(current);
1918    }
1919    
1920    startAutoplay();
1921  };
1922
1923  // Mouse events
1924  container.addEventListener('mousedown', (e) => {
1925    e.preventDefault();
1926    handleStart(e.clientX);
1927  });
1928
1929  document.addEventListener('mousemove', (e) => {
1930    handleMove(e.clientX);
1931  });
1932
1933  document.addEventListener('mouseup', (e) => {
1934    handleEnd(e.clientX);
1935  });
1936
1937  // Touch events
1938  container.addEventListener('touchstart', (e) => {
1939    handleStart(e.touches[0].clientX);
1940  }, { passive: true });
1941
1942  container.addEventListener('touchmove', (e) => {
1943    handleMove(e.touches[0].clientX);
1944  }, { passive: false });
1945
1946  container.addEventListener('touchend', (e) => {
1947    handleEnd(e.changedTouches[0].clientX);
1948  });
1949
1950  // Arrow controls
1951  leftArrow.addEventListener('click', () => {
1952    stopAutoplay();
1953    goToSlide(current - 1);
1954    startAutoplay();
1955  });
1956
1957  rightArrow.addEventListener('click', () => {
1958    stopAutoplay();
1959    goToSlide(current + 1);
1960    startAutoplay();
1961  });
1962
1963  // Prevent image drag
1964  slides.forEach(slide => {
1965    slide.addEventListener('dragstart', (e) => {
1966      e.preventDefault();
1967    });
1968  });
1969
1970  // Start autoplay
1971  startAutoplay();
1972});
1973</script>
1973</section><section id="shopify-section-template--27595751620975__707c2d2a-c7a2-411a-a343-e6c163e414dd" class="shopify-section section"><section class="featured_categories sec_pad">
1974  <div class="container">
1975    <h2 style="text-align: center;">Featured Categories</h2>
1976    <div class="categories_wrapper"><div class="category_wrap">
1977            <a href="/collections/essential-oil-blends">
1978                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/blends-button_442x250.webp?v=1720725380" width="442" height="250" alt="Blends"></div>
1979            </a>
1980        </div><div class="category_wrap">
1981            <a href="/collections/essential-oil-roll-ons">
1982                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/roll-on-button_442x250.webp?v=1720725393" width="442" height="250" alt="Roll-On"></div>
1983            </a>
1984        </div><div class="category_wrap">
1985            <a href="/pages/organic-essential-oils">
1986                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/organic-button_1_442x250.webp?v=1720725428" width="442" height="250" alt="Organic"></div>
1987            </a>
1988        </div><div class="category_wrap">
1989            <a href="/collections/chakra-oils">
1990                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/chakra-button_442x250.webp?v=1720725439" width="442" height="250" alt="Chakra"></div>
1991            </a>
1992        </div><div class="category_wrap">
1993            <a href="/collections/kid-friendly">
1994                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/kid-friendly-button_442x250.webp?v=1720725453" width="442" height="250" alt="Kid Friendly"></div>
1995            </a>
1996        </div><div class="category_wrap">
1997            <a href="/collections/sale">
1998                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/on-sale-button_442x250.webp?v=1720725466" width="442" height="250" alt="On Sale"></div>
1999            </a>
2000        </div><div class="category_wrap">
2001            <a href="/collections/best-sellers">
2002                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/best-sellers-button_442x250.webp?v=1720725479" width="442" height="250" alt="Best Sellers"></div>
2003            </a>
2004        </div><div class="category_wrap">
2005            <a href="/collections/essential-oil-diffusers">
2006                        <div class="CategoriesCardImage"><img src="//www.rockymountainoils.com/cdn/shop/files/diffusers-button_442x250.webp?v=1720725492" width="442" height="250" alt="Diffusers"></div>
2007            </a>
2008        </div></div>
2009  </div>
2010</section>
2011
2012
2013  
2014<style> @media (max-width: 767px) {#shopify-section-template--27595751620975__707c2d2a-c7a2-411a-a343-e6c163e414dd .sec_pad_wrapper > div, #shopify-section-template--27595751620975__707c2d2a-c7a2-411a-a343-e6c163e414dd .categories_wrapper > div {width: 48%; flex: 0 0 48%; padding: 10px; }} </style></section><section id="shopify-section-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" class="shopify-section section"><link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/product-slider.css?v=100911957534726869481785434252" rel="stylesheet" type="text/css" media="all" />
2015
2016<section class="TopSeller">
2017          <div class="container">
2018              <div class="TopSeller_Wrap">
2019                  
2020                    <div class="sec-heading text-center">
2021                        
2022                          <h2>Best Sellers</h2>
2023                        
2024                        <a href="/collections/best-sellers" class="viewAllBtn" aria-label="View all Best Sellers products">
2025                            View all <i role="img" aria-hidden="true"></i>
2026                        </a>
2027                    </div>
2028                  
2029                  <div class="owl-carousel carousel-fade owl-theme slider-section ProductsSlider" id="ProductsSlider"><div class="item">
2030                    	
2030<script>
2031(function() {
2032    class ProductCardVariantSelector {
2033        constructor(container) {
2034            this.container = container;
2035            if (!this.container) return;
2036
2037            this.form = this.container.querySelector('.product-form');
2038            this.variantSelectors = this.container.querySelectorAll('.variant-select');
2039            this.masterSelect = this.container.querySelector('.product-variants-select');
2040            this.productImage = this.container.querySelector('.main-product-image');
2041            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
2042            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
2043            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
2044            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
2045            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
2046            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
2047            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
2048            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
2049            this.saleTag = this.container.querySelector('.hc-sale-tag');
2050            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
2051
2052            if (!this.masterSelect || !this.variantsJsonScript) return;
2053
2054            try {
2055                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
2056            } catch (e) { return; }
2057
2058            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
2059            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
2060
2061            this.init();
2062        }
2063
2064        init() {
2065            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
2066            if (this.productImage) {
2067                let touchStartX = 0, touchStartY = 0, touchMoved = false;
2068                let lastTouchTime = 0;
2069
2070                this.productImage.style.cursor = 'pointer';
2071                this.productImage.setAttribute('role', 'button');
2072                this.productImage.setAttribute('tabindex', '0');
2073
2074                this.productImage.addEventListener('touchstart', (e) => {
2075                    const t = e.touches[0];
2076                    touchStartX = t.clientX;
2077                    touchStartY = t.clientY;
2078                    touchMoved = false;
2079                }, { passive: true });
2080
2081                this.productImage.addEventListener('touchmove', (e) => {
2082                    const t = e.touches[0];
2083                    if (Math.abs(t.clientX - touchStartX) > 10 ||
2084                        Math.abs(t.clientY - touchStartY) > 10) {
2085                        touchMoved = true;
2086                    }
2087                }, { passive: true });
2088
2089                this.productImage.addEventListener('touchend', (e) => {
2090                    if (touchMoved) return;
2091                    lastTouchTime = Date.now();
2092                    e.preventDefault();
2093                    this.onImageTap(e);
2094                }, { passive: false });
2095
2096                // Desktop / non-touch fallback (with double-fire protection after touchend)
2097                this.productImage.addEventListener('click', (e) => {
2098                    if (Date.now() - lastTouchTime < 500) return;
2099                    this.onImageTap(e);
2100                });
2101
2102                this.productImage.addEventListener('keydown', (e) => {
2103                    if (e.key === 'Enter' || e.key === ' ') {
2104                        e.preventDefault();
2105                        this.onImageTap(e);
2106                    }
2107                });
2108            }
2109
2110            // --- Variant select listeners ---
2111            if (this.variantSelectors.length > 0) {
2112                this.variantSelectors.forEach(select => {
2113                    select.addEventListener('change', this.onVariantChange.bind(this));
2114                });
2115                this.updateProductDetails(this.getCurrentVariant());
2116            }
2117        }
2118
2119        // ============================================================
2120        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
2121        // Currently: navigates to the product page.
2122        // ============================================================
2123        onImageTap(e) {
2124            const link = this.container.querySelector('.product-title-link');
2125            if (link && link.href && link.href !== '#') {
2126                window.location.href = link.href;
2127            }
2128        }
2129        // ============================================================
2130
2131        onVariantChange() {
2132            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
2133            const matchedVariant = this.findMatchingVariant(selectedOptions);
2134
2135            if (matchedVariant) {
2136                this.masterSelect.value = matchedVariant.id;
2137                this.updateProductDetails(matchedVariant);
2138                if (this.statusElement) this.statusElement.textContent = '';
2139            } else {
2140                if (this.statusElement) {
2141                    this.statusElement.textContent = 'No available variant matches your selection';
2142                }
2143                this.updateProductDetails(null);
2144            }
2145        }
2146
2147        findMatchingVariant(selectedOptions) {
2148            return this.productVariants.find(variant => {
2149                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
2150                return selectedOptions.every((val, i) => variant.options[i] === val);
2151            });
2152        }
2153
2154        getCurrentVariant() {
2155            if (!this.masterSelect) return null;
2156            const id = this.masterSelect.value;
2157            if (!id) return null;
2158            return this.productVariants.find(v => String(v.id) === String(id)) || null;
2159        }
2160
2161        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
2162        sizedImageUrl(src, width) {
2163            if (!src) return src;
2164            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
2165        }
2166
2167        updateProductDetails(variant) {
2168            this.container.setAttribute('aria-busy', 'true');
2169
2170            if (!variant) {
2171                if (this.addToCartButton) this.addToCartButton.disabled = true;
2172                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
2173                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
2174                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
2175                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
2176                if (this.saleTag) this.saleTag.style.display = 'none';
2177                this.container.setAttribute('aria-busy', 'false');
2178                return;
2179            }
2180
2181            // 1. Image
2182            if (this.productImage) {
2183                if (variant.featured_image && variant.featured_image.src) {
2184                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
2185                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
2186                    this.productImage.src = sized;
2187                    this.productImage.srcset = '';
2188                    this.productImage.alt = variant.featured_image.alt
2189                        ? variant.featured_image.alt
2190                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
2191                } else if (this.mainImageUrl) {
2192                    this.productImage.src = this.mainImageUrl;
2193                    this.productImage.srcset = '';
2194                    this.productImage.alt = this.productTitle;
2195                }
2196            }
2197
2198            // 2. Price
2199            const moneyFormat = "${{amount}}";
2200            const formatMoney = (cents, format) => {
2201                if (typeof cents === 'string') cents = cents.replace('.', '');
2202                let value = '';
2203                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
2204                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
2205
2206                function formatWithDelimiters(number, precision, thousands, decimal) {
2207                    precision = precision ?? 2;
2208                    thousands = thousands ?? ',';
2209                    decimal = decimal ?? '.';
2210                    if (isNaN(number) || number == null) return 0;
2211                    number = (number / 100.0).toFixed(precision);
2212                    const parts = number.split('.');
2213                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
2214                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
2215                    return dollars + centsPart;
2216                }
2217
2218                switch (formatString.match(placeholderRegex)?.[1]) {
2219                    case 'amount': value = formatWithDelimiters(cents, 2); break;
2220                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
2221                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
2222                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
2223                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
2224                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
2225                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
2226                    default: value = formatWithDelimiters(cents, 2);
2227                }
2228                try {
2229                    return formatString.replace(placeholderRegex, value);
2230                } catch (e) {
2231                    const fallback = (cents / 100.0).toFixed(2);
2232                    return formatString.includes('')
2233                        ? formatString.replace(placeholderRegex, fallback)
2234                        : fallback;
2235                }
2236            };
2237
2238            if (this.currentPriceElement) {
2239                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
2240            }
2241            if (this.comparePriceElement && this.priceWrapper) {
2242                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
2243                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
2244                    this.comparePriceElement.style.display = '';
2245                    this.priceWrapper.classList.add('sale');
2246                } else {
2247                    this.comparePriceElement.textContent = '';
2248                    this.comparePriceElement.style.display = 'none';
2249                    this.priceWrapper.classList.remove('sale');
2250                }
2251            }
2252
2253            // 3. Sale tag
2254            if (this.saleTag) {
2255                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
2256                if (isDiscounted && variant.available) {
2257                    this.saleTag.style.display = 'block';
2258                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
2259                    const span = this.saleTag.querySelector('span');
2260                    if (span) span.textContent = discount + '%';
2261                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
2262                    this.saleTag.setAttribute('role', 'status');
2263                } else {
2264                    this.saleTag.style.display = 'none';
2265                }
2266            }
2267
2268            // 4. Add to cart
2269            if (this.addToCartButton && this.addToCartText) {
2270                if (variant.available) {
2271                    this.addToCartButton.disabled = false;
2272                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
2273                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
2274                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
2275                } else {
2276                    this.addToCartButton.disabled = true;
2277                    this.addToCartText.textContent = 'Sold Out';
2278                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
2279                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
2280                }
2281            }
2282            if (this.notifyMeButton) {
2283                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
2284            }
2285
2286            this.container.setAttribute('aria-busy', 'false');
2287        }
2288    }
2289
2290    function initProductCards(root) {
2291        root = root || document;
2292        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
2293            if (cardContainer.dataset.variantSelectorInit === 'true') return;
2294            cardContainer.dataset.variantSelectorInit = 'true';
2295            new ProductCardVariantSelector(cardContainer);
2296        });
2297    }
2298
2299    if (document.readyState === 'loading') {
2300        document.addEventListener('DOMContentLoaded', () => initProductCards());
2301    } else {
2302        initProductCards();
2303    }
2304
2305    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
2306})();
2307</script>
2307<div class="product-card-wrapper" data-product-id="8025566609730" aria-busy="false">
2308
2309    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730"><!-- WISHLIST BUTTON -->
2310        <div class='xb-wishlist__btn-custom'>
2311            <div
2312                class='xb-wishlist__add'
2313                xb-product-id='8025566609730'
2314                xb-product-title='Breathe Ease Essential Oil Blend'
2315                xb-product-variant='52912994877807'
2316                xb-is-in-stock='true'
2317                xb-product-handle='breathe-ease-essential-oil-blend'
2318            >
2319                <button aria-label="Add Breathe Ease Essential Oil Blend to wishlist" aria-pressed="false">
2320                    <svg
2321                        xmlns='http://www.w3.org/2000/svg'
2322                        width='20'
2323                        height='20'
2324                        viewBox='0 0 24 24'
2325                        fill='none'
2326                        stroke='#FF4A71'
2327                        stroke-width='2'
2328                        stroke-linecap='round'
2329                        stroke-linejoin='round'
2330                        aria-hidden='true'
2331                        focusable='false'
2332                    >
2333                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
2334                    </svg>
2335                </button>
2336            </div>
2337
2338            <div class="xb-wishlist__loading" xb-product-id="8025566609730">
2339                <span class="loading-spinner"></span>
2340            </div>
2341
2342            <div class='xb-wishlist__remove' xb-product-id='8025566609730' xb-is-in-stock='true'>
2343                <button aria-label="Remove Breathe Ease Essential Oil Blend from wishlist" aria-pressed="true">
2344                    <svg
2345                        xmlns='http://www.w3.org/2000/svg'
2346                        width='20'
2347                        height='20'
2348                        viewBox='0 0 24 24'
2349                        fill='#FF4A71'
2350                        stroke='#FF4A71'
2351                        stroke-width='2'
2352                        stroke-linecap='round'
2353                        stroke-linejoin='round'
2354                        aria-hidden='true'
2355                        focusable='false'
2356                    >
2357                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
2358                    </svg>
2359                </button>
2360            </div>
2361        </div><img
2362              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730"
2363              class="main-product-image"
2364              src="//www.rockymountainoils.com/cdn/shop/files/BreatheEase5mlBlend.jpg?crop=center&height=300&v=1744351343&width=300"
2365              alt="Quality Breathe Easy Essential Oil Blend"
2366              width="300"
2367              height="300"
2368              loading="lazy"
2369            /></div>
2370
2371    <div class="product-content">
2372        <div class="product-title">
2373            <a href="/products/breathe-ease-essential-oil-blend" class="product-title-link" aria-label="View Breathe Ease Essential Oil Blend">
2374                <h2>Breathe Ease Essential Oil Blend</h2>
2375            </a>
2376        </div><div>
2377                <div class="product-subtitle">
2378                    Sharp, menthol-like scent; clears congestion, eases muscles.
2379                </div>
2380            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025566609730" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
2381            <div class="product-data-store" style="display:none;"
2382                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/BreatheEase5mlBlend.jpg?v=1744351343&width=300"
2383                 data-product-title="Breathe Ease Essential Oil Blend"
2384                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730">
2385            </div>
2386
2387            
2387<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" type="application/json">
2388                [{"id":52912994877807,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"BRENEA-B5","requires_shipping":true,"taxable":true,"featured_image":{"id":43885022445890,"product_id":8025566609730,"position":1,"created_at":"2024-01-22T07:42:38-07:00","updated_at":"2025-04-11T00:02:23-06:00","alt":"Quality Breathe Easy Essential Oil Blend","width":532,"height":532,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/BreatheEase5mlBlend.jpg?v=1744351343","variant_ids":[52912994877807]},"available":true,"name":"Breathe Ease Essential Oil Blend - 5ml","public_title":"5ml","options":["5ml"],"price":1020,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176177441","featured_media":{"alt":"Quality Breathe Easy Essential Oil Blend","id":36355387720002,"position":1,"preview_image":{"aspect_ratio":1.0,"height":532,"width":532,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/BreatheEase5mlBlend.jpg?v=1744351343"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":714}],"price":714,"compare_at_price":1020,"per_delivery_price":714,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":867},{"position":2,"price":816}],"price":867,"compare_at_price":1020,"per_delivery_price":867,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":918},{"position":2,"price":867}],"price":918,"compare_at_price":1020,"per_delivery_price":918,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":969},{"position":2,"price":918}],"price":969,"compare_at_price":1020,"per_delivery_price":969,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":918},{"position":2,"price":867}],"price":918,"compare_at_price":1020,"per_delivery_price":918,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":969},{"position":2,"price":918}],"price":969,"compare_at_price":1020,"per_delivery_price":969,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":867},{"position":2,"price":816}],"price":867,"compare_at_price":1020,"per_delivery_price":867,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":918},{"position":2,"price":867}],"price":918,"compare_at_price":1020,"per_delivery_price":918,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":969},{"position":2,"price":918}],"price":969,"compare_at_price":1020,"per_delivery_price":969,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44111525019970,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"BRENEA-B15","requires_shipping":true,"taxable":true,"featured_image":{"id":43885027328322,"product_id":8025566609730,"position":4,"created_at":"2024-01-22T07:43:39-07:00","updated_at":"2025-04-11T00:02:23-06:00","alt":"Breathe Easy Essential Oil Blend","width":571,"height":571,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/BreatheEase15mlBlend.jpg?v=1744351343","variant_ids":[44111525019970]},"available":true,"name":"Breathe Ease Essential Oil Blend - 15ml","public_title":"15ml","options":["15ml"],"price":2045,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176177434","featured_media":{"alt":"Breathe Easy Essential Oil Blend","id":36355392536898,"position":4,"preview_image":{"aspect_ratio":1.0,"height":571,"width":571,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/BreatheEase15mlBlend.jpg?v=1744351343"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1432}],"price":1432,"compare_at_price":2045,"per_delivery_price":1432,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1738},{"position":2,"price":1636}],"price":1738,"compare_at_price":2045,"per_delivery_price":1738,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1738},{"position":2,"price":1636}],"price":1738,"compare_at_price":2045,"per_delivery_price":1738,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
2389            </script>
2389<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025566609730" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
2390                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" aria-live="polite" aria-atomic="true">
2391                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" style="display: none;"></span>
2392                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730">$10.20</span>
2393
2394                        
2395                    </div>
2396
2397                    
2398                        <div class="product-option">
2399                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730-0" class="visually-hidden">
2400                                Select Size for Breathe Ease Essential Oil Blend
2401                            </label>
2402                            <select
2403                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730-0"
2404                                class="variant-select"
2405                                name="options[Size]"
2406                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730"
2407                                data-index="option0"
2408                            ><option
2409                                        value="5ml"
2410                                        selected="selected"
2411                                    >
2412                                        5ml
2413                                    </option><option
2414                                        value="15ml"
2415                                        
2416                                    >
2417                                        15ml
2418                                    </option></select>
2419                        </div>
2420                    
2421                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" class="visually-hidden">
2422                Choose variant for Breathe Ease Essential Oil Blend
2423            </label>
2424            <select
2425                name="id"
2426                data-productid="8025566609730"
2427                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730"
2428                class="product-variants-select no-js-only"
2429            ><option
2430                        value="52912994877807"
2431                         selected="selected" 
2432                        
2433                    >
2434                        5ml - $10.20 
2435                    </option><option
2436                        value="44111525019970"
2437                        
2438                        
2439                    >
2440                        15ml - $20.45 
2441                    </option></select>
2442
2443            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730">
2444                <input type="hidden" name="quantity" value="1">
2445                
2446
2447                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" aria-live="assertive"></div>
2448
2449                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730" class="visually-hidden">Adds item to your shopping cart</span>
2450
2451                <button
2452                    class="addtocart-btn add-to-cart"
2453                    type="submit"
2454                    name="add"
2455                    aria-label="Add to Cart - Add Breathe Ease Essential Oil Blend to cart"
2456                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730"
2457                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730"
2458                    
2459                >
2460                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025566609730">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
2461                </button>
2462            </div><input type="hidden" name="product-id" value="8025566609730" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
2462<script type="application/ld+json">
2463    {
2464      "@context": "http://schema.org/",
2465      "@type": "Product",
2466      "name": "Breathe Ease Essential Oil Blend",
2467      "url": "https:\/\/www.rockymountainoils.com\/products\/breathe-ease-essential-oil-blend","image": [
2468          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/BreatheEase5mlBlend.jpg?v=1744351343\u0026width=532"
2469        ],
2470      "description": "Breathe Ease Essential Oil Blend combines powerful respiratory support oils to help you breathe better naturally. This synergistic blend of Eucalyptus, Myrtle, Peppermint, Spruce, Ravintsara, Pine, and Marjoram opens airways, relieves congestion, and supports overall respiratory health.\nUse this potent blend to clear sinuses, ease coughing, and boost immunity during cold and flu season. The natural expectorant and anti-inflammatory properties provide relief from allergies, asthma, and other breathing difficulties. You can also use it as a home remedy for allergies.","sku": "BRENEA-B5",
2471      "brand": {
2472        "@type": "Brand",
2473        "name": "Rocky Mountain Oils"
2474      },
2475      "offers": {
2476          "@type": "AggregateOffer",
2477          "availability": "http://schema.org/InStock",
2478          "priceCurrency": "USD",
2479          "highPrice": 20.45,
2480          "lowPrice": 10.2,
2481          "offerCount": 2,
2482          "offers": [{
2483              "@type" : "Offer","sku": "BRENEA-B5","gtin12": "053176177441","availability" : "http://schema.org/InStock",
2484              "price" : 10.2,
2485              "priceCurrency" : "USD",
2486              "priceValidUntil": "2026-12-31",
2487              "url" : "https:\/\/www.rockymountainoils.com\/products\/breathe-ease-essential-oil-blend?variant=52912994877807"
2488            },
2489{
2490              "@type" : "Offer","sku": "BRENEA-B15","gtin12": "053176177434","availability" : "http://schema.org/InStock",
2491              "price" : 20.45,
2492              "priceCurrency" : "USD",
2493              "priceValidUntil": "2026-12-31",
2494              "url" : "https:\/\/www.rockymountainoils.com\/products\/breathe-ease-essential-oil-blend?variant=44111525019970"
2495            }
2496]
2497      }
2498    }
2499    </script>
2499</div>
2500
2501<style>
2502/* Ensure visually-hidden utility exists even if theme lacks it */
2503.visually-hidden {
2504    position: absolute !important;
2505    width: 1px !important;
2506    height: 1px !important;
2507    padding: 0 !important;
2508    margin: -1px !important;
2509    overflow: hidden !important;
2510    clip: rect(0, 0, 0, 0) !important;
2511    white-space: nowrap !important;
2512    border: 0 !important;
2513}
2514
2515/* Ensure the main product image is tappable on iOS */
2516.main-product-image {
2517    cursor: pointer;
2518    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
2519    touch-action: manipulation;
2520}
2521
2522/* ULTIMATE FIX - Override anything that hides select text */
2523.product-variants-select,
2524.product-variants-select.no-js-only,
2525select.product-variants-select,
2526select[id*="ProductSelect-"] {
2527    color: #1a1a1a !important;
2528    opacity: 1 !important;
2529    background-color: #ffffff !important;
2530    -webkit-text-fill-color: #1a1a1a !important;
2531}
2532
2533.product-variants-select option,
2534select[id*="ProductSelect-"] option {
2535    color: #1a1a1a !important;
2536    background-color: #ffffff !important;
2537    -webkit-text-fill-color: #1a1a1a !important;
2538}
2539
2540.product-variants-select option:checked,
2541select[id*="ProductSelect-"] option:checked {
2542    color: #1a1a1a !important;
2543    background-color: #e8f0fe !important;
2544}
2545
2546.product-variants-select option:disabled,
2547select[id*="ProductSelect-"] option:disabled {
2548    color: #6c6c6c !important;
2549    background-color: #f5f5f5 !important;
2550    -webkit-text-fill-color: #6c6c6c !important;
2551    opacity: 1 !important;
2552}
2553
2554.product-variants-select:focus,
2555select[id*="ProductSelect-"]:focus {
2556    color: #1a1a1a !important;
2557    outline: 3px solid #000000ff !important;
2558}
2559</style>
2560                      </div><div class="item">
2561                    	
2561<script>
2562(function() {
2563    class ProductCardVariantSelector {
2564        constructor(container) {
2565            this.container = container;
2566            if (!this.container) return;
2567
2568            this.form = this.container.querySelector('.product-form');
2569            this.variantSelectors = this.container.querySelectorAll('.variant-select');
2570            this.masterSelect = this.container.querySelector('.product-variants-select');
2571            this.productImage = this.container.querySelector('.main-product-image');
2572            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
2573            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
2574            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
2575            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
2576            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
2577            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
2578            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
2579            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
2580            this.saleTag = this.container.querySelector('.hc-sale-tag');
2581            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
2582
2583            if (!this.masterSelect || !this.variantsJsonScript) return;
2584
2585            try {
2586                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
2587            } catch (e) { return; }
2588
2589            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
2590            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
2591
2592            this.init();
2593        }
2594
2595        init() {
2596            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
2597            if (this.productImage) {
2598                let touchStartX = 0, touchStartY = 0, touchMoved = false;
2599                let lastTouchTime = 0;
2600
2601                this.productImage.style.cursor = 'pointer';
2602                this.productImage.setAttribute('role', 'button');
2603                this.productImage.setAttribute('tabindex', '0');
2604
2605                this.productImage.addEventListener('touchstart', (e) => {
2606                    const t = e.touches[0];
2607                    touchStartX = t.clientX;
2608                    touchStartY = t.clientY;
2609                    touchMoved = false;
2610                }, { passive: true });
2611
2612                this.productImage.addEventListener('touchmove', (e) => {
2613                    const t = e.touches[0];
2614                    if (Math.abs(t.clientX - touchStartX) > 10 ||
2615                        Math.abs(t.clientY - touchStartY) > 10) {
2616                        touchMoved = true;
2617                    }
2618                }, { passive: true });
2619
2620                this.productImage.addEventListener('touchend', (e) => {
2621                    if (touchMoved) return;
2622                    lastTouchTime = Date.now();
2623                    e.preventDefault();
2624                    this.onImageTap(e);
2625                }, { passive: false });
2626
2627                // Desktop / non-touch fallback (with double-fire protection after touchend)
2628                this.productImage.addEventListener('click', (e) => {
2629                    if (Date.now() - lastTouchTime < 500) return;
2630                    this.onImageTap(e);
2631                });
2632
2633                this.productImage.addEventListener('keydown', (e) => {
2634                    if (e.key === 'Enter' || e.key === ' ') {
2635                        e.preventDefault();
2636                        this.onImageTap(e);
2637                    }
2638                });
2639            }
2640
2641            // --- Variant select listeners ---
2642            if (this.variantSelectors.length > 0) {
2643                this.variantSelectors.forEach(select => {
2644                    select.addEventListener('change', this.onVariantChange.bind(this));
2645                });
2646                this.updateProductDetails(this.getCurrentVariant());
2647            }
2648        }
2649
2650        // ============================================================
2651        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
2652        // Currently: navigates to the product page.
2653        // ============================================================
2654        onImageTap(e) {
2655            const link = this.container.querySelector('.product-title-link');
2656            if (link && link.href && link.href !== '#') {
2657                window.location.href = link.href;
2658            }
2659        }
2660        // ============================================================
2661
2662        onVariantChange() {
2663            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
2664            const matchedVariant = this.findMatchingVariant(selectedOptions);
2665
2666            if (matchedVariant) {
2667                this.masterSelect.value = matchedVariant.id;
2668                this.updateProductDetails(matchedVariant);
2669                if (this.statusElement) this.statusElement.textContent = '';
2670            } else {
2671                if (this.statusElement) {
2672                    this.statusElement.textContent = 'No available variant matches your selection';
2673                }
2674                this.updateProductDetails(null);
2675            }
2676        }
2677
2678        findMatchingVariant(selectedOptions) {
2679            return this.productVariants.find(variant => {
2680                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
2681                return selectedOptions.every((val, i) => variant.options[i] === val);
2682            });
2683        }
2684
2685        getCurrentVariant() {
2686            if (!this.masterSelect) return null;
2687            const id = this.masterSelect.value;
2688            if (!id) return null;
2689            return this.productVariants.find(v => String(v.id) === String(id)) || null;
2690        }
2691
2692        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
2693        sizedImageUrl(src, width) {
2694            if (!src) return src;
2695            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
2696        }
2697
2698        updateProductDetails(variant) {
2699            this.container.setAttribute('aria-busy', 'true');
2700
2701            if (!variant) {
2702                if (this.addToCartButton) this.addToCartButton.disabled = true;
2703                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
2704                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
2705                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
2706                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
2707                if (this.saleTag) this.saleTag.style.display = 'none';
2708                this.container.setAttribute('aria-busy', 'false');
2709                return;
2710            }
2711
2712            // 1. Image
2713            if (this.productImage) {
2714                if (variant.featured_image && variant.featured_image.src) {
2715                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
2716                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
2717                    this.productImage.src = sized;
2718                    this.productImage.srcset = '';
2719                    this.productImage.alt = variant.featured_image.alt
2720                        ? variant.featured_image.alt
2721                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
2722                } else if (this.mainImageUrl) {
2723                    this.productImage.src = this.mainImageUrl;
2724                    this.productImage.srcset = '';
2725                    this.productImage.alt = this.productTitle;
2726                }
2727            }
2728
2729            // 2. Price
2730            const moneyFormat = "${{amount}}";
2731            const formatMoney = (cents, format) => {
2732                if (typeof cents === 'string') cents = cents.replace('.', '');
2733                let value = '';
2734                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
2735                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
2736
2737                function formatWithDelimiters(number, precision, thousands, decimal) {
2738                    precision = precision ?? 2;
2739                    thousands = thousands ?? ',';
2740                    decimal = decimal ?? '.';
2741                    if (isNaN(number) || number == null) return 0;
2742                    number = (number / 100.0).toFixed(precision);
2743                    const parts = number.split('.');
2744                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
2745                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
2746                    return dollars + centsPart;
2747                }
2748
2749                switch (formatString.match(placeholderRegex)?.[1]) {
2750                    case 'amount': value = formatWithDelimiters(cents, 2); break;
2751                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
2752                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
2753                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
2754                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
2755                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
2756                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
2757                    default: value = formatWithDelimiters(cents, 2);
2758                }
2759                try {
2760                    return formatString.replace(placeholderRegex, value);
2761                } catch (e) {
2762                    const fallback = (cents / 100.0).toFixed(2);
2763                    return formatString.includes('')
2764                        ? formatString.replace(placeholderRegex, fallback)
2765                        : fallback;
2766                }
2767            };
2768
2769            if (this.currentPriceElement) {
2770                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
2771            }
2772            if (this.comparePriceElement && this.priceWrapper) {
2773                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
2774                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
2775                    this.comparePriceElement.style.display = '';
2776                    this.priceWrapper.classList.add('sale');
2777                } else {
2778                    this.comparePriceElement.textContent = '';
2779                    this.comparePriceElement.style.display = 'none';
2780                    this.priceWrapper.classList.remove('sale');
2781                }
2782            }
2783
2784            // 3. Sale tag
2785            if (this.saleTag) {
2786                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
2787                if (isDiscounted && variant.available) {
2788                    this.saleTag.style.display = 'block';
2789                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
2790                    const span = this.saleTag.querySelector('span');
2791                    if (span) span.textContent = discount + '%';
2792                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
2793                    this.saleTag.setAttribute('role', 'status');
2794                } else {
2795                    this.saleTag.style.display = 'none';
2796                }
2797            }
2798
2799            // 4. Add to cart
2800            if (this.addToCartButton && this.addToCartText) {
2801                if (variant.available) {
2802                    this.addToCartButton.disabled = false;
2803                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
2804                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
2805                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
2806                } else {
2807                    this.addToCartButton.disabled = true;
2808                    this.addToCartText.textContent = 'Sold Out';
2809                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
2810                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
2811                }
2812            }
2813            if (this.notifyMeButton) {
2814                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
2815            }
2816
2817            this.container.setAttribute('aria-busy', 'false');
2818        }
2819    }
2820
2821    function initProductCards(root) {
2822        root = root || document;
2823        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
2824            if (cardContainer.dataset.variantSelectorInit === 'true') return;
2825            cardContainer.dataset.variantSelectorInit = 'true';
2826            new ProductCardVariantSelector(cardContainer);
2827        });
2828    }
2829
2830    if (document.readyState === 'loading') {
2831        document.addEventListener('DOMContentLoaded', () => initProductCards());
2832    } else {
2833        initProductCards();
2834    }
2835
2836    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
2837})();
2838</script>
2838<div class="product-card-wrapper" data-product-id="8025560121666" aria-busy="false">
2839
2840    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666"><!-- WISHLIST BUTTON -->
2841        <div class='xb-wishlist__btn-custom'>
2842            <div
2843                class='xb-wishlist__add'
2844                xb-product-id='8025560121666'
2845                xb-product-title='Eucalyptus Radiata Essential Oil'
2846                xb-product-variant='48687488991554'
2847                xb-is-in-stock='true'
2848                xb-product-handle='eucalyptus-radiata-essential-oil'
2849            >
2850                <button aria-label="Add Eucalyptus Radiata Essential Oil to wishlist" aria-pressed="false">
2851                    <svg
2852                        xmlns='http://www.w3.org/2000/svg'
2853                        width='20'
2854                        height='20'
2855                        viewBox='0 0 24 24'
2856                        fill='none'
2857                        stroke='#FF4A71'
2858                        stroke-width='2'
2859                        stroke-linecap='round'
2860                        stroke-linejoin='round'
2861                        aria-hidden='true'
2862                        focusable='false'
2863                    >
2864                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
2865                    </svg>
2866                </button>
2867            </div>
2868
2869            <div class="xb-wishlist__loading" xb-product-id="8025560121666">
2870                <span class="loading-spinner"></span>
2871            </div>
2872
2873            <div class='xb-wishlist__remove' xb-product-id='8025560121666' xb-is-in-stock='true'>
2874                <button aria-label="Remove Eucalyptus Radiata Essential Oil from wishlist" aria-pressed="true">
2875                    <svg
2876                        xmlns='http://www.w3.org/2000/svg'
2877                        width='20'
2878                        height='20'
2879                        viewBox='0 0 24 24'
2880                        fill='#FF4A71'
2881                        stroke='#FF4A71'
2882                        stroke-width='2'
2883                        stroke-linecap='round'
2884                        stroke-linejoin='round'
2885                        aria-hidden='true'
2886                        focusable='false'
2887                    >
2888                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
2889                    </svg>
2890                </button>
2891            </div>
2892        </div><img
2893              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666"
2894              class="main-product-image"
2895              src="//www.rockymountainoils.com/cdn/shop/files/eucalyptus-radiata-essential-oil-4oz-1.jpg?crop=center&height=300&v=1758272035&width=300"
2896              alt="Eucalyptus radiata Essential Oil - 4oz - Rocky Mountain Oils"
2897              width="300"
2898              height="300"
2899              loading="lazy"
2900            /></div>
2901
2902    <div class="product-content">
2903        <div class="product-title">
2904            <a href="/products/eucalyptus-radiata-essential-oil" class="product-title-link" aria-label="View Eucalyptus Radiata Essential Oil">
2905                <h2>Eucalyptus Radiata Essential Oil</h2>
2906            </a>
2907        </div><div>
2908                <div class="product-subtitle">
2909                    Crisp, menthol-like; aids in centering & clearing the mind.
2910                </div>
2911            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025560121666" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
2912            <div class="product-data-store" style="display:none;"
2913                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/eucalyptus-radiata-essential-oil-4oz-1.jpg?v=1758272035&width=300"
2914                 data-product-title="Eucalyptus Radiata Essential Oil"
2915                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666">
2916            </div>
2917
2918            
2918<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" type="application/json">
2919                [{"id":48687488991554,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"EUCRAD-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":44365286539586,"product_id":8025560121666,"position":1,"created_at":"2024-03-06T13:38:29-07:00","updated_at":"2025-09-19T02:53:55-06:00","alt":"Eucalyptus radiata Essential Oil - 4oz - Rocky Mountain Oils","width":741,"height":741,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/eucalyptus-radiata-essential-oil-4oz-1.jpg?v=1758272035","variant_ids":[48687488991554]},"available":true,"name":"Eucalyptus Radiata Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":3995,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183213","featured_media":{"alt":"Eucalyptus radiata Essential Oil - 4oz - Rocky Mountain Oils","id":36844192629058,"position":1,"preview_image":{"aspect_ratio":1.0,"height":741,"width":741,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/eucalyptus-radiata-essential-oil-4oz-1.jpg?v=1758272035"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":2797}],"price":2797,"compare_at_price":3995,"per_delivery_price":2797,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3396},{"position":2,"price":3196}],"price":3396,"compare_at_price":3995,"per_delivery_price":3396,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3596},{"position":2,"price":3396}],"price":3596,"compare_at_price":3995,"per_delivery_price":3596,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3795},{"position":2,"price":3596}],"price":3795,"compare_at_price":3995,"per_delivery_price":3795,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3596},{"position":2,"price":3396}],"price":3596,"compare_at_price":3995,"per_delivery_price":3596,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3795},{"position":2,"price":3596}],"price":3795,"compare_at_price":3995,"per_delivery_price":3795,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3396},{"position":2,"price":3196}],"price":3396,"compare_at_price":3995,"per_delivery_price":3396,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3596},{"position":2,"price":3396}],"price":3596,"compare_at_price":3995,"per_delivery_price":3596,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3795},{"position":2,"price":3596}],"price":3795,"compare_at_price":3995,"per_delivery_price":3795,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44111479865666,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"EUCRAD-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":44126614389058,"product_id":8025560121666,"position":4,"created_at":"2024-02-14T14:27:18-07:00","updated_at":"2025-09-19T02:53:55-06:00","alt":"Eucalyptus Radiata Essential Oil - 15ml - Rocky Mountain Oils","width":607,"height":607,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/eucalyptus-radiata-essential-oil-15ml-1.jpg?v=1758272035","variant_ids":[44111479865666]},"available":true,"name":"Eucalyptus Radiata Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":1495,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175638","featured_media":{"alt":"Eucalyptus Radiata Essential Oil - 15ml - Rocky Mountain Oils","id":36602443432258,"position":4,"preview_image":{"aspect_ratio":1.0,"height":607,"width":607,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/eucalyptus-radiata-essential-oil-15ml-1.jpg?v=1758272035"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1047}],"price":1047,"compare_at_price":1495,"per_delivery_price":1047,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1271},{"position":2,"price":1196}],"price":1271,"compare_at_price":1495,"per_delivery_price":1271,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1346},{"position":2,"price":1271}],"price":1346,"compare_at_price":1495,"per_delivery_price":1346,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1420},{"position":2,"price":1346}],"price":1420,"compare_at_price":1495,"per_delivery_price":1420,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1346},{"position":2,"price":1271}],"price":1346,"compare_at_price":1495,"per_delivery_price":1346,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1420},{"position":2,"price":1346}],"price":1420,"compare_at_price":1495,"per_delivery_price":1420,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1271},{"position":2,"price":1196}],"price":1271,"compare_at_price":1495,"per_delivery_price":1271,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1346},{"position":2,"price":1271}],"price":1346,"compare_at_price":1495,"per_delivery_price":1346,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1420},{"position":2,"price":1346}],"price":1420,"compare_at_price":1495,"per_delivery_price":1420,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
2920            </script>
2920<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025560121666" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
2921                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" aria-live="polite" aria-atomic="true">
2922                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" style="display: none;"></span>
2923                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666">$39.95</span>
2924
2925                        
2926                    </div>
2927
2928                    
2929                        <div class="product-option">
2930                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666-0" class="visually-hidden">
2931                                Select Size for Eucalyptus Radiata Essential Oil
2932                            </label>
2933                            <select
2934                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666-0"
2935                                class="variant-select"
2936                                name="options[Size]"
2937                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666"
2938                                data-index="option0"
2939                            ><option
2940                                        value="4oz"
2941                                        selected="selected"
2942                                    >
2943                                        4oz
2944                                    </option><option
2945                                        value="15ml"
2946                                        
2947                                    >
2948                                        15ml
2949                                    </option></select>
2950                        </div>
2951                    
2952                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" class="visually-hidden">
2953                Choose variant for Eucalyptus Radiata Essential Oil
2954            </label>
2955            <select
2956                name="id"
2957                data-productid="8025560121666"
2958                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666"
2959                class="product-variants-select no-js-only"
2960            ><option
2961                        value="48687488991554"
2962                         selected="selected" 
2963                        
2964                    >
2965                        4oz - $39.95 
2966                    </option><option
2967                        value="44111479865666"
2968                        
2969                        
2970                    >
2971                        15ml - $14.95 
2972                    </option></select>
2973
2974            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666">
2975                <input type="hidden" name="quantity" value="1">
2976                
2977
2978                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" aria-live="assertive"></div>
2979
2980                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666" class="visually-hidden">Adds item to your shopping cart</span>
2981
2982                <button
2983                    class="addtocart-btn add-to-cart"
2984                    type="submit"
2985                    name="add"
2986                    aria-label="Add to Cart - Add Eucalyptus Radiata Essential Oil to cart"
2987                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666"
2988                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666"
2989                    
2990                >
2991                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025560121666">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
2992                </button>
2993            </div><input type="hidden" name="product-id" value="8025560121666" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
2993<script type="application/ld+json">
2994    {
2995      "@context": "http://schema.org/",
2996      "@type": "Product",
2997      "name": "Eucalyptus Radiata Essential Oil",
2998      "url": "https:\/\/www.rockymountainoils.com\/products\/eucalyptus-radiata-essential-oil","image": [
2999          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/eucalyptus-radiata-essential-oil-4oz-1.jpg?v=1758272035\u0026width=741"
3000        ],
3001      "description": "Eucalyptus radiata Essential Oil, also known as Narrow-Leaved Peppermint, is a versatile oil with a crisp, peppermint-like fragrance. Its aroma may help create a sense of mental focus and clarity. When diffused, this powerful oil can contribute to a clean, fresh atmosphere in your space.\n\n","sku": "EUCRAD-4OZ",
3002      "brand": {
3003        "@type": "Brand",
3004        "name": "Rocky Mountain Oils"
3005      },
3006      "offers": {
3007          "@type": "AggregateOffer",
3008          "availability": "http://schema.org/InStock",
3009          "priceCurrency": "USD",
3010          "highPrice": 39.95,
3011          "lowPrice": 14.95,
3012          "offerCount": 2,
3013          "offers": [{
3014              "@type" : "Offer","sku": "EUCRAD-4OZ","gtin12": "053176183213","availability" : "http://schema.org/InStock",
3015              "price" : 39.95,
3016              "priceCurrency" : "USD",
3017              "priceValidUntil": "2026-12-31",
3018              "url" : "https:\/\/www.rockymountainoils.com\/products\/eucalyptus-radiata-essential-oil?variant=48687488991554"
3019            },
3020{
3021              "@type" : "Offer","sku": "EUCRAD-S15","gtin12": "053176175638","availability" : "http://schema.org/InStock",
3022              "price" : 14.95,
3023              "priceCurrency" : "USD",
3024              "priceValidUntil": "2026-12-31",
3025              "url" : "https:\/\/www.rockymountainoils.com\/products\/eucalyptus-radiata-essential-oil?variant=44111479865666"
3026            }
3027]
3028      }
3029    }
3030    </script>
3030</div>
3031
3032<style>
3033/* Ensure visually-hidden utility exists even if theme lacks it */
3034.visually-hidden {
3035    position: absolute !important;
3036    width: 1px !important;
3037    height: 1px !important;
3038    padding: 0 !important;
3039    margin: -1px !important;
3040    overflow: hidden !important;
3041    clip: rect(0, 0, 0, 0) !important;
3042    white-space: nowrap !important;
3043    border: 0 !important;
3044}
3045
3046/* Ensure the main product image is tappable on iOS */
3047.main-product-image {
3048    cursor: pointer;
3049    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
3050    touch-action: manipulation;
3051}
3052
3053/* ULTIMATE FIX - Override anything that hides select text */
3054.product-variants-select,
3055.product-variants-select.no-js-only,
3056select.product-variants-select,
3057select[id*="ProductSelect-"] {
3058    color: #1a1a1a !important;
3059    opacity: 1 !important;
3060    background-color: #ffffff !important;
3061    -webkit-text-fill-color: #1a1a1a !important;
3062}
3063
3064.product-variants-select option,
3065select[id*="ProductSelect-"] option {
3066    color: #1a1a1a !important;
3067    background-color: #ffffff !important;
3068    -webkit-text-fill-color: #1a1a1a !important;
3069}
3070
3071.product-variants-select option:checked,
3072select[id*="ProductSelect-"] option:checked {
3073    color: #1a1a1a !important;
3074    background-color: #e8f0fe !important;
3075}
3076
3077.product-variants-select option:disabled,
3078select[id*="ProductSelect-"] option:disabled {
3079    color: #6c6c6c !important;
3080    background-color: #f5f5f5 !important;
3081    -webkit-text-fill-color: #6c6c6c !important;
3082    opacity: 1 !important;
3083}
3084
3085.product-variants-select:focus,
3086select[id*="ProductSelect-"]:focus {
3087    color: #1a1a1a !important;
3088    outline: 3px solid #000000ff !important;
3089}
3090</style>
3091                      </div><div class="item">
3092                    	
3092<script>
3093(function() {
3094    class ProductCardVariantSelector {
3095        constructor(container) {
3096            this.container = container;
3097            if (!this.container) return;
3098
3099            this.form = this.container.querySelector('.product-form');
3100            this.variantSelectors = this.container.querySelectorAll('.variant-select');
3101            this.masterSelect = this.container.querySelector('.product-variants-select');
3102            this.productImage = this.container.querySelector('.main-product-image');
3103            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
3104            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
3105            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
3106            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
3107            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
3108            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
3109            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
3110            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
3111            this.saleTag = this.container.querySelector('.hc-sale-tag');
3112            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
3113
3114            if (!this.masterSelect || !this.variantsJsonScript) return;
3115
3116            try {
3117                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
3118            } catch (e) { return; }
3119
3120            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
3121            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
3122
3123            this.init();
3124        }
3125
3126        init() {
3127            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
3128            if (this.productImage) {
3129                let touchStartX = 0, touchStartY = 0, touchMoved = false;
3130                let lastTouchTime = 0;
3131
3132                this.productImage.style.cursor = 'pointer';
3133                this.productImage.setAttribute('role', 'button');
3134                this.productImage.setAttribute('tabindex', '0');
3135
3136                this.productImage.addEventListener('touchstart', (e) => {
3137                    const t = e.touches[0];
3138                    touchStartX = t.clientX;
3139                    touchStartY = t.clientY;
3140                    touchMoved = false;
3141                }, { passive: true });
3142
3143                this.productImage.addEventListener('touchmove', (e) => {
3144                    const t = e.touches[0];
3145                    if (Math.abs(t.clientX - touchStartX) > 10 ||
3146                        Math.abs(t.clientY - touchStartY) > 10) {
3147                        touchMoved = true;
3148                    }
3149                }, { passive: true });
3150
3151                this.productImage.addEventListener('touchend', (e) => {
3152                    if (touchMoved) return;
3153                    lastTouchTime = Date.now();
3154                    e.preventDefault();
3155                    this.onImageTap(e);
3156                }, { passive: false });
3157
3158                // Desktop / non-touch fallback (with double-fire protection after touchend)
3159                this.productImage.addEventListener('click', (e) => {
3160                    if (Date.now() - lastTouchTime < 500) return;
3161                    this.onImageTap(e);
3162                });
3163
3164                this.productImage.addEventListener('keydown', (e) => {
3165                    if (e.key === 'Enter' || e.key === ' ') {
3166                        e.preventDefault();
3167                        this.onImageTap(e);
3168                    }
3169                });
3170            }
3171
3172            // --- Variant select listeners ---
3173            if (this.variantSelectors.length > 0) {
3174                this.variantSelectors.forEach(select => {
3175                    select.addEventListener('change', this.onVariantChange.bind(this));
3176                });
3177                this.updateProductDetails(this.getCurrentVariant());
3178            }
3179        }
3180
3181        // ============================================================
3182        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
3183        // Currently: navigates to the product page.
3184        // ============================================================
3185        onImageTap(e) {
3186            const link = this.container.querySelector('.product-title-link');
3187            if (link && link.href && link.href !== '#') {
3188                window.location.href = link.href;
3189            }
3190        }
3191        // ============================================================
3192
3193        onVariantChange() {
3194            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
3195            const matchedVariant = this.findMatchingVariant(selectedOptions);
3196
3197            if (matchedVariant) {
3198                this.masterSelect.value = matchedVariant.id;
3199                this.updateProductDetails(matchedVariant);
3200                if (this.statusElement) this.statusElement.textContent = '';
3201            } else {
3202                if (this.statusElement) {
3203                    this.statusElement.textContent = 'No available variant matches your selection';
3204                }
3205                this.updateProductDetails(null);
3206            }
3207        }
3208
3209        findMatchingVariant(selectedOptions) {
3210            return this.productVariants.find(variant => {
3211                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
3212                return selectedOptions.every((val, i) => variant.options[i] === val);
3213            });
3214        }
3215
3216        getCurrentVariant() {
3217            if (!this.masterSelect) return null;
3218            const id = this.masterSelect.value;
3219            if (!id) return null;
3220            return this.productVariants.find(v => String(v.id) === String(id)) || null;
3221        }
3222
3223        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
3224        sizedImageUrl(src, width) {
3225            if (!src) return src;
3226            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
3227        }
3228
3229        updateProductDetails(variant) {
3230            this.container.setAttribute('aria-busy', 'true');
3231
3232            if (!variant) {
3233                if (this.addToCartButton) this.addToCartButton.disabled = true;
3234                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
3235                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
3236                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
3237                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
3238                if (this.saleTag) this.saleTag.style.display = 'none';
3239                this.container.setAttribute('aria-busy', 'false');
3240                return;
3241            }
3242
3243            // 1. Image
3244            if (this.productImage) {
3245                if (variant.featured_image && variant.featured_image.src) {
3246                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
3247                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
3248                    this.productImage.src = sized;
3249                    this.productImage.srcset = '';
3250                    this.productImage.alt = variant.featured_image.alt
3251                        ? variant.featured_image.alt
3252                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
3253                } else if (this.mainImageUrl) {
3254                    this.productImage.src = this.mainImageUrl;
3255                    this.productImage.srcset = '';
3256                    this.productImage.alt = this.productTitle;
3257                }
3258            }
3259
3260            // 2. Price
3261            const moneyFormat = "${{amount}}";
3262            const formatMoney = (cents, format) => {
3263                if (typeof cents === 'string') cents = cents.replace('.', '');
3264                let value = '';
3265                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
3266                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
3267
3268                function formatWithDelimiters(number, precision, thousands, decimal) {
3269                    precision = precision ?? 2;
3270                    thousands = thousands ?? ',';
3271                    decimal = decimal ?? '.';
3272                    if (isNaN(number) || number == null) return 0;
3273                    number = (number / 100.0).toFixed(precision);
3274                    const parts = number.split('.');
3275                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
3276                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
3277                    return dollars + centsPart;
3278                }
3279
3280                switch (formatString.match(placeholderRegex)?.[1]) {
3281                    case 'amount': value = formatWithDelimiters(cents, 2); break;
3282                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
3283                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
3284                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
3285                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
3286                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
3287                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
3288                    default: value = formatWithDelimiters(cents, 2);
3289                }
3290                try {
3291                    return formatString.replace(placeholderRegex, value);
3292                } catch (e) {
3293                    const fallback = (cents / 100.0).toFixed(2);
3294                    return formatString.includes('')
3295                        ? formatString.replace(placeholderRegex, fallback)
3296                        : fallback;
3297                }
3298            };
3299
3300            if (this.currentPriceElement) {
3301                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
3302            }
3303            if (this.comparePriceElement && this.priceWrapper) {
3304                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
3305                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
3306                    this.comparePriceElement.style.display = '';
3307                    this.priceWrapper.classList.add('sale');
3308                } else {
3309                    this.comparePriceElement.textContent = '';
3310                    this.comparePriceElement.style.display = 'none';
3311                    this.priceWrapper.classList.remove('sale');
3312                }
3313            }
3314
3315            // 3. Sale tag
3316            if (this.saleTag) {
3317                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
3318                if (isDiscounted && variant.available) {
3319                    this.saleTag.style.display = 'block';
3320                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
3321                    const span = this.saleTag.querySelector('span');
3322                    if (span) span.textContent = discount + '%';
3323                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
3324                    this.saleTag.setAttribute('role', 'status');
3325                } else {
3326                    this.saleTag.style.display = 'none';
3327                }
3328            }
3329
3330            // 4. Add to cart
3331            if (this.addToCartButton && this.addToCartText) {
3332                if (variant.available) {
3333                    this.addToCartButton.disabled = false;
3334                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
3335                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
3336                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
3337                } else {
3338                    this.addToCartButton.disabled = true;
3339                    this.addToCartText.textContent = 'Sold Out';
3340                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
3341                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
3342                }
3343            }
3344            if (this.notifyMeButton) {
3345                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
3346            }
3347
3348            this.container.setAttribute('aria-busy', 'false');
3349        }
3350    }
3351
3352    function initProductCards(root) {
3353        root = root || document;
3354        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
3355            if (cardContainer.dataset.variantSelectorInit === 'true') return;
3356            cardContainer.dataset.variantSelectorInit = 'true';
3357            new ProductCardVariantSelector(cardContainer);
3358        });
3359    }
3360
3361    if (document.readyState === 'loading') {
3362        document.addEventListener('DOMContentLoaded', () => initProductCards());
3363    } else {
3364        initProductCards();
3365    }
3366
3367    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
3368})();
3369</script>
3369<div class="product-card-wrapper" data-product-id="8025540657474" aria-busy="false">
3370
3371    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474"><!-- WISHLIST BUTTON -->
3372        <div class='xb-wishlist__btn-custom'>
3373            <div
3374                class='xb-wishlist__add'
3375                xb-product-id='8025540657474'
3376                xb-product-title='Immune Strength Essential Oil Blend'
3377                xb-product-variant='44111359082818'
3378                xb-is-in-stock='true'
3379                xb-product-handle='immune-strength-essential-oil-blends'
3380            >
3381                <button aria-label="Add Immune Strength Essential Oil Blend to wishlist" aria-pressed="false">
3382                    <svg
3383                        xmlns='http://www.w3.org/2000/svg'
3384                        width='20'
3385                        height='20'
3386                        viewBox='0 0 24 24'
3387                        fill='none'
3388                        stroke='#FF4A71'
3389                        stroke-width='2'
3390                        stroke-linecap='round'
3391                        stroke-linejoin='round'
3392                        aria-hidden='true'
3393                        focusable='false'
3394                    >
3395                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
3396                    </svg>
3397                </button>
3398            </div>
3399
3400            <div class="xb-wishlist__loading" xb-product-id="8025540657474">
3401                <span class="loading-spinner"></span>
3402            </div>
3403
3404            <div class='xb-wishlist__remove' xb-product-id='8025540657474' xb-is-in-stock='true'>
3405                <button aria-label="Remove Immune Strength Essential Oil Blend from wishlist" aria-pressed="true">
3406                    <svg
3407                        xmlns='http://www.w3.org/2000/svg'
3408                        width='20'
3409                        height='20'
3410                        viewBox='0 0 24 24'
3411                        fill='#FF4A71'
3412                        stroke='#FF4A71'
3413                        stroke-width='2'
3414                        stroke-linecap='round'
3415                        stroke-linejoin='round'
3416                        aria-hidden='true'
3417                        focusable='false'
3418                    >
3419                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
3420                    </svg>
3421                </button>
3422            </div>
3423        </div><img
3424              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474"
3425              class="main-product-image"
3426              src="//www.rockymountainoils.com/cdn/shop/files/immune-strength-essential-oil-blend-15ml-1.jpg?crop=center&height=300&v=1770737264&width=300"
3427              alt="Immune Strength Essential Oil Blend - 15ml - Rocky Mountain Oils"
3428              width="300"
3429              height="300"
3430              loading="lazy"
3431            /></div>
3432
3433    <div class="product-content">
3434        <div class="product-title">
3435            <a href="/products/immune-strength-essential-oil-blends" class="product-title-link" aria-label="View Immune Strength Essential Oil Blend">
3436                <h2>Immune Strength Essential Oil Blend</h2>
3437            </a>
3438        </div><div>
3439                <div class="product-subtitle">
3440                    Herbal-citrus aroma; natural immunity boost; antimicrobial.
3441                </div>
3442            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025540657474" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
3443            <div class="product-data-store" style="display:none;"
3444                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/immune-strength-essential-oil-blend-4oz-2.webp?v=1770737264&width=300"
3445                 data-product-title="Immune Strength Essential Oil Blend"
3446                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474">
3447            </div>
3448
3449            
3449<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" type="application/json">
3450                [{"id":44111359082818,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"IMMNEA-B15","requires_shipping":true,"taxable":true,"featured_image":{"id":44075374641474,"product_id":8025540657474,"position":2,"created_at":"2024-02-09T08:30:28-07:00","updated_at":"2026-02-10T08:27:44-07:00","alt":"Immune Strength Essential Oil Blend - 15ml - Rocky Mountain Oils","width":528,"height":528,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/immune-strength-essential-oil-blend-15ml-1.jpg?v=1770737264","variant_ids":[44111359082818]},"available":true,"name":"Immune Strength Essential Oil Blend - 15ml","public_title":"15ml","options":["15ml"],"price":2762,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176178011","featured_media":{"alt":"Immune Strength Essential Oil Blend - 15ml - Rocky Mountain Oils","id":36550385434946,"position":2,"preview_image":{"aspect_ratio":1.0,"height":528,"width":528,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/immune-strength-essential-oil-blend-15ml-1.jpg?v=1770737264"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1933}],"price":1933,"compare_at_price":2762,"per_delivery_price":1933,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2348},{"position":2,"price":2210}],"price":2348,"compare_at_price":2762,"per_delivery_price":2348,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2486},{"position":2,"price":2348}],"price":2486,"compare_at_price":2762,"per_delivery_price":2486,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2624},{"position":2,"price":2486}],"price":2624,"compare_at_price":2762,"per_delivery_price":2624,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2486},{"position":2,"price":2348}],"price":2486,"compare_at_price":2762,"per_delivery_price":2486,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2624},{"position":2,"price":2486}],"price":2624,"compare_at_price":2762,"per_delivery_price":2624,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2348},{"position":2,"price":2210}],"price":2348,"compare_at_price":2762,"per_delivery_price":2348,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2486},{"position":2,"price":2348}],"price":2486,"compare_at_price":2762,"per_delivery_price":2486,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2624},{"position":2,"price":2486}],"price":2624,"compare_at_price":2762,"per_delivery_price":2624,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44276022083906,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"IMMNEA-B5","requires_shipping":true,"taxable":true,"featured_image":{"id":60161056801135,"product_id":8025540657474,"position":3,"created_at":"2025-05-13T06:46:08-06:00","updated_at":"2026-02-01T00:03:51-07:00","alt":"Immune Strength Essential Oil Blend Neat, Rocky Mountain Oils","width":919,"height":919,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Immune_Strength_5ml.webp?v=1769929431","variant_ids":[44276022083906]},"available":false,"name":"Immune Strength Essential Oil Blend - 5ml","public_title":"5ml","options":["5ml"],"price":2045,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176178028","featured_media":{"alt":"Immune Strength Essential Oil Blend Neat, Rocky Mountain Oils","id":51869838770543,"position":3,"preview_image":{"aspect_ratio":1.0,"height":919,"width":919,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Immune_Strength_5ml.webp?v=1769929431"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1432}],"price":1432,"compare_at_price":2045,"per_delivery_price":1432,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1738},{"position":2,"price":1636}],"price":1738,"compare_at_price":2045,"per_delivery_price":1738,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1738},{"position":2,"price":1636}],"price":1738,"compare_at_price":2045,"per_delivery_price":1738,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}
3450,{"id":47559382892866,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"IMMNEA-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":46227694289218,"product_id":8025540657474,"position":1,"created_at":"2024-07-12T14:16:32-06:00","updated_at":"2026-02-10T08:27:44-07:00","alt":"Immune Strength Essential Oil Blend - 4oz - Rocky Mountain Oils","width":839,"height":839,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/immune-strength-essential-oil-blend-4oz-2.webp?v=1770737264","variant_ids":[47559382892866]},"available":true,"name":"Immune Strength Essential Oil Blend - 4oz","public_title":"4oz","options":["4oz"],"price":9995,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183701","featured_media":{"alt":"Immune Strength Essential Oil Blend - 4oz - Rocky Mountain Oils","id":38713479921986,"position":1,"preview_image":{"aspect_ratio":1.0,"height":839,"width":839,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/immune-strength-essential-oil-blend-4oz-2.webp?v=1770737264"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":6997}],"price":6997,"compare_at_price":9995,"per_delivery_price":6997,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8496},{"position":2,"price":7996}],"price":8496,"compare_at_price":9995,"per_delivery_price":8496,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8496},{"position":2,"price":7996}],"price":8496,"compare_at_price":9995,"per_delivery_price":8496,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
3451            </script>
3451<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025540657474" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
3452                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" aria-live="polite" aria-atomic="true">
3453                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" style="display: none;"></span>
3454                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474">$27.62</span>
3455
3456                        
3457                    </div>
3458
3459                    
3460                        <div class="product-option">
3461                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474-0" class="visually-hidden">
3462                                Select Size for Immune Strength Essential Oil Blend
3463                            </label>
3464                            <select
3465                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474-0"
3466                                class="variant-select"
3467                                name="options[Size]"
3468                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474"
3469                                data-index="option0"
3470                            ><option
3471                                        value="15ml"
3472                                        selected="selected"
3473                                    >
3474                                        15ml
3475                                    </option><option
3476                                        value="5ml"
3477                                        
3478                                    >
3479                                        5ml
3480                                    </option><option
3481                                        value="4oz"
3482                                        
3483                                    >
3484                                        4oz
3485                                    </option></select>
3486                        </div>
3487                    
3488                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" class="visually-hidden">
3489                Choose variant for Immune Strength Essential Oil Blend
3490            </label>
3491            <select
3492                name="id"
3493                data-productid="8025540657474"
3494                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474"
3495                class="product-variants-select no-js-only"
3496            ><option
3497                        value="44111359082818"
3498                         selected="selected" 
3499                        
3500                    >
3501                        15ml - $27.62 
3502                    </option><option
3503                        value="44276022083906"
3504                        
3505                        disabled="disabled"
3506                    >
3507                        5ml - $20.45 - Sold Out
3508                    </option><option
3509                        value="47559382892866"
3510                        
3511                        
3512                    >
3513                        4oz - $99.95 
3514                    </option></select>
3515
3516            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474">
3517                <input type="hidden" name="quantity" value="1">
3518                
3519
3520                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" aria-live="assertive"></div>
3521
3522                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474" class="visually-hidden">Adds item to your shopping cart</span>
3523
3524                <button
3525                    class="addtocart-btn add-to-cart"
3526                    type="submit"
3527                    name="add"
3528                    aria-label="Add to Cart - Add Immune Strength Essential Oil Blend to cart"
3529                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474"
3530                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474"
3531                    
3532                >
3533                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540657474">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
3534                </button>
3535            </div><input type="hidden" name="product-id" value="8025540657474" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
3535<script type="application/ld+json">
3536    {
3537      "@context": "http://schema.org/",
3538      "@type": "Product",
3539      "name": "Immune Strength Essential Oil Blend",
3540      "url": "https:\/\/www.rockymountainoils.com\/products\/immune-strength-essential-oil-blends","image": [
3541          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/immune-strength-essential-oil-blend-15ml-1.jpg?v=1770737264\u0026width=528"
3542        ],
3543      "description": "Boost your immune system naturally with our powerful Immune Strength Essential Oil Blend. This carefully crafted combination of 11 essential oils, including Clove Bud, Cinnamon Bark, Lemon, and Oregano, supports immune health and promotes overall well-being.\nUse Immune Strength to cleanse surfaces, purify air, and create a sense of calm. Its antimicrobial and antifungal properties make it ideal for homemade cleaning products or diluted topical use. Diffuse during cold and flu season to help ward off germs naturally.","sku": "IMMNEA-B15",
3544      "brand": {
3545        "@type": "Brand",
3546        "name": "Rocky Mountain Oils"
3547      },
3548      "offers": {
3549          "@type": "AggregateOffer",
3550          "availability": "http://schema.org/InStock",
3551          "priceCurrency": "USD",
3552          "highPrice": 99.95,
3553          "lowPrice": 20.45,
3554          "offerCount": 3,
3555          "offers": [{
3556              "@type" : "Offer","sku": "IMMNEA-B15","gtin12": "053176178011","availability" : "http://schema.org/InStock",
3557              "price" : 27.62,
3558              "priceCurrency" : "USD",
3559              "priceValidUntil": "2026-12-31",
3560              "url" : "https:\/\/www.rockymountainoils.com\/products\/immune-strength-essential-oil-blends?variant=44111359082818"
3561            },
3562{
3563              "@type" : "Offer","sku": "IMMNEA-B5","gtin12": "053176178028","availability" : "http://schema.org/OutOfStock",
3564              "price" : 20.45,
3565              "priceCurrency" : "USD",
3566              "priceValidUntil": "2026-12-31",
3567              "url" : "https:\/\/www.rockymountainoils.com\/products\/immune-strength-essential-oil-blends?variant=44276022083906"
3568            },
3569{
3570              "@type" : "Offer","sku": "IMMNEA-4OZ","gtin12": "053176183701","availability" : "http://schema.org/InStock",
3571              "price" : 99.95,
3572              "priceCurrency" : "USD",
3573              "priceValidUntil": "2026-12-31",
3574              "url" : "https:\/\/www.rockymountainoils.com\/products\/immune-strength-essential-oil-blends?variant=47559382892866"
3575            }
3576]
3577      }
3578    }
3579    </script>
3579</div>
3580
3581<style>
3582/* Ensure visually-hidden utility exists even if theme lacks it */
3583.visually-hidden {
3584    position: absolute !important;
3585    width: 1px !important;
3586    height: 1px !important;
3587    padding: 0 !important;
3588    margin: -1px !important;
3589    overflow: hidden !important;
3590    clip: rect(0, 0, 0, 0) !important;
3591    white-space: nowrap !important;
3592    border: 0 !important;
3593}
3594
3595/* Ensure the main product image is tappable on iOS */
3596.main-product-image {
3597    cursor: pointer;
3598    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
3599    touch-action: manipulation;
3600}
3601
3602/* ULTIMATE FIX - Override anything that hides select text */
3603.product-variants-select,
3604.product-variants-select.no-js-only,
3605select.product-variants-select,
3606select[id*="ProductSelect-"] {
3607    color: #1a1a1a !important;
3608    opacity: 1 !important;
3609    background-color: #ffffff !important;
3610    -webkit-text-fill-color: #1a1a1a !important;
3611}
3612
3613.product-variants-select option,
3614select[id*="ProductSelect-"] option {
3615    color: #1a1a1a !important;
3616    background-color: #ffffff !important;
3617    -webkit-text-fill-color: #1a1a1a !important;
3618}
3619
3620.product-variants-select option:checked,
3621select[id*="ProductSelect-"] option:checked {
3622    color: #1a1a1a !important;
3623    background-color: #e8f0fe !important;
3624}
3625
3626.product-variants-select option:disabled,
3627select[id*="ProductSelect-"] option:disabled {
3628    color: #6c6c6c !important;
3629    background-color: #f5f5f5 !important;
3630    -webkit-text-fill-color: #6c6c6c !important;
3631    opacity: 1 !important;
3632}
3633
3634.product-variants-select:focus,
3635select[id*="ProductSelect-"]:focus {
3636    color: #1a1a1a !important;
3637    outline: 3px solid #000000ff !important;
3638}
3639</style>
3640                      </div><div class="item">
3641                    	
3641<script>
3642(function() {
3643    class ProductCardVariantSelector {
3644        constructor(container) {
3645            this.container = container;
3646            if (!this.container) return;
3647
3648            this.form = this.container.querySelector('.product-form');
3649            this.variantSelectors = this.container.querySelectorAll('.variant-select');
3650            this.masterSelect = this.container.querySelector('.product-variants-select');
3651            this.productImage = this.container.querySelector('.main-product-image');
3652            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
3653            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
3654            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
3655            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
3656            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
3657            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
3658            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
3659            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
3660            this.saleTag = this.container.querySelector('.hc-sale-tag');
3661            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
3662
3663            if (!this.masterSelect || !this.variantsJsonScript) return;
3664
3665            try {
3666                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
3667            } catch (e) { return; }
3668
3669            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
3670            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
3671
3672            this.init();
3673        }
3674
3675        init() {
3676            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
3677            if (this.productImage) {
3678                let touchStartX = 0, touchStartY = 0, touchMoved = false;
3679                let lastTouchTime = 0;
3680
3681                this.productImage.style.cursor = 'pointer';
3682                this.productImage.setAttribute('role', 'button');
3683                this.productImage.setAttribute('tabindex', '0');
3684
3685                this.productImage.addEventListener('touchstart', (e) => {
3686                    const t = e.touches[0];
3687                    touchStartX = t.clientX;
3688                    touchStartY = t.clientY;
3689                    touchMoved = false;
3690                }, { passive: true });
3691
3692                this.productImage.addEventListener('touchmove', (e) => {
3693                    const t = e.touches[0];
3694                    if (Math.abs(t.clientX - touchStartX) > 10 ||
3695                        Math.abs(t.clientY - touchStartY) > 10) {
3696                        touchMoved = true;
3697                    }
3698                }, { passive: true });
3699
3700                this.productImage.addEventListener('touchend', (e) => {
3701                    if (touchMoved) return;
3702                    lastTouchTime = Date.now();
3703                    e.preventDefault();
3704                    this.onImageTap(e);
3705                }, { passive: false });
3706
3707                // Desktop / non-touch fallback (with double-fire protection after touchend)
3708                this.productImage.addEventListener('click', (e) => {
3709                    if (Date.now() - lastTouchTime < 500) return;
3710                    this.onImageTap(e);
3711                });
3712
3713                this.productImage.addEventListener('keydown', (e) => {
3714                    if (e.key === 'Enter' || e.key === ' ') {
3715                        e.preventDefault();
3716                        this.onImageTap(e);
3717                    }
3718                });
3719            }
3720
3721            // --- Variant select listeners ---
3722            if (this.variantSelectors.length > 0) {
3723                this.variantSelectors.forEach(select => {
3724                    select.addEventListener('change', this.onVariantChange.bind(this));
3725                });
3726                this.updateProductDetails(this.getCurrentVariant());
3727            }
3728        }
3729
3730        // ============================================================
3731        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
3732        // Currently: navigates to the product page.
3733        // ============================================================
3734        onImageTap(e) {
3735            const link = this.container.querySelector('.product-title-link');
3736            if (link && link.href && link.href !== '#') {
3737                window.location.href = link.href;
3738            }
3739        }
3740        // ============================================================
3741
3742        onVariantChange() {
3743            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
3744            const matchedVariant = this.findMatchingVariant(selectedOptions);
3745
3746            if (matchedVariant) {
3747                this.masterSelect.value = matchedVariant.id;
3748                this.updateProductDetails(matchedVariant);
3749                if (this.statusElement) this.statusElement.textContent = '';
3750            } else {
3751                if (this.statusElement) {
3752                    this.statusElement.textContent = 'No available variant matches your selection';
3753                }
3754                this.updateProductDetails(null);
3755            }
3756        }
3757
3758        findMatchingVariant(selectedOptions) {
3759            return this.productVariants.find(variant => {
3760                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
3761                return selectedOptions.every((val, i) => variant.options[i] === val);
3762            });
3763        }
3764
3765        getCurrentVariant() {
3766            if (!this.masterSelect) return null;
3767            const id = this.masterSelect.value;
3768            if (!id) return null;
3769            return this.productVariants.find(v => String(v.id) === String(id)) || null;
3770        }
3771
3772        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
3773        sizedImageUrl(src, width) {
3774            if (!src) return src;
3775            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
3776        }
3777
3778        updateProductDetails(variant) {
3779            this.container.setAttribute('aria-busy', 'true');
3780
3781            if (!variant) {
3782                if (this.addToCartButton) this.addToCartButton.disabled = true;
3783                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
3784                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
3785                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
3786                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
3787                if (this.saleTag) this.saleTag.style.display = 'none';
3788                this.container.setAttribute('aria-busy', 'false');
3789                return;
3790            }
3791
3792            // 1. Image
3793            if (this.productImage) {
3794                if (variant.featured_image && variant.featured_image.src) {
3795                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
3796                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
3797                    this.productImage.src = sized;
3798                    this.productImage.srcset = '';
3799                    this.productImage.alt = variant.featured_image.alt
3800                        ? variant.featured_image.alt
3801                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
3802                } else if (this.mainImageUrl) {
3803                    this.productImage.src = this.mainImageUrl;
3804                    this.productImage.srcset = '';
3805                    this.productImage.alt = this.productTitle;
3806                }
3807            }
3808
3809            // 2. Price
3810            const moneyFormat = "${{amount}}";
3811            const formatMoney = (cents, format) => {
3812                if (typeof cents === 'string') cents = cents.replace('.', '');
3813                let value = '';
3814                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
3815                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
3816
3817                function formatWithDelimiters(number, precision, thousands, decimal) {
3818                    precision = precision ?? 2;
3819                    thousands = thousands ?? ',';
3820                    decimal = decimal ?? '.';
3821                    if (isNaN(number) || number == null) return 0;
3822                    number = (number / 100.0).toFixed(precision);
3823                    const parts = number.split('.');
3824                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
3825                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
3826                    return dollars + centsPart;
3827                }
3828
3829                switch (formatString.match(placeholderRegex)?.[1]) {
3830                    case 'amount': value = formatWithDelimiters(cents, 2); break;
3831                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
3832                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
3833                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
3834                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
3835                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
3836                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
3837                    default: value = formatWithDelimiters(cents, 2);
3838                }
3839                try {
3840                    return formatString.replace(placeholderRegex, value);
3841                } catch (e) {
3842                    const fallback = (cents / 100.0).toFixed(2);
3843                    return formatString.includes('')
3844                        ? formatString.replace(placeholderRegex, fallback)
3845                        : fallback;
3846                }
3847            };
3848
3849            if (this.currentPriceElement) {
3850                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
3851            }
3852            if (this.comparePriceElement && this.priceWrapper) {
3853                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
3854                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
3855                    this.comparePriceElement.style.display = '';
3856                    this.priceWrapper.classList.add('sale');
3857                } else {
3858                    this.comparePriceElement.textContent = '';
3859                    this.comparePriceElement.style.display = 'none';
3860                    this.priceWrapper.classList.remove('sale');
3861                }
3862            }
3863
3864            // 3. Sale tag
3865            if (this.saleTag) {
3866                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
3867                if (isDiscounted && variant.available) {
3868                    this.saleTag.style.display = 'block';
3869                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
3870                    const span = this.saleTag.querySelector('span');
3871                    if (span) span.textContent = discount + '%';
3872                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
3873                    this.saleTag.setAttribute('role', 'status');
3874                } else {
3875                    this.saleTag.style.display = 'none';
3876                }
3877            }
3878
3879            // 4. Add to cart
3880            if (this.addToCartButton && this.addToCartText) {
3881                if (variant.available) {
3882                    this.addToCartButton.disabled = false;
3883                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
3884                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
3885                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
3886                } else {
3887                    this.addToCartButton.disabled = true;
3888                    this.addToCartText.textContent = 'Sold Out';
3889                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
3890                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
3891                }
3892            }
3893            if (this.notifyMeButton) {
3894                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
3895            }
3896
3897            this.container.setAttribute('aria-busy', 'false');
3898        }
3899    }
3900
3901    function initProductCards(root) {
3902        root = root || document;
3903        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
3904            if (cardContainer.dataset.variantSelectorInit === 'true') return;
3905            cardContainer.dataset.variantSelectorInit = 'true';
3906            new ProductCardVariantSelector(cardContainer);
3907        });
3908    }
3909
3910    if (document.readyState === 'loading') {
3911        document.addEventListener('DOMContentLoaded', () => initProductCards());
3912    } else {
3913        initProductCards();
3914    }
3915
3916    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
3917})();
3918</script>
3918<div class="product-card-wrapper" data-product-id="8025540854082" aria-busy="false">
3919
3920    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082"><!-- WISHLIST BUTTON -->
3921        <div class='xb-wishlist__btn-custom'>
3922            <div
3923                class='xb-wishlist__add'
3924                xb-product-id='8025540854082'
3925                xb-product-title='Lavender Essential Oil'
3926                xb-product-variant='44111360459074'
3927                xb-is-in-stock='true'
3928                xb-product-handle='lavender-essential-oil'
3929            >
3930                <button aria-label="Add Lavender Essential Oil to wishlist" aria-pressed="false">
3931                    <svg
3932                        xmlns='http://www.w3.org/2000/svg'
3933                        width='20'
3934                        height='20'
3935                        viewBox='0 0 24 24'
3936                        fill='none'
3937                        stroke='#FF4A71'
3938                        stroke-width='2'
3939                        stroke-linecap='round'
3940                        stroke-linejoin='round'
3941                        aria-hidden='true'
3942                        focusable='false'
3943                    >
3944                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
3945                    </svg>
3946                </button>
3947            </div>
3948
3949            <div class="xb-wishlist__loading" xb-product-id="8025540854082">
3950                <span class="loading-spinner"></span>
3951            </div>
3952
3953            <div class='xb-wishlist__remove' xb-product-id='8025540854082' xb-is-in-stock='true'>
3954                <button aria-label="Remove Lavender Essential Oil from wishlist" aria-pressed="true">
3955                    <svg
3956                        xmlns='http://www.w3.org/2000/svg'
3957                        width='20'
3958                        height='20'
3959                        viewBox='0 0 24 24'
3960                        fill='#FF4A71'
3961                        stroke='#FF4A71'
3962                        stroke-width='2'
3963                        stroke-linecap='round'
3964                        stroke-linejoin='round'
3965                        aria-hidden='true'
3966                        focusable='false'
3967                    >
3968                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
3969                    </svg>
3970                </button>
3971            </div>
3972        </div><img
3973              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082"
3974              class="main-product-image"
3975              src="//www.rockymountainoils.com/cdn/shop/files/lavender-essential-oil-15ml-1.jpg?crop=center&height=300&v=1765782112&width=300"
3976              alt="Lavender Essential Oil - 15ml - Rocky Mountain Oils"
3977              width="300"
3978              height="300"
3979              loading="lazy"
3980            /></div>
3981
3982    <div class="product-content">
3983        <div class="product-title">
3984            <a href="/products/lavender-essential-oil" class="product-title-link" aria-label="View Lavender Essential Oil">
3985                <h2>Lavender Essential Oil</h2>
3986            </a>
3987        </div><div>
3988                <div class="product-subtitle">
3989                    Gentle floral aroma; calming, enhances sleep & great for the skin.
3990                </div>
3991            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025540854082" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
3992            <div class="product-data-store" style="display:none;"
3993                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/lavender-essential-oil-15ml-1.jpg?v=1765782112&width=300"
3994                 data-product-title="Lavender Essential Oil"
3995                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082">
3996            </div>
3997
3998            
3998<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" type="application/json">
3999                [{"id":44111360459074,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"LAVGRE-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":43452351381826,"product_id":8025540854082,"position":1,"created_at":"2023-11-28T08:20:25-07:00","updated_at":"2025-12-15T00:01:52-07:00","alt":"Lavender Essential Oil - 15ml - Rocky Mountain Oils","width":638,"height":638,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lavender-essential-oil-15ml-1.jpg?v=1765782112","variant_ids":[44111360459074]},"available":true,"name":"Lavender Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":2095,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176181462","featured_media":{"alt":"Lavender Essential Oil - 15ml - Rocky Mountain Oils","id":35909114036546,"position":1,"preview_image":{"aspect_ratio":1.0,"height":638,"width":638,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lavender-essential-oil-15ml-1.jpg?v=1765782112"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1467}],"price":1467,"compare_at_price":2095,"per_delivery_price":1467,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1781},{"position":2,"price":1676}],"price":1781,"compare_at_price":2095,"per_delivery_price":1781,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1886},{"position":2,"price":1781}],"price":1886,"compare_at_price":2095,"per_delivery_price":1886,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1990},{"position":2,"price":1886}],"price":1990,"compare_at_price":2095,"per_delivery_price":1990,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1886},{"position":2,"price":1781}],"price":1886,"compare_at_price":2095,"per_delivery_price":1886,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1990},{"position":2,"price":1886}],"price":1990,"compare_at_price":2095,"per_delivery_price":1990,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1781},{"position":2,"price":1676}],"price":1781,"compare_at_price":2095,"per_delivery_price":1781,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1886},{"position":2,"price":1781}],"price":1886,"compare_at_price":2095,"per_delivery_price":1886,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1990},{"position":2,"price":1886}],"price":1990,"compare_at_price":2095,"per_delivery_price":1990,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48687729115458,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"LAVGRE-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":60161056735599,"product_id":8025540854082,"position":3,"created_at":"2025-05-13T06:46:08-06:00","updated_at":"2025-12-15T00:01:52-07:00","alt":"Lavender Essential Oil, Rocky Mountain Oils","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lavender_5ml.webp?v=1765782112","variant_ids":[48687729115458]},"available":true,"name":"Lavender Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":1195,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176181776","featured_media":{"alt":"Lavender Essential Oil, Rocky Mountain Oils","id":51869838705007,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lavender_5ml.webp?v=1765782112"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":837}],"price":837,"compare_at_price":1195,"per_delivery_price":837,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1016},{"position":2,"price":956}],"price":1016,"compare_at_price":1195,"per_delivery_price":1016,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1076},{"position":2,"price":1016}],"price":1076,"compare_at_price":1195,"per_delivery_price":1076,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1135},{"position":2,"price":1076}],"price":1135,"compare_at_price":1195,"per_delivery_price":1135,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1076},{"position":2,"price":1016}],"price":1076,"compare_at_price":1195,"per_delivery_price":1076,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1135},{"position":2,"price":1076}],"price":1135,"compare_at_price":1195,"per_delivery_price":1135,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1016},{"position":2,"price":956}],"price":1016,"compare_at_price":1195,"per_delivery_price":1016,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1076},{"position":2,"price":1016}],"price":1076,"compare_at_price":1195,"per_delivery_price":1076,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1135},{"position":2,"price":1076}],"price":1135,"compare_at_price":1195,"per_delivery_price":1135,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48687729082690,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"LAVGRE-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":44365299745090,"product_id":8025540854082,"position":6,"created_at":"2024-03-06T13:41:17-07:00","updated_at":"2025-12-14T00:38:12-07:00","alt":"Lavender Essential Oil - 4oz - Rocky Mountain Oils","width":723,"height":723,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lavender-essential-oil-4oz-3.jpg?v=1765697892","variant_ids":[48687729
3999082690]},"available":true,"name":"Lavender Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":4995,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183145","featured_media":{"alt":"Lavender Essential Oil - 4oz - Rocky Mountain Oils","id":36844206522690,"position":6,"preview_image":{"aspect_ratio":1.0,"height":723,"width":723,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lavender-essential-oil-4oz-3.jpg?v=1765697892"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":3497}],"price":3497,"compare_at_price":4995,"per_delivery_price":3497,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4246},{"position":2,"price":3996}],"price":4246,"compare_at_price":4995,"per_delivery_price":4246,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4246},{"position":2,"price":3996}],"price":4246,"compare_at_price":4995,"per_delivery_price":4246,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
4000            </script>
4000<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025540854082" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
4001                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" aria-live="polite" aria-atomic="true">
4002                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" style="display: none;"></span>
4003                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082">$20.95</span>
4004
4005                        
4006                    </div>
4007
4008                    
4009                        <div class="product-option">
4010                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082-0" class="visually-hidden">
4011                                Select Size for Lavender Essential Oil
4012                            </label>
4013                            <select
4014                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082-0"
4015                                class="variant-select"
4016                                name="options[Size]"
4017                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082"
4018                                data-index="option0"
4019                            ><option
4020                                        value="15ml"
4021                                        selected="selected"
4022                                    >
4023                                        15ml
4024                                    </option><option
4025                                        value="5ml"
4026                                        
4027                                    >
4028                                        5ml
4029                                    </option><option
4030                                        value="4oz"
4031                                        
4032                                    >
4033                                        4oz
4034                                    </option></select>
4035                        </div>
4036                    
4037                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" class="visually-hidden">
4038                Choose variant for Lavender Essential Oil
4039            </label>
4040            <select
4041                name="id"
4042                data-productid="8025540854082"
4043                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082"
4044                class="product-variants-select no-js-only"
4045            ><option
4046                        value="44111360459074"
4047                         selected="selected" 
4048                        
4049                    >
4050                        15ml - $20.95 
4051                    </option><option
4052                        value="48687729115458"
4053                        
4054                        
4055                    >
4056                        5ml - $11.95 
4057                    </option><option
4058                        value="48687729082690"
4059                        
4060                        
4061                    >
4062                        4oz - $49.95 
4063                    </option></select>
4064
4065            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082">
4066                <input type="hidden" name="quantity" value="1">
4067                
4068
4069                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" aria-live="assertive"></div>
4070
4071                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082" class="visually-hidden">Adds item to your shopping cart</span>
4072
4073                <button
4074                    class="addtocart-btn add-to-cart"
4075                    type="submit"
4076                    name="add"
4077                    aria-label="Add to Cart - Add Lavender Essential Oil to cart"
4078                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082"
4079                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082"
4080                    
4081                >
4082                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025540854082">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
4083                </button>
4084            </div><input type="hidden" name="product-id" value="8025540854082" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
4084<script type="application/ld+json">
4085    {
4086      "@context": "http://schema.org/",
4087      "@type": "Product",
4088      "name": "Lavender Essential Oil",
4089      "url": "https:\/\/www.rockymountainoils.com\/products\/lavender-essential-oil","image": [
4090          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lavender-essential-oil-15ml-1.jpg?v=1765782112\u0026width=638"
4091        ],
4092      "description": "Lavender Essential Oil from Rocky Mountain Oils offers a versatile and soothing aromatic experience. Steam-distilled from Lavandula angustifolia flowers sourced from premium growing regions, this 100% pure essential oil boasts a medium-strength floral, herbaceous, and slightly woody aroma.\nIts calming properties help reduce stress and encourage sound sleep, contributing to a greater sense of peace and well-being. It also offers benefits for skin care and pain relief. This multipurpose oil can be used in diffusers, applied topically when diluted, or added to DIY products for aromatherapy, massage, and household cleaning.\n\n\n","sku": "LAVGRE-S15",
4093      "brand": {
4094        "@type": "Brand",
4095        "name": "Rocky Mountain Oils"
4096      },
4097      "offers": {
4098          "@type": "AggregateOffer",
4099          "availability": "http://schema.org/InStock",
4100          "priceCurrency": "USD",
4101          "highPrice": 49.95,
4102          "lowPrice": 11.95,
4103          "offerCount": 3,
4104          "offers": [{
4105              "@type" : "Offer","sku": "LAVGRE-S15","gtin12": "053176181462","availability" : "http://schema.org/InStock",
4106              "price" : 20.95,
4107              "priceCurrency" : "USD",
4108              "priceValidUntil": "2026-12-31",
4109              "url" : "https:\/\/www.rockymountainoils.com\/products\/lavender-essential-oil?variant=44111360459074"
4110            },
4111{
4112              "@type" : "Offer","sku": "LAVGRE-S5","gtin12": "053176181776","availability" : "http://schema.org/InStock",
4113              "price" : 11.95,
4114              "priceCurrency" : "USD",
4115              "priceValidUntil": "2026-12-31",
4116              "url" : "https:\/\/www.rockymountainoils.com\/products\/lavender-essential-oil?variant=48687729115458"
4117            },
4118{
4119              "@type" : "Offer","sku": "LAVGRE-4OZ","gtin12": "053176183145","availability" : "http://schema.org/InStock",
4120              "price" : 49.95,
4121              "priceCurrency" : "USD",
4122              "priceValidUntil": "2026-12-31",
4123              "url" : "https:\/\/www.rockymountainoils.com\/products\/lavender-essential-oil?variant=48687729082690"
4124            }
4125]
4126      }
4127    }
4128    </script>
4128</div>
4129
4130<style>
4131/* Ensure visually-hidden utility exists even if theme lacks it */
4132.visually-hidden {
4133    position: absolute !important;
4134    width: 1px !important;
4135    height: 1px !important;
4136    padding: 0 !important;
4137    margin: -1px !important;
4138    overflow: hidden !important;
4139    clip: rect(0, 0, 0, 0) !important;
4140    white-space: nowrap !important;
4141    border: 0 !important;
4142}
4143
4144/* Ensure the main product image is tappable on iOS */
4145.main-product-image {
4146    cursor: pointer;
4147    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
4148    touch-action: manipulation;
4149}
4150
4151/* ULTIMATE FIX - Override anything that hides select text */
4152.product-variants-select,
4153.product-variants-select.no-js-only,
4154select.product-variants-select,
4155select[id*="ProductSelect-"] {
4156    color: #1a1a1a !important;
4157    opacity: 1 !important;
4158    background-color: #ffffff !important;
4159    -webkit-text-fill-color: #1a1a1a !important;
4160}
4161
4162.product-variants-select option,
4163select[id*="ProductSelect-"] option {
4164    color: #1a1a1a !important;
4165    background-color: #ffffff !important;
4166    -webkit-text-fill-color: #1a1a1a !important;
4167}
4168
4169.product-variants-select option:checked,
4170select[id*="ProductSelect-"] option:checked {
4171    color: #1a1a1a !important;
4172    background-color: #e8f0fe !important;
4173}
4174
4175.product-variants-select option:disabled,
4176select[id*="ProductSelect-"] option:disabled {
4177    color: #6c6c6c !important;
4178    background-color: #f5f5f5 !important;
4179    -webkit-text-fill-color: #6c6c6c !important;
4180    opacity: 1 !important;
4181}
4182
4183.product-variants-select:focus,
4184select[id*="ProductSelect-"]:focus {
4185    color: #1a1a1a !important;
4186    outline: 3px solid #000000ff !important;
4187}
4188</style>
4189                      </div><div class="item">
4190                    	
4190<script>
4191(function() {
4192    class ProductCardVariantSelector {
4193        constructor(container) {
4194            this.container = container;
4195            if (!this.container) return;
4196
4197            this.form = this.container.querySelector('.product-form');
4198            this.variantSelectors = this.container.querySelectorAll('.variant-select');
4199            this.masterSelect = this.container.querySelector('.product-variants-select');
4200            this.productImage = this.container.querySelector('.main-product-image');
4201            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
4202            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
4203            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
4204            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
4205            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
4206            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
4207            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
4208            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
4209            this.saleTag = this.container.querySelector('.hc-sale-tag');
4210            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
4211
4212            if (!this.masterSelect || !this.variantsJsonScript) return;
4213
4214            try {
4215                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
4216            } catch (e) { return; }
4217
4218            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
4219            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
4220
4221            this.init();
4222        }
4223
4224        init() {
4225            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
4226            if (this.productImage) {
4227                let touchStartX = 0, touchStartY = 0, touchMoved = false;
4228                let lastTouchTime = 0;
4229
4230                this.productImage.style.cursor = 'pointer';
4231                this.productImage.setAttribute('role', 'button');
4232                this.productImage.setAttribute('tabindex', '0');
4233
4234                this.productImage.addEventListener('touchstart', (e) => {
4235                    const t = e.touches[0];
4236                    touchStartX = t.clientX;
4237                    touchStartY = t.clientY;
4238                    touchMoved = false;
4239                }, { passive: true });
4240
4241                this.productImage.addEventListener('touchmove', (e) => {
4242                    const t = e.touches[0];
4243                    if (Math.abs(t.clientX - touchStartX) > 10 ||
4244                        Math.abs(t.clientY - touchStartY) > 10) {
4245                        touchMoved = true;
4246                    }
4247                }, { passive: true });
4248
4249                this.productImage.addEventListener('touchend', (e) => {
4250                    if (touchMoved) return;
4251                    lastTouchTime = Date.now();
4252                    e.preventDefault();
4253                    this.onImageTap(e);
4254                }, { passive: false });
4255
4256                // Desktop / non-touch fallback (with double-fire protection after touchend)
4257                this.productImage.addEventListener('click', (e) => {
4258                    if (Date.now() - lastTouchTime < 500) return;
4259                    this.onImageTap(e);
4260                });
4261
4262                this.productImage.addEventListener('keydown', (e) => {
4263                    if (e.key === 'Enter' || e.key === ' ') {
4264                        e.preventDefault();
4265                        this.onImageTap(e);
4266                    }
4267                });
4268            }
4269
4270            // --- Variant select listeners ---
4271            if (this.variantSelectors.length > 0) {
4272                this.variantSelectors.forEach(select => {
4273                    select.addEventListener('change', this.onVariantChange.bind(this));
4274                });
4275                this.updateProductDetails(this.getCurrentVariant());
4276            }
4277        }
4278
4279        // ============================================================
4280        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
4281        // Currently: navigates to the product page.
4282        // ============================================================
4283        onImageTap(e) {
4284            const link = this.container.querySelector('.product-title-link');
4285            if (link && link.href && link.href !== '#') {
4286                window.location.href = link.href;
4287            }
4288        }
4289        // ============================================================
4290
4291        onVariantChange() {
4292            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
4293            const matchedVariant = this.findMatchingVariant(selectedOptions);
4294
4295            if (matchedVariant) {
4296                this.masterSelect.value = matchedVariant.id;
4297                this.updateProductDetails(matchedVariant);
4298                if (this.statusElement) this.statusElement.textContent = '';
4299            } else {
4300                if (this.statusElement) {
4301                    this.statusElement.textContent = 'No available variant matches your selection';
4302                }
4303                this.updateProductDetails(null);
4304            }
4305        }
4306
4307        findMatchingVariant(selectedOptions) {
4308            return this.productVariants.find(variant => {
4309                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
4310                return selectedOptions.every((val, i) => variant.options[i] === val);
4311            });
4312        }
4313
4314        getCurrentVariant() {
4315            if (!this.masterSelect) return null;
4316            const id = this.masterSelect.value;
4317            if (!id) return null;
4318            return this.productVariants.find(v => String(v.id) === String(id)) || null;
4319        }
4320
4321        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
4322        sizedImageUrl(src, width) {
4323            if (!src) return src;
4324            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
4325        }
4326
4327        updateProductDetails(variant) {
4328            this.container.setAttribute('aria-busy', 'true');
4329
4330            if (!variant) {
4331                if (this.addToCartButton) this.addToCartButton.disabled = true;
4332                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
4333                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
4334                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
4335                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
4336                if (this.saleTag) this.saleTag.style.display = 'none';
4337                this.container.setAttribute('aria-busy', 'false');
4338                return;
4339            }
4340
4341            // 1. Image
4342            if (this.productImage) {
4343                if (variant.featured_image && variant.featured_image.src) {
4344                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
4345                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
4346                    this.productImage.src = sized;
4347                    this.productImage.srcset = '';
4348                    this.productImage.alt = variant.featured_image.alt
4349                        ? variant.featured_image.alt
4350                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
4351                } else if (this.mainImageUrl) {
4352                    this.productImage.src = this.mainImageUrl;
4353                    this.productImage.srcset = '';
4354                    this.productImage.alt = this.productTitle;
4355                }
4356            }
4357
4358            // 2. Price
4359            const moneyFormat = "${{amount}}";
4360            const formatMoney = (cents, format) => {
4361                if (typeof cents === 'string') cents = cents.replace('.', '');
4362                let value = '';
4363                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
4364                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
4365
4366                function formatWithDelimiters(number, precision, thousands, decimal) {
4367                    precision = precision ?? 2;
4368                    thousands = thousands ?? ',';
4369                    decimal = decimal ?? '.';
4370                    if (isNaN(number) || number == null) return 0;
4371                    number = (number / 100.0).toFixed(precision);
4372                    const parts = number.split('.');
4373                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
4374                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
4375                    return dollars + centsPart;
4376                }
4377
4378                switch (formatString.match(placeholderRegex)?.[1]) {
4379                    case 'amount': value = formatWithDelimiters(cents, 2); break;
4380                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
4381                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
4382                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
4383                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
4384                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
4385                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
4386                    default: value = formatWithDelimiters(cents, 2);
4387                }
4388                try {
4389                    return formatString.replace(placeholderRegex, value);
4390                } catch (e) {
4391                    const fallback = (cents / 100.0).toFixed(2);
4392                    return formatString.includes('')
4393                        ? formatString.replace(placeholderRegex, fallback)
4394                        : fallback;
4395                }
4396            };
4397
4398            if (this.currentPriceElement) {
4399                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
4400            }
4401            if (this.comparePriceElement && this.priceWrapper) {
4402                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
4403                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
4404                    this.comparePriceElement.style.display = '';
4405                    this.priceWrapper.classList.add('sale');
4406                } else {
4407                    this.comparePriceElement.textContent = '';
4408                    this.comparePriceElement.style.display = 'none';
4409                    this.priceWrapper.classList.remove('sale');
4410                }
4411            }
4412
4413            // 3. Sale tag
4414            if (this.saleTag) {
4415                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
4416                if (isDiscounted && variant.available) {
4417                    this.saleTag.style.display = 'block';
4418                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
4419                    const span = this.saleTag.querySelector('span');
4420                    if (span) span.textContent = discount + '%';
4421                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
4422                    this.saleTag.setAttribute('role', 'status');
4423                } else {
4424                    this.saleTag.style.display = 'none';
4425                }
4426            }
4427
4428            // 4. Add to cart
4429            if (this.addToCartButton && this.addToCartText) {
4430                if (variant.available) {
4431                    this.addToCartButton.disabled = false;
4432                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
4433                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
4434                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
4435                } else {
4436                    this.addToCartButton.disabled = true;
4437                    this.addToCartText.textContent = 'Sold Out';
4438                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
4439                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
4440                }
4441            }
4442            if (this.notifyMeButton) {
4443                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
4444            }
4445
4446            this.container.setAttribute('aria-busy', 'false');
4447        }
4448    }
4449
4450    function initProductCards(root) {
4451        root = root || document;
4452        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
4453            if (cardContainer.dataset.variantSelectorInit === 'true') return;
4454            cardContainer.dataset.variantSelectorInit = 'true';
4455            new ProductCardVariantSelector(cardContainer);
4456        });
4457    }
4458
4459    if (document.readyState === 'loading') {
4460        document.addEventListener('DOMContentLoaded', () => initProductCards());
4461    } else {
4462        initProductCards();
4463    }
4464
4465    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
4466})();
4467</script>
4467<div class="product-card-wrapper" data-product-id="8025578078530" aria-busy="false">
4468
4469    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530"><!-- WISHLIST BUTTON -->
4470        <div class='xb-wishlist__btn-custom'>
4471            <div
4472                class='xb-wishlist__add'
4473                xb-product-id='8025578078530'
4474                xb-product-title='Lemon Essential Oil'
4475                xb-product-variant='52948354269551'
4476                xb-is-in-stock='true'
4477                xb-product-handle='lemon-essential-oil'
4478            >
4479                <button aria-label="Add Lemon Essential Oil to wishlist" aria-pressed="false">
4480                    <svg
4481                        xmlns='http://www.w3.org/2000/svg'
4482                        width='20'
4483                        height='20'
4484                        viewBox='0 0 24 24'
4485                        fill='none'
4486                        stroke='#FF4A71'
4487                        stroke-width='2'
4488                        stroke-linecap='round'
4489                        stroke-linejoin='round'
4490                        aria-hidden='true'
4491                        focusable='false'
4492                    >
4493                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
4494                    </svg>
4495                </button>
4496            </div>
4497
4498            <div class="xb-wishlist__loading" xb-product-id="8025578078530">
4499                <span class="loading-spinner"></span>
4500            </div>
4501
4502            <div class='xb-wishlist__remove' xb-product-id='8025578078530' xb-is-in-stock='true'>
4503                <button aria-label="Remove Lemon Essential Oil from wishlist" aria-pressed="true">
4504                    <svg
4505                        xmlns='http://www.w3.org/2000/svg'
4506                        width='20'
4507                        height='20'
4508                        viewBox='0 0 24 24'
4509                        fill='#FF4A71'
4510                        stroke='#FF4A71'
4511                        stroke-width='2'
4512                        stroke-linecap='round'
4513                        stroke-linejoin='round'
4514                        aria-hidden='true'
4515                        focusable='false'
4516                    >
4517                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
4518                    </svg>
4519                </button>
4520            </div>
4521        </div><img
4522              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530"
4523              class="main-product-image"
4524              src="//www.rockymountainoils.com/cdn/shop/files/Lemon5mlSingle_2ef8b857-d992-46b4-b392-dd46c4ad9d7f.jpg?crop=center&height=300&v=1705937062&width=300"
4525              alt=" Essentials Kit"
4526              width="300"
4527              height="300"
4528              loading="lazy"
4529            /></div>
4530
4531    <div class="product-content">
4532        <div class="product-title">
4533            <a href="/products/lemon-essential-oil" class="product-title-link" aria-label="View Lemon Essential Oil">
4534                <h2>Lemon Essential Oil</h2>
4535            </a>
4536        </div><div>
4537                <div class="product-subtitle">
4538                    Smells like a fresh lemon; helps reduce stress & improves focus. 
4539                </div>
4540            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025578078530" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
4541            <div class="product-data-store" style="display:none;"
4542                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/Lemon5mlSingle_2ef8b857-d992-46b4-b392-dd46c4ad9d7f.jpg?v=1705937062&width=300"
4543                 data-product-title="Lemon Essential Oil"
4544                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530">
4545            </div>
4546
4547            
4547<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" type="application/json">
4548                [{"id":52948354269551,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"LEMUSA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":43885289177410,"product_id":8025578078530,"position":1,"created_at":"2024-01-22T08:24:21-07:00","updated_at":"2024-01-22T08:24:22-07:00","alt":" Essentials Kit","width":570,"height":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lemon5mlSingle_2ef8b857-d992-46b4-b392-dd46c4ad9d7f.jpg?v=1705937062","variant_ids":[52948354269551]},"available":true,"name":"Lemon Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":495,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176024","featured_media":{"alt":" Essentials Kit","id":36355664314690,"position":1,"preview_image":{"aspect_ratio":1.0,"height":570,"width":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lemon5mlSingle_2ef8b857-d992-46b4-b392-dd46c4ad9d7f.jpg?v=1705937062"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":347}],"price":347,"compare_at_price":495,"per_delivery_price":347,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":421},{"position":2,"price":396}],"price":421,"compare_at_price":495,"per_delivery_price":421,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":446},{"position":2,"price":421}],"price":446,"compare_at_price":495,"per_delivery_price":446,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":470},{"position":2,"price":446}],"price":470,"compare_at_price":495,"per_delivery_price":470,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":446},{"position":2,"price":421}],"price":446,"compare_at_price":495,"per_delivery_price":446,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":470},{"position":2,"price":446}],"price":470,"compare_at_price":495,"per_delivery_price":470,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":421},{"position":2,"price":396}],"price":421,"compare_at_price":495,"per_delivery_price":421,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":446},{"position":2,"price":421}],"price":446,"compare_at_price":495,"per_delivery_price":446,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":470},{"position":2,"price":446}],"price":470,"compare_at_price":495,"per_delivery_price":470,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44299085513026,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"LEMUSA-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":43885239075138,"product_id":8025578078530,"position":2,"created_at":"2024-01-22T08:16:04-07:00","updated_at":"2026-04-09T07:57:57-06:00","alt":"Most Popular Lemon Essential Oil ","width":570,"height":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lemon15mlSingle.jpg?v=1775743077","variant_ids":[44299085513026]},"available":true,"name":"Lemon Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":995,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176017","featured_media":{"alt":"Most Popular Lemon Essential Oil ","id":36355612705090,"position":2,"preview_image":{"aspect_ratio":1.0,"height":570,"width":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lemon15mlSingle.jpg?v=1775743077"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":697}],"price":697,"compare_at_price":995,"per_delivery_price":697,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":846},{"position":2,"price":796}],"price":846,"compare_at_price":995,"per_delivery_price":846,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":896},{"position":2,"price":846}],"price":896,"compare_at_price":995,"per_delivery_price":896,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":945},{"position":2,"price":896}],"price":945,"compare_at_price":995,"per_delivery_price":945,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":896},{"position":2,"price":846}],"price":896,"compare_at_price":995,"per_delivery_price":896,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":945},{"position":2,"price":896}],"price":945,"compare_at_price":995,"per_delivery_price":945,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":846},{"position":2,"price":796}],"price":846,"compare_at_price":995,"per_delivery_price":846,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":896},{"position":2,"price":846}],"price":896,"compare_at_price":995,"per_delivery_price":896,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":945},{"position":2,"price":896}],"price":945,"compare_at_price":995,"per_delivery_price":945,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48687870640450,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"LEMUSA-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":44364455280962,"product_id":8025578078530,"position":4,"created_at":"2024-03-06T11:22:34-07:00","updated_at":"2026-04-09T07:57:57-06:00","alt":"Lemon Essential Oil - 4oz - Rocky Mountain Oils","width":715,"he
4548ight":715,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lemon-essential-oil-4oz-2.jpg?v=1775743077","variant_ids":[48687870640450]},"available":false,"name":"Lemon Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":2995,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176024","featured_media":{"alt":"Lemon Essential Oil - 4oz - Rocky Mountain Oils","id":36843347378498,"position":4,"preview_image":{"aspect_ratio":1.0,"height":715,"width":715,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/lemon-essential-oil-4oz-2.jpg?v=1775743077"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":2097}],"price":2097,"compare_at_price":2995,"per_delivery_price":2097,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2546},{"position":2,"price":2396}],"price":2546,"compare_at_price":2995,"per_delivery_price":2546,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2696},{"position":2,"price":2546}],"price":2696,"compare_at_price":2995,"per_delivery_price":2696,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2845},{"position":2,"price":2696}],"price":2845,"compare_at_price":2995,"per_delivery_price":2845,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2696},{"position":2,"price":2546}],"price":2696,"compare_at_price":2995,"per_delivery_price":2696,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2845},{"position":2,"price":2696}],"price":2845,"compare_at_price":2995,"per_delivery_price":2845,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2546},{"position":2,"price":2396}],"price":2546,"compare_at_price":2995,"per_delivery_price":2546,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2696},{"position":2,"price":2546}],"price":2696,"compare_at_price":2995,"per_delivery_price":2696,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2845},{"position":2,"price":2696}],"price":2845,"compare_at_price":2995,"per_delivery_price":2845,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
4549            </script>
4549<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025578078530" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
4550                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" aria-live="polite" aria-atomic="true">
4551                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" style="display: none;"></span>
4552                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530">$4.95</span>
4553
4554                        
4555                    </div>
4556
4557                    
4558                        <div class="product-option">
4559                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530-0" class="visually-hidden">
4560                                Select Size for Lemon Essential Oil
4561                            </label>
4562                            <select
4563                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530-0"
4564                                class="variant-select"
4565                                name="options[Size]"
4566                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530"
4567                                data-index="option0"
4568                            ><option
4569                                        value="5ml"
4570                                        selected="selected"
4571                                    >
4572                                        5ml
4573                                    </option><option
4574                                        value="15ml"
4575                                        
4576                                    >
4577                                        15ml
4578                                    </option><option
4579                                        value="4oz"
4580                                        
4581                                    >
4582                                        4oz
4583                                    </option></select>
4584                        </div>
4585                    
4586                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" class="visually-hidden">
4587                Choose variant for Lemon Essential Oil
4588            </label>
4589            <select
4590                name="id"
4591                data-productid="8025578078530"
4592                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530"
4593                class="product-variants-select no-js-only"
4594            ><option
4595                        value="52948354269551"
4596                         selected="selected" 
4597                        
4598                    >
4599                        5ml - $4.95 
4600                    </option><option
4601                        value="44299085513026"
4602                        
4603                        
4604                    >
4605                        15ml - $9.95 
4606                    </option><option
4607                        value="48687870640450"
4608                        
4609                        disabled="disabled"
4610                    >
4611                        4oz - $29.95 - Sold Out
4612                    </option></select>
4613
4614            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530">
4615                <input type="hidden" name="quantity" value="1">
4616                
4617
4618                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" aria-l
4618ive="assertive"></div>
4619
4620                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530" class="visually-hidden">Adds item to your shopping cart</span>
4621
4622                <button
4623                    class="addtocart-btn add-to-cart"
4624                    type="submit"
4625                    name="add"
4626                    aria-label="Add to Cart - Add Lemon Essential Oil to cart"
4627                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530"
4628                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530"
4629                    
4630                >
4631                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578078530">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
4632                </button>
4633            </div><input type="hidden" name="product-id" value="8025578078530" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
4633<script type="application/ld+json">
4634    {
4635      "@context": "http://schema.org/",
4636      "@type": "Product",
4637      "name": "Lemon Essential Oil",
4638      "url": "https:\/\/www.rockymountainoils.com\/products\/lemon-essential-oil","image": [
4639          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Lemon5mlSingle_2ef8b857-d992-46b4-b392-dd46c4ad9d7f.jpg?v=1705937062\u0026width=570"
4640        ],
4641      "description": "Lemon Essential Oil offers a bright, invigorating scent that energizes and refreshes. Cold-pressed from lemon peels, this versatile oil is packed with antioxidants like vitamin C and limonene. It helps reduce stress, improve focus, and promote a clearer complexion when diluted and applied topically. Lemon oil is also excellent for natural cleaning and air purification.","sku": "LEMUSA-S5",
4642      "brand": {
4643        "@type": "Brand",
4644        "name": "Rocky Mountain Oils"
4645      },
4646      "offers": {
4647          "@type": "AggregateOffer",
4648          "availability": "http://schema.org/InStock",
4649          "priceCurrency": "USD",
4650          "highPrice": 29.95,
4651          "lowPrice": 4.95,
4652          "offerCount": 3,
4653          "offers": [{
4654              "@type" : "Offer","sku": "LEMUSA-S5","gtin12": "053176176024","availability" : "http://schema.org/InStock",
4655              "price" : 4.95,
4656              "priceCurrency" : "USD",
4657              "priceValidUntil": "2026-12-31",
4658              "url" : "https:\/\/www.rockymountainoils.com\/products\/lemon-essential-oil?variant=52948354269551"
4659            },
4660{
4661              "@type" : "Offer","sku": "LEMUSA-S15","gtin12": "053176176017","availability" : "http://schema.org/InStock",
4662              "price" : 9.95,
4663              "priceCurrency" : "USD",
4664              "priceValidUntil": "2026-12-31",
4665              "url" : "https:\/\/www.rockymountainoils.com\/products\/lemon-essential-oil?variant=44299085513026"
4666            },
4667{
4668              "@type" : "Offer","sku": "LEMUSA-4OZ","gtin12": "053176176024","availability" : "http://schema.org/OutOfStock",
4669              "price" : 29.95,
4670              "priceCurrency" : "USD",
4671              "priceValidUntil": "2026-12-31",
4672              "url" : "https:\/\/www.rockymountainoils.com\/products\/lemon-essential-oil?variant=48687870640450"
4673            }
4674]
4675      }
4676    }
4677    </script>
4677</div>
4678
4679<style>
4680/* Ensure visually-hidden utility exists even if theme lacks it */
4681.visually-hidden {
4682    position: absolute !important;
4683    width: 1px !important;
4684    height: 1px !important;
4685    padding: 0 !important;
4686    margin: -1px !important;
4687    overflow: hidden !important;
4688    clip: rect(0, 0, 0, 0) !important;
4689    white-space: nowrap !important;
4690    border: 0 !important;
4691}
4692
4693/* Ensure the main product image is tappable on iOS */
4694.main-product-image {
4695    cursor: pointer;
4696    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
4697    touch-action: manipulation;
4698}
4699
4700/* ULTIMATE FIX - Override anything that hides select text */
4701.product-variants-select,
4702.product-variants-select.no-js-only,
4703select.product-variants-select,
4704select[id*="ProductSelect-"] {
4705    color: #1a1a1a !important;
4706    opacity: 1 !important;
4707    background-color: #ffffff !important;
4708    -webkit-text-fill-color: #1a1a1a !important;
4709}
4710
4711.product-variants-select option,
4712select[id*="ProductSelect-"] option {
4713    color: #1a1a1a !important;
4714    background-color: #ffffff !important;
4715    -webkit-text-fill-color: #1a1a1a !important;
4716}
4717
4718.product-variants-select option:checked,
4719select[id*="ProductSelect-"] option:checked {
4720    color: #1a1a1a !important;
4721    background-color: #e8f0fe !important;
4722}
4723
4724.product-variants-select option:disabled,
4725select[id*="ProductSelect-"] option:disabled {
4726    color: #6c6c6c !important;
4727    background-color: #f5f5f5 !important;
4728    -webkit-text-fill-color: #6c6c6c !important;
4729    opacity: 1 !important;
4730}
4731
4732.product-variants-select:focus,
4733select[id*="ProductSelect-"]:focus {
4734    color: #1a1a1a !important;
4735    outline: 3px solid #000000ff !important;
4736}
4737</style>
4738                      </div><div class="item">
4739                    	
4739<script>
4740(function() {
4741    class ProductCardVariantSelector {
4742        constructor(container) {
4743            this.container = container;
4744            if (!this.container) return;
4745
4746            this.form = this.container.querySelector('.product-form');
4747            this.variantSelectors = this.container.querySelectorAll('.variant-select');
4748            this.masterSelect = this.container.querySelector('.product-variants-select');
4749            this.productImage = this.container.querySelector('.main-product-image');
4750            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
4751            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
4752            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
4753            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
4754            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
4755            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
4756            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
4757            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
4758            this.saleTag = this.container.querySelector('.hc-sale-tag');
4759            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
4760
4761            if (!this.masterSelect || !this.variantsJsonScript) return;
4762
4763            try {
4764                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
4765            } catch (e) { return; }
4766
4767            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
4768            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
4769
4770            this.init();
4771        }
4772
4773        init() {
4774            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
4775            if (this.productImage) {
4776                let touchStartX = 0, touchStartY = 0, touchMoved = false;
4777                let lastTouchTime = 0;
4778
4779                this.productImage.style.cursor = 'pointer';
4780                this.productImage.setAttribute('role', 'button');
4781                this.productImage.setAttribute('tabindex', '0');
4782
4783                this.productImage.addEventListener('touchstart', (e) => {
4784                    const t = e.touches[0];
4785                    touchStartX = t.clientX;
4786                    touchStartY = t.clientY;
4787                    touchMoved = false;
4788                }, { passive: true });
4789
4790                this.productImage.addEventListener('touchmove', (e) => {
4791                    const t = e.touches[0];
4792                    if (Math.abs(t.clientX - touchStartX) > 10 ||
4793                        Math.abs(t.clientY - touchStartY) > 10) {
4794                        touchMoved = true;
4795                    }
4796                }, { passive: true });
4797
4798                this.productImage.addEventListener('touchend', (e) => {
4799                    if (touchMoved) return;
4800                    lastTouchTime = Date.now();
4801                    e.preventDefault();
4802                    this.onImageTap(e);
4803                }, { passive: false });
4804
4805                // Desktop / non-touch fallback (with double-fire protection after touchend)
4806                this.productImage.addEventListener('click', (e) => {
4807                    if (Date.now() - lastTouchTime < 500) return;
4808                    this.onImageTap(e);
4809                });
4810
4811                this.productImage.addEventListener('keydown', (e) => {
4812                    if (e.key === 'Enter' || e.key === ' ') {
4813                        e.preventDefault();
4814                        this.onImageTap(e);
4815                    }
4816                });
4817            }
4818
4819            // --- Variant select listeners ---
4820            if (this.variantSelectors.length > 0) {
4821                this.variantSelectors.forEach(select => {
4822                    select.addEventListener('change', this.onVariantChange.bind(this));
4823                });
4824                this.updateProductDetails(this.getCurrentVariant());
4825            }
4826        }
4827
4828        // ============================================================
4829        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
4830        // Currently: navigates to the product page.
4831        // ============================================================
4832        onImageTap(e) {
4833            const link = this.container.querySelector('.product-title-link');
4834            if (link && link.href && link.href !== '#') {
4835                window.location.href = link.href;
4836            }
4837        }
4838        // ============================================================
4839
4840        onVariantChange() {
4841            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
4842            const matchedVariant = this.findMatchingVariant(selectedOptions);
4843
4844            if (matchedVariant) {
4845                this.masterSelect.value = matchedVariant.id;
4846                this.updateProductDetails(matchedVariant);
4847                if (this.statusElement) this.statusElement.textContent = '';
4848            } else {
4849                if (this.statusElement) {
4850                    this.statusElement.textContent = 'No available variant matches your selection';
4851                }
4852                this.updateProductDetails(null);
4853            }
4854        }
4855
4856        findMatchingVariant(selectedOptions) {
4857            return this.productVariants.find(variant => {
4858                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
4859                return selectedOptions.every((val, i) => variant.options[i] === val);
4860            });
4861        }
4862
4863        getCurrentVariant() {
4864            if (!this.masterSelect) return null;
4865            const id = this.masterSelect.value;
4866            if (!id) return null;
4867            return this.productVariants.find(v => String(v.id) === String(id)) || null;
4868        }
4869
4870        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
4871        sizedImageUrl(src, width) {
4872            if (!src) return src;
4873            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
4874        }
4875
4876        updateProductDetails(variant) {
4877            this.container.setAttribute('aria-busy', 'true');
4878
4879            if (!variant) {
4880                if (this.addToCartButton) this.addToCartButton.disabled = true;
4881                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
4882                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
4883                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
4884                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
4885                if (this.saleTag) this.saleTag.style.display = 'none';
4886                this.container.setAttribute('aria-busy', 'false');
4887                return;
4888            }
4889
4890            // 1. Image
4891            if (this.productImage) {
4892                if (variant.featured_image && variant.featured_image.src) {
4893                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
4894                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
4895                    this.productImage.src = sized;
4896                    this.productImage.srcset = '';
4897                    this.productImage.alt = variant.featured_image.alt
4898                        ? variant.featured_image.alt
4899                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
4900                } else if (this.mainImageUrl) {
4901                    this.productImage.src = this.mainImageUrl;
4902                    this.productImage.srcset = '';
4903                    this.productImage.alt = this.productTitle;
4904                }
4905            }
4906
4907            // 2. Price
4908            const moneyFormat = "${{amount}}";
4909            const formatMoney = (cents, format) => {
4910                if (typeof cents === 'string') cents = cents.replace('.', '');
4911                let value = '';
4912                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
4913                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
4914
4915                function formatWithDelimiters(number, precision, thousands, decimal) {
4916                    precision = precision ?? 2;
4917                    thousands = thousands ?? ',';
4918                    decimal = decimal ?? '.';
4919                    if (isNaN(number) || number == null) return 0;
4920                    number = (number / 100.0).toFixed(precision);
4921                    const parts = number.split('.');
4922                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
4923                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
4924                    return dollars + centsPart;
4925                }
4926
4927                switch (formatString.match(placeholderRegex)?.[1]) {
4928                    case 'amount': value = formatWithDelimiters(cents, 2); break;
4929                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
4930                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
4931                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
4932                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
4933                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
4934                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
4935                    default: value = formatWithDelimiters(cents, 2);
4936                }
4937                try {
4938                    return formatString.replace(placeholderRegex, value);
4939                } catch (e) {
4940                    const fallback = (cents / 100.0).toFixed(2);
4941                    return formatString.includes('')
4942                        ? formatString.replace(placeholderRegex, fallback)
4943                        : fallback;
4944                }
4945            };
4946
4947            if (this.currentPriceElement) {
4948                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
4949            }
4950            if (this.comparePriceElement && this.priceWrapper) {
4951                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
4952                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
4953                    this.comparePriceElement.style.display = '';
4954                    this.priceWrapper.classList.add('sale');
4955                } else {
4956                    this.comparePriceElement.textContent = '';
4957                    this.comparePriceElement.style.display = 'none';
4958                    this.priceWrapper.classList.remove('sale');
4959                }
4960            }
4961
4962            // 3. Sale tag
4963            if (this.saleTag) {
4964                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
4965                if (isDiscounted && variant.available) {
4966                    this.saleTag.style.display = 'block';
4967                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
4968                    const span = this.saleTag.querySelector('span');
4969                    if (span) span.textContent = discount + '%';
4970                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
4971                    this.saleTag.setAttribute('role', 'status');
4972                } else {
4973                    this.saleTag.style.display = 'none';
4974                }
4975            }
4976
4977            // 4. Add to cart
4978            if (this.addToCartButton && this.addToCartText) {
4979                if (variant.available) {
4980                    this.addToCartButton.disabled = false;
4981                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
4982                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
4983                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
4984                } else {
4985                    this.addToCartButton.disabled = true;
4986                    this.addToCartText.textContent = 'Sold Out';
4987                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
4988                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
4989                }
4990            }
4991            if (this.notifyMeButton) {
4992                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
4993            }
4994
4995            this.container.setAttribute('aria-busy', 'false');
4996        }
4997    }
4998
4999    function initProductCards(root) {
5000        root = root || document;
5001        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
5002            if (cardContainer.dataset.variantSelectorInit === 'true') return;
5003            cardContainer.dataset.variantSelectorInit = 'true';
5004            new ProductCardVariantSelector(cardContainer);
5005        });
5006    }
5007
5008    if (document.readyState === 'loading') {
5009        document.addEventListener('DOMContentLoaded', () => initProductCards());
5010    } else {
5011        initProductCards();
5012    }
5013
5014    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
5015})();
5016</script>
5016<div class="product-card-wrapper" data-product-id="8025568411970" aria-busy="false">
5017
5018    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970"><!-- WISHLIST BUTTON -->
5019        <div class='xb-wishlist__btn-custom'>
5020            <div
5021                class='xb-wishlist__add'
5022                xb-product-id='8025568411970'
5023                xb-product-title='Orange Essential Oil'
5024                xb-product-variant='52948343062895'
5025                xb-is-in-stock='true'
5026                xb-product-handle='orange-essential-oil'
5027            >
5028                <button aria-label="Add Orange Essential Oil to wishlist" aria-pressed="false">
5029                    <svg
5030                        xmlns='http://www.w3.org/2000/svg'
5031                        width='20'
5032                        height='20'
5033                        viewBox='0 0 24 24'
5034                        fill='none'
5035                        stroke='#FF4A71'
5036                        stroke-width='2'
5037                        stroke-linecap='round'
5038                        stroke-linejoin='round'
5039                        aria-hidden='true'
5040                        focusable='false'
5041                    >
5042                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
5043                    </svg>
5044                </button>
5045            </div>
5046
5047            <div class="xb-wishlist__loading" xb-product-id="8025568411970">
5048                <span class="loading-spinner"></span>
5049            </div>
5050
5051            <div class='xb-wishlist__remove' xb-product-id='8025568411970' xb-is-in-stock='true'>
5052                <button aria-label="Remove Orange Essential Oil from wishlist" aria-pressed="true">
5053                    <svg
5054                        xmlns='http://www.w3.org/2000/svg'
5055                        width='20'
5056                        height='20'
5057                        viewBox='0 0 24 24'
5058                        fill='#FF4A71'
5059                        stroke='#FF4A71'
5060                        stroke-width='2'
5061                        stroke-linecap='round'
5062                        stroke-linejoin='round'
5063                        aria-hidden='true'
5064                        focusable='false'
5065                    >
5066                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
5067                    </svg>
5068                </button>
5069            </div>
5070        </div><img
5071              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970"
5072              class="main-product-image"
5073              src="//www.rockymountainoils.com/cdn/shop/files/Orange5mlSingle_3db481fb-970c-441f-a6ca-c72cdd913abd.jpg?crop=center&height=300&v=1722538170&width=300"
5074              alt="Orange Essential Oil"
5075              width="300"
5076              height="300"
5077              loading="lazy"
5078            /></div>
5079
5080    <div class="product-content">
5081        <div class="product-title">
5082            <a href="/products/orange-essential-oil" class="product-title-link" aria-label="View Orange Essential Oil">
5083                <h2>Orange Essential Oil</h2>
5084            </a>
5085        </div><div>
5086                <div class="product-subtitle">
5087                    Sweet, mellow citrus aroma promotes calm & boosts immunity.
5088                </div>
5089            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025568411970" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
5090            <div class="product-data-store" style="display:none;"
5091                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/Orange5mlSingle_3db481fb-970c-441f-a6ca-c72cdd913abd.jpg?v=1722538170&width=300"
5092                 data-product-title="Orange Essential Oil"
5093                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970">
5094            </div>
5095
5096            
5096<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" type="application/json">
5097                [{"id":52948343062895,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"ORAUSA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":46464341180738,"product_id":8025568411970,"position":1,"created_at":"2024-08-01T12:49:08-06:00","updated_at":"2024-08-01T12:49:30-06:00","alt":null,"width":547,"height":547,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Orange5mlSingle_3db481fb-970c-441f-a6ca-c72cdd913abd.jpg?v=1722538170","variant_ids":[52948343062895]},"available":true,"name":"Orange Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":495,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176321","featured_media":{"alt":null,"id":38890527719746,"position":1,"preview_image":{"aspect_ratio":1.0,"height":547,"width":547,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Orange5mlSingle_3db481fb-970c-441f-a6ca-c72cdd913abd.jpg?v=1722538170"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":347}],"price":347,"compare_at_price":495,"per_delivery_price":347,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":421},{"position":2,"price":396}],"price":421,"compare_at_price":495,"per_delivery_price":421,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":446},{"position":2,"price":421}],"price":446,"compare_at_price":495,"per_delivery_price":446,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":470},{"position":2,"price":446}],"price":470,"compare_at_price":495,"per_delivery_price":470,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":446},{"position":2,"price":421}],"price":446,"compare_at_price":495,"per_delivery_price":446,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":470},{"position":2,"price":446}],"price":470,"compare_at_price":495,"per_delivery_price":470,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":421},{"position":2,"price":396}],"price":421,"compare_at_price":495,"per_delivery_price":421,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":446},{"position":2,"price":421}],"price":446,"compare_at_price":495,"per_delivery_price":446,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":470},{"position":2,"price":446}],"price":470,"compare_at_price":495,"per_delivery_price":470,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48682130342210,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"ORAUSA-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":44364627673410,"product_id":8025568411970,"position":2,"created_at":"2024-03-06T11:50:58-07:00","updated_at":"2026-01-07T14:14:29-07:00","alt":"Orange Essential Oil - 4oz - Rocky Mountain Oils","width":722,"height":722,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/orange-essential-oil-4oz-1.jpg?v=1767820469","variant_ids":[48682130342210]},"available":false,"name":"Orange Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":2395,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183183","featured_media":{"alt":"Orange Essential Oil - 4oz - Rocky Mountain Oils","id":36843523014978,"position":2,"preview_image":{"aspect_ratio":1.0,"height":722,"width":722,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/orange-essential-oil-4oz-1.jpg?v=1767820469"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1677}],"price":1677,"compare_at_price":2395,"per_delivery_price":1677,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2036},{"position":2,"price":1916}],"price":2036,"compare_at_price":2395,"per_delivery_price":2036,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2156},{"position":2,"price":2036}],"price":2156,"compare_at_price":2395,"per_delivery_price":2156,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2275},{"position":2,"price":2156}],"price":2275,"compare_at_price":2395,"per_delivery_price":2275,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2156},{"position":2,"price":2036}],"price":2156,"compare_at_price":2395,"per_delivery_price":2156,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2275},{"position":2,"price":2156}],"price":2275,"compare_at_price":2395,"per_delivery_price":2275,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2036},{"position":2,"price":1916}],"price":2036,"compare_at_price":2395,"per_delivery_price":2036,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2156},{"position":2,"price":2036}],"price":2156,"compare_at_price":2395,"per_delivery_price":2156,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2275},{"position":2,"price":2156}],"price":2275,"compare_at_price":2395,"per_delivery_price":2275,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44111541993794,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"ORAPRE-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":43885356089666,"product_id":8025568411970,"position":3,"created_at":"2024-01-22T08:40:08-07:00","updated_at":"2026-01-07T14:14:29-07:00","alt":"Orange Essential Oil 15ml","width":570,"height":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/orange15mlwebsite.png?v=1767820469","variant_ids":[44111541993794]},"available":true,"name":"Orange Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":895,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176314","featured_media":{"alt":"Orange Essential Oil 15ml","id":36355732439362,"position":3,"preview_image":{"aspect_ratio":1.0,"height":570,"width":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/orange15mlwebsite.png?v=1767820469"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":627}],"price":627,"compare_at_price":895,"per_delivery_price":627,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":761},{"position":2,"price":716}],"price":761,"compare_at_price":895,"per_delivery_price":761,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":806},{"position":2,"price":761}],"price":806,"compare_at_price":895,"per_delivery_price":806,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":850},{"position":2,"price":806}],"price":850,"compare_at_price":895,"per_delivery_price":850,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":806},{"position":2,"price":761}],"price":806,"compare_at_price":895,"per_delivery_price":806,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":850},{"position":2,"price":806}],"price":850,"compare_at_price":895,"per_delivery_price":850,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":761},{"position":2,"price":716}],"price":761,"compare_at_price":895,"per_delivery_price":761,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":806},{"position":2,"price":761}],"price":806,"compare_at_price":895,"per_delivery_price":806,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":850},{"position":2,"price":806}],"price":850,"compare_at_price":895,"per_delivery_price":850,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
5098            </script>
5098<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025568411970" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
5099                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" aria-live="polite" aria-atomic="true">
5100                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" style="display: none;"></span>
5101                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970">$4.95</span>
5102
5103                        
5104                    </div>
5105
5106                    
5107                        <div class="product-option">
5108                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970-0" class="visually-hidden">
5109                                Select Size for Orange Essential Oil
5110                            </label>
5111                            <select
5112                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970-0"
5113                                class="variant-select"
5114                                name="options[Size]"
5115                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970"
5116                                data-index="option0"
5117                            ><option
5118                                        value="5ml"
5119                                        selected="selected"
5120                                    >
5121                                        5ml
5122                                    </option><option
5123                                        value="4oz"
5124                                        
5125                                    >
5126                                        4oz
5127                                    </option><option
5128                                        value="15ml"
5129                                        
5130                                    >
5131                                        15ml
5132                                    </option></select>
5133                        </div>
5134                    
5135                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" class="visually-hidden">
5136                Choose variant for Orange Essential Oil
5137            </label>
5138            <select
5139                name="id"
5140                data-productid="8025568411970"
5141                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970"
5142                class="product-variants-select no-js-only"
5143            ><option
5144                        value="52948343062895"
5145                         selected="selected" 
5146                        
5147                    >
5148                        5ml - $4.95 
5149                    </option><option
5150                        value="48682130342210"
5151                        
5152                        disabled="disabled"
5153                    >
5154                        4oz - $23.95 - Sold Out
5155                    </option><option
5156                        value="44111541993794"
5157                        
5158                        
5159                    >
5160                        15ml - $8.95 
5161                    </option></select>
5162
5163            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970">
5164                <input type="hidden" name="quantity" value="1">
5165                
5166
5167                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" aria-l
5167ive="assertive"></div>
5168
5169                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970" class="visually-hidden">Adds item to your shopping cart</span>
5170
5171                <button
5172                    class="addtocart-btn add-to-cart"
5173                    type="submit"
5174                    name="add"
5175                    aria-label="Add to Cart - Add Orange Essential Oil to cart"
5176                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970"
5177                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970"
5178                    
5179                >
5180                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025568411970">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
5181                </button>
5182            </div><input type="hidden" name="product-id" value="8025568411970" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
5182<script type="application/ld+json">
5183    {
5184      "@context": "http://schema.org/",
5185      "@type": "Product",
5186      "name": "Orange Essential Oil",
5187      "url": "https:\/\/www.rockymountainoils.com\/products\/orange-essential-oil","image": [
5188          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Orange5mlSingle_3db481fb-970c-441f-a6ca-c72cdd913abd.jpg?v=1722538170\u0026width=547"
5189        ],
5190      "description": "Rocky Mountain Oils' Orange Essential Oil is a versatile and uplifting citrus oil cold-pressed from orange peels. This sweet, mellow-scented oil is known for its mood-boosting and calming properties, making it ideal for reducing stress. It's also a natural antimicrobial and anti-inflammatory agent, supporting immune health and digestion.\nOrange Essential Oil offers numerous benefits for skin and hair care. Its refreshing aroma can enhance mental clarity and energy levels when diffused. This multi-purpose oil is perfect for aromatherapy, DIY cleaning products, and topical applications when diluted with a carrier oil. Safe for use around children, Orange Essential Oil is an excellent addition to any natural wellness routine.\n\n","sku": "ORAUSA-S5",
5191      "brand": {
5192        "@type": "Brand",
5193        "name": "Rocky Mountain Oils"
5194      },
5195      "offers": {
5196          "@type": "AggregateOffer",
5197          "availability": "http://schema.org/InStock",
5198          "priceCurrency": "USD",
5199          "highPrice": 23.95,
5200          "lowPrice": 4.95,
5201          "offerCount": 3,
5202          "offers": [{
5203              "@type" : "Offer","sku": "ORAUSA-S5","gtin12": "053176176321","availability" : "http://schema.org/InStock",
5204              "price" : 4.95,
5205              "priceCurrency" : "USD",
5206              "priceValidUntil": "2026-12-31",
5207              "url" : "https:\/\/www.rockymountainoils.com\/products\/orange-essential-oil?variant=52948343062895"
5208            },
5209{
5210              "@type" : "Offer","sku": "ORAUSA-4OZ","gtin12": "053176183183","availability" : "http://schema.org/OutOfStock",
5211              "price" : 23.95,
5212              "priceCurrency" : "USD",
5213              "priceValidUntil": "2026-12-31",
5214              "url" : "https:\/\/www.rockymountainoils.com\/products\/orange-essential-oil?variant=48682130342210"
5215            },
5216{
5217              "@type" : "Offer","sku": "ORAPRE-S15","gtin12": "053176176314","availability" : "http://schema.org/InStock",
5218              "price" : 8.95,
5219              "priceCurrency" : "USD",
5220              "priceValidUntil": "2026-12-31",
5221              "url" : "https:\/\/www.rockymountainoils.com\/products\/orange-essential-oil?variant=44111541993794"
5222            }
5223]
5224      }
5225    }
5226    </script>
5226</div>
5227
5228<style>
5229/* Ensure visually-hidden utility exists even if theme lacks it */
5230.visually-hidden {
5231    position: absolute !important;
5232    width: 1px !important;
5233    height: 1px !important;
5234    padding: 0 !important;
5235    margin: -1px !important;
5236    overflow: hidden !important;
5237    clip: rect(0, 0, 0, 0) !important;
5238    white-space: nowrap !important;
5239    border: 0 !important;
5240}
5241
5242/* Ensure the main product image is tappable on iOS */
5243.main-product-image {
5244    cursor: pointer;
5245    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
5246    touch-action: manipulation;
5247}
5248
5249/* ULTIMATE FIX - Override anything that hides select text */
5250.product-variants-select,
5251.product-variants-select.no-js-only,
5252select.product-variants-select,
5253select[id*="ProductSelect-"] {
5254    color: #1a1a1a !important;
5255    opacity: 1 !important;
5256    background-color: #ffffff !important;
5257    -webkit-text-fill-color: #1a1a1a !important;
5258}
5259
5260.product-variants-select option,
5261select[id*="ProductSelect-"] option {
5262    color: #1a1a1a !important;
5263    background-color: #ffffff !important;
5264    -webkit-text-fill-color: #1a1a1a !important;
5265}
5266
5267.product-variants-select option:checked,
5268select[id*="ProductSelect-"] option:checked {
5269    color: #1a1a1a !important;
5270    background-color: #e8f0fe !important;
5271}
5272
5273.product-variants-select option:disabled,
5274select[id*="ProductSelect-"] option:disabled {
5275    color: #6c6c6c !important;
5276    background-color: #f5f5f5 !important;
5277    -webkit-text-fill-color: #6c6c6c !important;
5278    opacity: 1 !important;
5279}
5280
5281.product-variants-select:focus,
5282select[id*="ProductSelect-"]:focus {
5283    color: #1a1a1a !important;
5284    outline: 3px solid #000000ff !important;
5285}
5286</style>
5287                      </div><div class="item">
5288                    	
5288<script>
5289(function() {
5290    class ProductCardVariantSelector {
5291        constructor(container) {
5292            this.container = container;
5293            if (!this.container) return;
5294
5295            this.form = this.container.querySelector('.product-form');
5296            this.variantSelectors = this.container.querySelectorAll('.variant-select');
5297            this.masterSelect = this.container.querySelector('.product-variants-select');
5298            this.productImage = this.container.querySelector('.main-product-image');
5299            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
5300            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
5301            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
5302            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
5303            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
5304            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
5305            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
5306            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
5307            this.saleTag = this.container.querySelector('.hc-sale-tag');
5308            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
5309
5310            if (!this.masterSelect || !this.variantsJsonScript) return;
5311
5312            try {
5313                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
5314            } catch (e) { return; }
5315
5316            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
5317            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
5318
5319            this.init();
5320        }
5321
5322        init() {
5323            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
5324            if (this.productImage) {
5325                let touchStartX = 0, touchStartY = 0, touchMoved = false;
5326                let lastTouchTime = 0;
5327
5328                this.productImage.style.cursor = 'pointer';
5329                this.productImage.setAttribute('role', 'button');
5330                this.productImage.setAttribute('tabindex', '0');
5331
5332                this.productImage.addEventListener('touchstart', (e) => {
5333                    const t = e.touches[0];
5334                    touchStartX = t.clientX;
5335                    touchStartY = t.clientY;
5336                    touchMoved = false;
5337                }, { passive: true });
5338
5339                this.productImage.addEventListener('touchmove', (e) => {
5340                    const t = e.touches[0];
5341                    if (Math.abs(t.clientX - touchStartX) > 10 ||
5342                        Math.abs(t.clientY - touchStartY) > 10) {
5343                        touchMoved = true;
5344                    }
5345                }, { passive: true });
5346
5347                this.productImage.addEventListener('touchend', (e) => {
5348                    if (touchMoved) return;
5349                    lastTouchTime = Date.now();
5350                    e.preventDefault();
5351                    this.onImageTap(e);
5352                }, { passive: false });
5353
5354                // Desktop / non-touch fallback (with double-fire protection after touchend)
5355                this.productImage.addEventListener('click', (e) => {
5356                    if (Date.now() - lastTouchTime < 500) return;
5357                    this.onImageTap(e);
5358                });
5359
5360                this.productImage.addEventListener('keydown', (e) => {
5361                    if (e.key === 'Enter' || e.key === ' ') {
5362                        e.preventDefault();
5363                        this.onImageTap(e);
5364                    }
5365                });
5366            }
5367
5368            // --- Variant select listeners ---
5369            if (this.variantSelectors.length > 0) {
5370                this.variantSelectors.forEach(select => {
5371                    select.addEventListener('change', this.onVariantChange.bind(this));
5372                });
5373                this.updateProductDetails(this.getCurrentVariant());
5374            }
5375        }
5376
5377        // ============================================================
5378        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
5379        // Currently: navigates to the product page.
5380        // ============================================================
5381        onImageTap(e) {
5382            const link = this.container.querySelector('.product-title-link');
5383            if (link && link.href && link.href !== '#') {
5384                window.location.href = link.href;
5385            }
5386        }
5387        // ============================================================
5388
5389        onVariantChange() {
5390            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
5391            const matchedVariant = this.findMatchingVariant(selectedOptions);
5392
5393            if (matchedVariant) {
5394                this.masterSelect.value = matchedVariant.id;
5395                this.updateProductDetails(matchedVariant);
5396                if (this.statusElement) this.statusElement.textContent = '';
5397            } else {
5398                if (this.statusElement) {
5399                    this.statusElement.textContent = 'No available variant matches your selection';
5400                }
5401                this.updateProductDetails(null);
5402            }
5403        }
5404
5405        findMatchingVariant(selectedOptions) {
5406            return this.productVariants.find(variant => {
5407                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
5408                return selectedOptions.every((val, i) => variant.options[i] === val);
5409            });
5410        }
5411
5412        getCurrentVariant() {
5413            if (!this.masterSelect) return null;
5414            const id = this.masterSelect.value;
5415            if (!id) return null;
5416            return this.productVariants.find(v => String(v.id) === String(id)) || null;
5417        }
5418
5419        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
5420        sizedImageUrl(src, width) {
5421            if (!src) return src;
5422            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
5423        }
5424
5425        updateProductDetails(variant) {
5426            this.container.setAttribute('aria-busy', 'true');
5427
5428            if (!variant) {
5429                if (this.addToCartButton) this.addToCartButton.disabled = true;
5430                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
5431                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
5432                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
5433                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
5434                if (this.saleTag) this.saleTag.style.display = 'none';
5435                this.container.setAttribute('aria-busy', 'false');
5436                return;
5437            }
5438
5439            // 1. Image
5440            if (this.productImage) {
5441                if (variant.featured_image && variant.featured_image.src) {
5442                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
5443                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
5444                    this.productImage.src = sized;
5445                    this.productImage.srcset = '';
5446                    this.productImage.alt = variant.featured_image.alt
5447                        ? variant.featured_image.alt
5448                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
5449                } else if (this.mainImageUrl) {
5450                    this.productImage.src = this.mainImageUrl;
5451                    this.productImage.srcset = '';
5452                    this.productImage.alt = this.productTitle;
5453                }
5454            }
5455
5456            // 2. Price
5457            const moneyFormat = "${{amount}}";
5458            const formatMoney = (cents, format) => {
5459                if (typeof cents === 'string') cents = cents.replace('.', '');
5460                let value = '';
5461                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
5462                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
5463
5464                function formatWithDelimiters(number, precision, thousands, decimal) {
5465                    precision = precision ?? 2;
5466                    thousands = thousands ?? ',';
5467                    decimal = decimal ?? '.';
5468                    if (isNaN(number) || number == null) return 0;
5469                    number = (number / 100.0).toFixed(precision);
5470                    const parts = number.split('.');
5471                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
5472                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
5473                    return dollars + centsPart;
5474                }
5475
5476                switch (formatString.match(placeholderRegex)?.[1]) {
5477                    case 'amount': value = formatWithDelimiters(cents, 2); break;
5478                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
5479                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
5480                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
5481                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
5482                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
5483                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
5484                    default: value = formatWithDelimiters(cents, 2);
5485                }
5486                try {
5487                    return formatString.replace(placeholderRegex, value);
5488                } catch (e) {
5489                    const fallback = (cents / 100.0).toFixed(2);
5490                    return formatString.includes('')
5491                        ? formatString.replace(placeholderRegex, fallback)
5492                        : fallback;
5493                }
5494            };
5495
5496            if (this.currentPriceElement) {
5497                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
5498            }
5499            if (this.comparePriceElement && this.priceWrapper) {
5500                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
5501                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
5502                    this.comparePriceElement.style.display = '';
5503                    this.priceWrapper.classList.add('sale');
5504                } else {
5505                    this.comparePriceElement.textContent = '';
5506                    this.comparePriceElement.style.display = 'none';
5507                    this.priceWrapper.classList.remove('sale');
5508                }
5509            }
5510
5511            // 3. Sale tag
5512            if (this.saleTag) {
5513                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
5514                if (isDiscounted && variant.available) {
5515                    this.saleTag.style.display = 'block';
5516                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
5517                    const span = this.saleTag.querySelector('span');
5518                    if (span) span.textContent = discount + '%';
5519                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
5520                    this.saleTag.setAttribute('role', 'status');
5521                } else {
5522                    this.saleTag.style.display = 'none';
5523                }
5524            }
5525
5526            // 4. Add to cart
5527            if (this.addToCartButton && this.addToCartText) {
5528                if (variant.available) {
5529                    this.addToCartButton.disabled = false;
5530                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
5531                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
5532                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
5533                } else {
5534                    this.addToCartButton.disabled = true;
5535                    this.addToCartText.textContent = 'Sold Out';
5536                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
5537                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
5538                }
5539            }
5540            if (this.notifyMeButton) {
5541                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
5542            }
5543
5544            this.container.setAttribute('aria-busy', 'false');
5545        }
5546    }
5547
5548    function initProductCards(root) {
5549        root = root || document;
5550        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
5551            if (cardContainer.dataset.variantSelectorInit === 'true') return;
5552            cardContainer.dataset.variantSelectorInit = 'true';
5553            new ProductCardVariantSelector(cardContainer);
5554        });
5555    }
5556
5557    if (document.readyState === 'loading') {
5558        document.addEventListener('DOMContentLoaded', () => initProductCards());
5559    } else {
5560        initProductCards();
5561    }
5562
5563    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
5564})();
5565</script>
5565<div class="product-card-wrapper" data-product-id="8025578602818" aria-busy="false">
5566
5567    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818"><!-- WISHLIST BUTTON -->
5568        <div class='xb-wishlist__btn-custom'>
5569            <div
5570                class='xb-wishlist__add'
5571                xb-product-id='8025578602818'
5572                xb-product-title='Peppermint Essential Oil'
5573                xb-product-variant='44111590523202'
5574                xb-is-in-stock='true'
5575                xb-product-handle='peppermint-essential-oil'
5576            >
5577                <button aria-label="Add Peppermint Essential Oil to wishlist" aria-pressed="false">
5578                    <svg
5579                        xmlns='http://www.w3.org/2000/svg'
5580                        width='20'
5581                        height='20'
5582                        viewBox='0 0 24 24'
5583                        fill='none'
5584                        stroke='#FF4A71'
5585                        stroke-width='2'
5586                        stroke-linecap='round'
5587                        stroke-linejoin='round'
5588                        aria-hidden='true'
5589                        focusable='false'
5590                    >
5591                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
5592                    </svg>
5593                </button>
5594            </div>
5595
5596            <div class="xb-wishlist__loading" xb-product-id="8025578602818">
5597                <span class="loading-spinner"></span>
5598            </div>
5599
5600            <div class='xb-wishlist__remove' xb-product-id='8025578602818' xb-is-in-stock='true'>
5601                <button aria-label="Remove Peppermint Essential Oil from wishlist" aria-pressed="true">
5602                    <svg
5603                        xmlns='http://www.w3.org/2000/svg'
5604                        width='20'
5605                        height='20'
5606                        viewBox='0 0 24 24'
5607                        fill='#FF4A71'
5608                        stroke='#FF4A71'
5609                        stroke-width='2'
5610                        stroke-linecap='round'
5611                        stroke-linejoin='round'
5612                        aria-hidden='true'
5613                        focusable='false'
5614                    >
5615                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
5616                    </svg>
5617                </button>
5618            </div>
5619        </div><img
5620              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818"
5621              class="main-product-image"
5622              src="//www.rockymountainoils.com/cdn/shop/files/Peppermint15mlwebsite_d09e348f-d8c6-468f-ae48-e457fb5e6084.png?crop=center&height=300&v=1757138804&width=300"
5623              alt="Affordable Peppermint Essential Oil 15ml"
5624              width="300"
5625              height="300"
5626              loading="lazy"
5627            /></div>
5628
5629    <div class="product-content">
5630        <div class="product-title">
5631            <a href="/products/peppermint-essential-oil" class="product-title-link" aria-label="View Peppermint Essential Oil">
5632                <h2>Peppermint Essential Oil</h2>
5633            </a>
5634        </div><div>
5635                <div class="product-subtitle">
5636                    Strong minty, cool, and invigorating aroma
5637                </div>
5638            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025578602818" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
5639            <div class="product-data-store" style="display:none;"
5640                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/Peppermint15mlwebsite_d09e348f-d8c6-468f-ae48-e457fb5e6084.png?v=1757138804&width=300"
5641                 data-product-title="Peppermint Essential Oil"
5642                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818">
5643            </div>
5644
5645            
5645<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" type="application/json">
5646                [{"id":44111590523202,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"PEPUSA-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":43885337477442,"product_id":8025578602818,"position":1,"created_at":"2024-01-22T08:35:55-07:00","updated_at":"2025-09-06T00:06:44-06:00","alt":"Affordable Peppermint Essential Oil 15ml","width":570,"height":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Peppermint15mlwebsite_d09e348f-d8c6-468f-ae48-e457fb5e6084.png?v=1757138804","variant_ids":[44111590523202]},"available":true,"name":"Peppermint Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":1695,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176444","featured_media":{"alt":"Affordable Peppermint Essential Oil 15ml","id":36355713270082,"position":1,"preview_image":{"aspect_ratio":1.0,"height":570,"width":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Peppermint15mlwebsite_d09e348f-d8c6-468f-ae48-e457fb5e6084.png?v=1757138804"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1187}],"price":1187,"compare_at_price":1695,"per_delivery_price":1187,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1441},{"position":2,"price":1356}],"price":1441,"compare_at_price":1695,"per_delivery_price":1441,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1441},{"position":2,"price":1356}],"price":1441,"compare_at_price":1695,"per_delivery_price":1441,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48687360737602,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"PEPUSA-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":43452627419458,"product_id":8025578602818,"position":3,"created_at":"2023-11-28T09:09:02-07:00","updated_at":"2025-09-06T00:06:44-06:00","alt":"Peppermint Essential Oil - 4oz - Rocky Mountain Oils","width":791,"height":791,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/peppermint-essential-oil-4oz-4.jpg?v=1757138804","variant_ids":[48687360737602]},"available":true,"name":"Peppermint Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":4095,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183190","featured_media":{"alt":"Peppermint Essential Oil - 4oz - Rocky Mountain Oils","id":35909396431170,"position":3,"preview_image":{"aspect_ratio":1.0,"height":791,"width":791,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/peppermint-essential-oil-4oz-4.jpg?v=1757138804"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":2867}],"price":2867,"compare_at_price":4095,"per_delivery_price":2867,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3481},{"position":2,"price":3276}],"price":3481,"compare_at_price":4095,"per_delivery_price":3481,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3686},{"position":2,"price":3481}],"price":3686,"compare_at_price":4095,"per_delivery_price":3686,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3890},{"position":2,"price":3686}],"price":3890,"compare_at_price":4095,"per_delivery_price":3890,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3686},{"position":2,"price":3481}],"price":3686,"compare_at_price":4095,"per_delivery_price":3686,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3890},{"position":2,"price":3686}],"price":3890,"compare_at_price":4095,"per_delivery_price":3890,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3481},{"position":2,"price":3276}],"price":3481,"compare_at_price":4095,"per_delivery_price":3481,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3686},{"position":2,"price":3481}],"price":3686,"compare_at_price":4095,"per_delivery_price":3686,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3890},{"position":2,"price":3686}],"price":3890,"compare_at_price":4095,"per_delivery_price":3890,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48687360770370,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"PEPUSA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":43885332595010,"product_id":8025578602818,"position":5,"created_at":"2024-01-22T08:35:07-07:00","updated_at":"2025-04-11T00:02:05-06:00","alt":"Peppermint Essential Oil - 5ml - Rocky Mountain Oils","width":570,"height":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Pep
5646permint5mlwebsite.png?v=1744351325","variant_ids":[48687360770370]},"available":true,"name":"Peppermint Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":995,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176451","featured_media":{"alt":"Peppermint Essential Oil - 5ml - Rocky Mountain Oils","id":36355708485954,"position":5,"preview_image":{"aspect_ratio":1.0,"height":570,"width":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Peppermint5mlwebsite.png?v=1744351325"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":697}],"price":697,"compare_at_price":995,"per_delivery_price":697,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":846},{"position":2,"price":796}],"price":846,"compare_at_price":995,"per_delivery_price":846,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":896},{"position":2,"price":846}],"price":896,"compare_at_price":995,"per_delivery_price":896,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":945},{"position":2,"price":896}],"price":945,"compare_at_price":995,"per_delivery_price":945,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":896},{"position":2,"price":846}],"price":896,"compare_at_price":995,"per_delivery_price":896,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":945},{"position":2,"price":896}],"price":945,"compare_at_price":995,"per_delivery_price":945,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":846},{"position":2,"price":796}],"price":846,"compare_at_price":995,"per_delivery_price":846,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":896},{"position":2,"price":846}],"price":896,"compare_at_price":995,"per_delivery_price":896,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":945},{"position":2,"price":896}],"price":945,"compare_at_price":995,"per_delivery_price":945,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
5647            </script>
5647<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025578602818" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
5648                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" aria-live="polite" aria-atomic="true">
5649                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" style="display: none;"></span>
5650                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818">$16.95</span>
5651
5652                        
5653                    </div>
5654
5655                    
5656                        <div class="product-option">
5657                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818-0" class="visually-hidden">
5658                                Select Size for Peppermint Essential Oil
5659                            </label>
5660                            <select
5661                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818-0"
5662                                class="variant-select"
5663                                name="options[Size]"
5664                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818"
5665                                data-index="option0"
5666                            ><option
5667                                        value="15ml"
5668                                        selected="selected"
5669                                    >
5670                                        15ml
5671                                    </option><option
5672                                        value="4oz"
5673                                        
5674                                    >
5675                                        4oz
5676                                    </option><option
5677                                        value="5ml"
5678                                        
5679                                    >
5680                                        5ml
5681                                    </option></select>
5682                        </div>
5683                    
5684                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" class="visually-hidden">
5685                Choose variant for Peppermint Essential Oil
5686            </label>
5687            <select
5688                name="id"
5689                data-productid="8025578602818"
5690                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818"
5691                class="product-variants-select no-js-only"
5692            ><option
5693                        value="44111590523202"
5694                         selected="selected" 
5695                        
5696                    >
5697                        15ml - $16.95 
5698                    </option><option
5699                        value="48687360737602"
5700                        
5701                        
5702                    >
5703                        4oz - $40.95 
5704                    </option><option
5705                        value="48687360770370"
5706                        
5707                        
5708                    >
5709                        5ml - $9.95 
5710                    </option></select>
5711
5712            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818">
5713                <input type="hidden" name="quantity" value="1">
5714                
5715
5716                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" aria-live="assertive"></div>
5717
5718                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818" class="visually-hidden">Adds item to your shopping cart</span>
5719
5720                <button
5721                    class="addtocart-btn add-to-cart"
5722                    type="submit"
5723                    name="add"
5724                    aria-label="Add to Cart - Add Peppermint Essential Oil to cart"
5725                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818"
5726                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818"
5727                    
5728                >
5729                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025578602818">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
5730                </button>
5731            </div><input type="hidden" name="product-id" value="8025578602818" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
5731<script type="application/ld+json">
5732    {
5733      "@context": "http://schema.org/",
5734      "@type": "Product",
5735      "name": "Peppermint Essential Oil",
5736      "url": "https:\/\/www.rockymountainoils.com\/products\/peppermint-essential-oil","image": [
5737          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Peppermint15mlwebsite_d09e348f-d8c6-468f-ae48-e457fb5e6084.png?v=1757138804\u0026width=570"
5738        ],
5739      "description": "Peppermint essential oil offers a refreshing and potent solution for various wellness needs. Its cooling properties make it excellent for pain relief when properly diluted, soothing sore muscles and easing headaches. The invigorating scent can boost mental clarity and energy levels, while also helping to alleviate digestive discomfort. Whether diffused for aromatherapy or applied topically, this versatile oil provides natural support for body and mind.\n\n\n\nAdd peppermint essential oil to DIY cleaning sprays to refresh your home and keep it free from germs. Use this oil to boost your mental health as well as encourage creativity and self-confidence. Diffuser peppermint essential oil to uplift your mood, ease tensions, and calm overwhelming emotions.\nOur peppermint essential oil is extracted from the plant’s leaf using steam distillation. This is the most common way to extract oils from a plant. By combining gentle pressure and heated steam, steam distillation releases the essential oil from the plant and into the steam vapor.\nLearn More About Peppermint\n\n\n\nThe statements contained herein have not been evaluated by the Food and Drug Administration. Neither Rocky Mountain Oils nor its products are intended for the purpose of diagnosing, treating, curing or preventing any disease. If you are pregnant, nursing, taking medication, or have a medical condition, consult your physician before using these products.","sku": "PEPUSA-S15",
5740      "brand": {
5741        "@type": "Brand",
5742        "name": "Rocky Mountain Oils"
5743      },
5744      "offers": {
5745          "@type": "AggregateOffer",
5746          "availability": "http://schema.org/InStock",
5747          "priceCurrency": "USD",
5748          "highPrice": 40.95,
5749          "lowPrice": 9.95,
5750          "offerCount": 3,
5751          "offers": [{
5752              "@type" : "Offer","sku": "PEPUSA-S15","gtin12": "053176176444","availability" : "http://schema.org/InStock",
5753              "price" : 16.95,
5754              "priceCurrency" : "USD",
5755              "priceValidUntil": "2026-12-31",
5756              "url" : "https:\/\/www.rockymountainoils.com\/products\/peppermint-essential-oil?variant=44111590523202"
5757            },
5758{
5759              "@type" : "Offer","sku": "PEPUSA-4OZ","gtin12": "053176183190","availability" : "http://schema.org/InStock",
5760              "price" : 40.95,
5761              "priceCurrency" : "USD",
5762              "priceValidUntil": "2026-12-31",
5763              "url" : "https:\/\/www.rockymountainoils.com\/products\/peppermint-essential-oil?variant=48687360737602"
5764            },
5765{
5766              "@type" : "Offer","sku": "PEPUSA-S5","gtin12": "053176176451","availability" : "http://schema.org/InStock",
5767              "price" : 9.95,
5768              "priceCurrency" : "USD",
5769              "priceValidUntil": "2026-12-31",
5770              "url" : "https:\/\/www.rockymountainoils.com\/products\/peppermint-essential-oil?variant=48687360770370"
5771            }
5772]
5773      }
5774    }
5775    </script>
5775</div>
5776
5777<style>
5778/* Ensure visually-hidden utility exists even if theme lacks it */
5779.visually-hidden {
5780    position: absolute !important;
5781    width: 1px !important;
5782    height: 1px !important;
5783    padding: 0 !important;
5784    margin: -1px !important;
5785    overflow: hidden !important;
5786    clip: rect(0, 0, 0, 0) !important;
5787    white-space: nowrap !important;
5788    border: 0 !important;
5789}
5790
5791/* Ensure the main product image is tappable on iOS */
5792.main-product-image {
5793    cursor: pointer;
5794    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
5795    touch-action: manipulation;
5796}
5797
5798/* ULTIMATE FIX - Override anything that hides select text */
5799.product-variants-select,
5800.product-variants-select.no-js-only,
5801select.product-variants-select,
5802select[id*="ProductSelect-"] {
5803    color: #1a1a1a !important;
5804    opacity: 1 !important;
5805    background-color: #ffffff !important;
5806    -webkit-text-fill-color: #1a1a1a !important;
5807}
5808
5809.product-variants-select option,
5810select[id*="ProductSelect-"] option {
5811    color: #1a1a1a !important;
5812    background-color: #ffffff !important;
5813    -webkit-text-fill-color: #1a1a1a !important;
5814}
5815
5816.product-variants-select option:checked,
5817select[id*="ProductSelect-"] option:checked {
5818    color: #1a1a1a !important;
5819    background-color: #e8f0fe !important;
5820}
5821
5822.product-variants-select option:disabled,
5823select[id*="ProductSelect-"] option:disabled {
5824    color: #6c6c6c !important;
5825    background-color: #f5f5f5 !important;
5826    -webkit-text-fill-color: #6c6c6c !important;
5827    opacity: 1 !important;
5828}
5829
5830.product-variants-select:focus,
5831select[id*="ProductSelect-"]:focus {
5832    color: #1a1a1a !important;
5833    outline: 3px solid #000000ff !important;
5834}
5835</style>
5836                      </div><div class="item">
5837                    	
5837<script>
5838(function() {
5839    class ProductCardVariantSelector {
5840        constructor(container) {
5841            this.container = container;
5842            if (!this.container) return;
5843
5844            this.form = this.container.querySelector('.product-form');
5845            this.variantSelectors = this.container.querySelectorAll('.variant-select');
5846            this.masterSelect = this.container.querySelector('.product-variants-select');
5847            this.productImage = this.container.querySelector('.main-product-image');
5848            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
5849            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
5850            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
5851            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
5852            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
5853            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
5854            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
5855            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
5856            this.saleTag = this.container.querySelector('.hc-sale-tag');
5857            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
5858
5859            if (!this.masterSelect || !this.variantsJsonScript) return;
5860
5861            try {
5862                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
5863            } catch (e) { return; }
5864
5865            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
5866            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
5867
5868            this.init();
5869        }
5870
5871        init() {
5872            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
5873            if (this.productImage) {
5874                let touchStartX = 0, touchStartY = 0, touchMoved = false;
5875                let lastTouchTime = 0;
5876
5877                this.productImage.style.cursor = 'pointer';
5878                this.productImage.setAttribute('role', 'button');
5879                this.productImage.setAttribute('tabindex', '0');
5880
5881                this.productImage.addEventListener('touchstart', (e) => {
5882                    const t = e.touches[0];
5883                    touchStartX = t.clientX;
5884                    touchStartY = t.clientY;
5885                    touchMoved = false;
5886                }, { passive: true });
5887
5888                this.productImage.addEventListener('touchmove', (e) => {
5889                    const t = e.touches[0];
5890                    if (Math.abs(t.clientX - touchStartX) > 10 ||
5891                        Math.abs(t.clientY - touchStartY) > 10) {
5892                        touchMoved = true;
5893                    }
5894                }, { passive: true });
5895
5896                this.productImage.addEventListener('touchend', (e) => {
5897                    if (touchMoved) return;
5898                    lastTouchTime = Date.now();
5899                    e.preventDefault();
5900                    this.onImageTap(e);
5901                }, { passive: false });
5902
5903                // Desktop / non-touch fallback (with double-fire protection after touchend)
5904                this.productImage.addEventListener('click', (e) => {
5905                    if (Date.now() - lastTouchTime < 500) return;
5906                    this.onImageTap(e);
5907                });
5908
5909                this.productImage.addEventListener('keydown', (e) => {
5910                    if (e.key === 'Enter' || e.key === ' ') {
5911                        e.preventDefault();
5912                        this.onImageTap(e);
5913                    }
5914                });
5915            }
5916
5917            // --- Variant select listeners ---
5918            if (this.variantSelectors.length > 0) {
5919                this.variantSelectors.forEach(select => {
5920                    select.addEventListener('change', this.onVariantChange.bind(this));
5921                });
5922                this.updateProductDetails(this.getCurrentVariant());
5923            }
5924        }
5925
5926        // ============================================================
5927        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
5928        // Currently: navigates to the product page.
5929        // ============================================================
5930        onImageTap(e) {
5931            const link = this.container.querySelector('.product-title-link');
5932            if (link && link.href && link.href !== '#') {
5933                window.location.href = link.href;
5934            }
5935        }
5936        // ============================================================
5937
5938        onVariantChange() {
5939            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
5940            const matchedVariant = this.findMatchingVariant(selectedOptions);
5941
5942            if (matchedVariant) {
5943                this.masterSelect.value = matchedVariant.id;
5944                this.updateProductDetails(matchedVariant);
5945                if (this.statusElement) this.statusElement.textContent = '';
5946            } else {
5947                if (this.statusElement) {
5948                    this.statusElement.textContent = 'No available variant matches your selection';
5949                }
5950                this.updateProductDetails(null);
5951            }
5952        }
5953
5954        findMatchingVariant(selectedOptions) {
5955            return this.productVariants.find(variant => {
5956                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
5957                return selectedOptions.every((val, i) => variant.options[i] === val);
5958            });
5959        }
5960
5961        getCurrentVariant() {
5962            if (!this.masterSelect) return null;
5963            const id = this.masterSelect.value;
5964            if (!id) return null;
5965            return this.productVariants.find(v => String(v.id) === String(id)) || null;
5966        }
5967
5968        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
5969        sizedImageUrl(src, width) {
5970            if (!src) return src;
5971            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
5972        }
5973
5974        updateProductDetails(variant) {
5975            this.container.setAttribute('aria-busy', 'true');
5976
5977            if (!variant) {
5978                if (this.addToCartButton) this.addToCartButton.disabled = true;
5979                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
5980                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
5981                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
5982                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
5983                if (this.saleTag) this.saleTag.style.display = 'none';
5984                this.container.setAttribute('aria-busy', 'false');
5985                return;
5986            }
5987
5988            // 1. Image
5989            if (this.productImage) {
5990                if (variant.featured_image && variant.featured_image.src) {
5991                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
5992                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
5993                    this.productImage.src = sized;
5994                    this.productImage.srcset = '';
5995                    this.productImage.alt = variant.featured_image.alt
5996                        ? variant.featured_image.alt
5997                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
5998                } else if (this.mainImageUrl) {
5999                    this.productImage.src = this.mainImageUrl;
6000                    this.productImage.srcset = '';
6001                    this.productImage.alt = this.productTitle;
6002                }
6003            }
6004
6005            // 2. Price
6006            const moneyFormat = "${{amount}}";
6007            const formatMoney = (cents, format) => {
6008                if (typeof cents === 'string') cents = cents.replace('.', '');
6009                let value = '';
6010                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
6011                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
6012
6013                function formatWithDelimiters(number, precision, thousands, decimal) {
6014                    precision = precision ?? 2;
6015                    thousands = thousands ?? ',';
6016                    decimal = decimal ?? '.';
6017                    if (isNaN(number) || number == null) return 0;
6018                    number = (number / 100.0).toFixed(precision);
6019                    const parts = number.split('.');
6020                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
6021                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
6022                    return dollars + centsPart;
6023                }
6024
6025                switch (formatString.match(placeholderRegex)?.[1]) {
6026                    case 'amount': value = formatWithDelimiters(cents, 2); break;
6027                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
6028                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
6029                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
6030                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
6031                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
6032                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
6033                    default: value = formatWithDelimiters(cents, 2);
6034                }
6035                try {
6036                    return formatString.replace(placeholderRegex, value);
6037                } catch (e) {
6038                    const fallback = (cents / 100.0).toFixed(2);
6039                    return formatString.includes('')
6040                        ? formatString.replace(placeholderRegex, fallback)
6041                        : fallback;
6042                }
6043            };
6044
6045            if (this.currentPriceElement) {
6046                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
6047            }
6048            if (this.comparePriceElement && this.priceWrapper) {
6049                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
6050                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
6051                    this.comparePriceElement.style.display = '';
6052                    this.priceWrapper.classList.add('sale');
6053                } else {
6054                    this.comparePriceElement.textContent = '';
6055                    this.comparePriceElement.style.display = 'none';
6056                    this.priceWrapper.classList.remove('sale');
6057                }
6058            }
6059
6060            // 3. Sale tag
6061            if (this.saleTag) {
6062                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
6063                if (isDiscounted && variant.available) {
6064                    this.saleTag.style.display = 'block';
6065                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
6066                    const span = this.saleTag.querySelector('span');
6067                    if (span) span.textContent = discount + '%';
6068                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
6069                    this.saleTag.setAttribute('role', 'status');
6070                } else {
6071                    this.saleTag.style.display = 'none';
6072                }
6073            }
6074
6075            // 4. Add to cart
6076            if (this.addToCartButton && this.addToCartText) {
6077                if (variant.available) {
6078                    this.addToCartButton.disabled = false;
6079                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
6080                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
6081                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
6082                } else {
6083                    this.addToCartButton.disabled = true;
6084                    this.addToCartText.textContent = 'Sold Out';
6085                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
6086                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
6087                }
6088            }
6089            if (this.notifyMeButton) {
6090                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
6091            }
6092
6093            this.container.setAttribute('aria-busy', 'false');
6094        }
6095    }
6096
6097    function initProductCards(root) {
6098        root = root || document;
6099        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
6100            if (cardContainer.dataset.variantSelectorInit === 'true') return;
6101            cardContainer.dataset.variantSelectorInit = 'true';
6102            new ProductCardVariantSelector(cardContainer);
6103        });
6104    }
6105
6106    if (document.readyState === 'loading') {
6107        document.addEventListener('DOMContentLoaded', () => initProductCards());
6108    } else {
6109        initProductCards();
6110    }
6111
6112    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
6113})();
6114</script>
6114<div class="product-card-wrapper" data-product-id="8025569132866" aria-busy="false">
6115
6116    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866"><!-- WISHLIST BUTTON -->
6117        <div class='xb-wishlist__btn-custom'>
6118            <div
6119                class='xb-wishlist__add'
6120                xb-product-id='8025569132866'
6121                xb-product-title='Purify Essential Oil Blend'
6122                xb-product-variant='44111543894338'
6123                xb-is-in-stock='true'
6124                xb-product-handle='purify-essential-oil'
6125            >
6126                <button aria-label="Add Purify Essential Oil Blend to wishlist" aria-pressed="false">
6127                    <svg
6128                        xmlns='http://www.w3.org/2000/svg'
6129                        width='20'
6130                        height='20'
6131                        viewBox='0 0 24 24'
6132                        fill='none'
6133                        stroke='#FF4A71'
6134                        stroke-width='2'
6135                        stroke-linecap='round'
6136                        stroke-linejoin='round'
6137                        aria-hidden='true'
6138                        focusable='false'
6139                    >
6140                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
6141                    </svg>
6142                </button>
6143            </div>
6144
6145            <div class="xb-wishlist__loading" xb-product-id="8025569132866">
6146                <span class="loading-spinner"></span>
6147            </div>
6148
6149            <div class='xb-wishlist__remove' xb-product-id='8025569132866' xb-is-in-stock='true'>
6150                <button aria-label="Remove Purify Essential Oil Blend from wishlist" aria-pressed="true">
6151                    <svg
6152                        xmlns='http://www.w3.org/2000/svg'
6153                        width='20'
6154                        height='20'
6155                        viewBox='0 0 24 24'
6156                        fill='#FF4A71'
6157                        stroke='#FF4A71'
6158                        stroke-width='2'
6159                        stroke-linecap='round'
6160                        stroke-linejoin='round'
6161                        aria-hidden='true'
6162                        focusable='false'
6163                    >
6164                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
6165                    </svg>
6166                </button>
6167            </div>
6168        </div><img
6169              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866"
6170              class="main-product-image"
6171              src="//www.rockymountainoils.com/cdn/shop/files/purify-essential-oil-blend-neat-15ml-1.png?crop=center&height=300&v=1765782157&width=300"
6172              alt="Purify Essential Oil Blend Neat - 15ml - Rocky Mountain Oils"
6173              width="300"
6174              height="300"
6175              loading="lazy"
6176            /></div>
6177
6178    <div class="product-content">
6179        <div class="product-title">
6180            <a href="/products/purify-essential-oil" class="product-title-link" aria-label="View Purify Essential Oil Blend">
6181                <h2>Purify Essential Oil Blend</h2>
6182            </a>
6183        </div><div>
6184                <div class="product-subtitle">
6185                    Helps deodorize, disinfect, and freshen any space.
6186                </div>
6187            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025569132866" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
6188            <div class="product-data-store" style="display:none;"
6189                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/purify-essential-oil-blend-neat-15ml-1.png?v=1765782157&width=300"
6190                 data-product-title="Purify Essential Oil Blend"
6191                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866">
6192            </div>
6193
6194            
6194<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" type="application/json">
6195                [{"id":44111543894338,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"PURNEA-B15","requires_shipping":true,"taxable":true,"featured_image":{"id":44621295485250,"product_id":8025569132866,"position":1,"created_at":"2024-03-27T10:18:42-06:00","updated_at":"2025-12-15T00:02:37-07:00","alt":"Purify Essential Oil Blend Neat - 15ml - Rocky Mountain Oils","width":574,"height":574,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/purify-essential-oil-blend-neat-15ml-1.png?v=1765782157","variant_ids":[44111543894338]},"available":true,"name":"Purify Essential Oil Blend - 15ml","public_title":"15ml","options":["15ml"],"price":2045,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176178523","featured_media":{"alt":"Purify Essential Oil Blend Neat - 15ml - Rocky Mountain Oils","id":37105234837826,"position":1,"preview_image":{"aspect_ratio":1.0,"height":574,"width":574,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/purify-essential-oil-blend-neat-15ml-1.png?v=1765782157"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1432}],"price":1432,"compare_at_price":2045,"per_delivery_price":1432,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1738},{"position":2,"price":1636}],"price":1738,"compare_at_price":2045,"per_delivery_price":1738,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1738},{"position":2,"price":1636}],"price":1738,"compare_at_price":2045,"per_delivery_price":1738,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1841},{"position":2,"price":1738}],"price":1841,"compare_at_price":2045,"per_delivery_price":1841,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1943},{"position":2,"price":1841}],"price":1943,"compare_at_price":2045,"per_delivery_price":1943,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48953396101442,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"PURNEA-B5","requires_shipping":true,"taxable":true,"featured_image":{"id":44621301154114,"product_id":8025569132866,"position":4,"created_at":"2024-03-27T10:19:10-06:00","updated_at":"2025-12-15T00:02:37-07:00","alt":"Purify Essential Oil Blend Neat - 5ml - Rocky Mountain Oils","width":562,"height":562,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/purify-essential-oil-blend-neat-5ml-1.png?v=1765782157","variant_ids":[48953396101442]},"available":true,"name":"Purify Essential Oil Blend - 5ml","public_title":"5ml","options":["5ml"],"price":1020,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176178530","featured_media":{"alt":"Purify Essential Oil Blend Neat - 5ml - Rocky Mountain Oils","id":37105240080706,"position":4,"preview_image":{"aspect_ratio":1.0,"height":562,"width":562,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/purify-essential-oil-blend-neat-5ml-1.png?v=1765782157"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":714}],"price":714,"compare_at_price":1020,"per_delivery_price":714,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":867},{"position":2,"price":816}],"price":867,"compare_at_price":1020,"per_delivery_price":867,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":918},{"position":2,"price":867}],"price":918,"compare_at_price":1020,"per_delivery_price":918,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":969},{"position":2,"price":918}],"price":969,"compare_at_price":1020,"per_delivery_price":969,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":918},{"position":2,"price":867}],"price":918,"compare_at_price":1020,"per_delivery_price":918,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":969},{"position":2,"price":918}],"price":969,"compare_at_price":1020,"per_delivery_price":969,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":867},{"position":2,"price":816}],"price":867,"compare_at_price":1020,"per_delivery_price":867,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":918},{"position":2,"price":867}],"price":918,"compare_at_price":1020,"per_delivery_price":918,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":969},{"position":2,"price":918}],"price":969,"compare_at_price":1020,"per_delivery_price":969,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
6196            </script>
6196<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025569132866" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
6197                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" aria-live="polite" aria-atomic="true">
6198                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" style="display: none;"></span>
6199                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866">$20.45</span>
6200
6201                        
6202                    </div>
6203
6204                    
6205                        <div class="product-option">
6206                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866-0" class="visually-hidden">
6207                                Select Size for Purify Essential Oil Blend
6208                            </label>
6209                            <select
6210                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866-0"
6211                                class="variant-select"
6212                                name="options[Size]"
6213                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866"
6214                                data-index="option0"
6215                            ><option
6216                                        value="15ml"
6217                                        selected="selected"
6218                                    >
6219                                        15ml
6220                                    </option><option
6221                                        value="5ml"
6222                                        
6223                                    >
6224                                        5ml
6225                                    </option></select>
6226                        </div>
6227                    
6228                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" class="visually-hidden">
6229                Choose variant for Purify Essential Oil Blend
6230            </label>
6231            <select
6232                name="id"
6233                data-productid="8025569132866"
6234                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866"
6235                class="product-variants-select no-js-only"
6236            ><option
6237                        value="44111543894338"
6238                         selected="selected" 
6239                        
6240                    >
6241                        15ml - $20.45 
6242                    </option><option
6243                        value="48953396101442"
6244                        
6245                        
6246                    >
6247                        5ml - $10.20 
6248                    </option></select>
6249
6250            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866">
6251                <input type="hidden" name="quantity" value="1">
6252                
6253
6254                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" aria-live="assertive"></div>
6255
6256                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866" class="visually-hidden">Adds item to your shopping cart</span>
6257
6258                <button
6259                    class="addtocart-btn add-to-cart"
6260                    type="submit"
6261                    name="add"
6262                    aria-label="Add to Cart - Add Purify Essential Oil Blend to cart"
6263                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866"
6264                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866"
6265                    
6266                >
6267                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569132866">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
6268                </button>
6269            </div><input type="hidden" name="product-id" value="8025569132866" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
6269<script type="application/ld+json">
6270    {
6271      "@context": "http://schema.org/",
6272      "@type": "Product",
6273      "name": "Purify Essential Oil Blend",
6274      "url": "https:\/\/www.rockymountainoils.com\/products\/purify-essential-oil","image": [
6275          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/purify-essential-oil-blend-neat-15ml-1.png?v=1765782157\u0026width=574"
6276        ],
6277      "description": "Purify Essential Oil Blend combines potent air-purifying oils to naturally cleanse your home. This powerful blend of lemongrass, tea tree, rosemary, lavender, myrtle, and citronella essential oils deodorizes, disinfects, and freshens any space without harsh chemicals.\nUse Purify to eliminate odors, help sanitize surfaces, deter insects, and create a clean, inviting atmosphere. Its aromatherapeutic properties can also help reduce stress and promote a sense of calm. Versatile and effective, Purify is an essential addition to your natural cleaning toolkit.","sku": "PURNEA-B15",
6278      "brand": {
6279        "@type": "Brand",
6280        "name": "Rocky Mountain Oils"
6281      },
6282      "offers": {
6283          "@type": "AggregateOffer",
6284          "availability": "http://schema.org/InStock",
6285          "priceCurrency": "USD",
6286          "highPrice": 20.45,
6287          "lowPrice": 10.2,
6288          "offerCount": 2,
6289          "offers": [{
6290              "@type" : "Offer","sku": "PURNEA-B15","gtin12": "053176178523","availability" : "http://schema.org/InStock",
6291              "price" : 20.45,
6292              "priceCurrency" : "USD",
6293              "priceValidUntil": "2026-12-31",
6294              "url" : "https:\/\/www.rockymountainoils.com\/products\/purify-essential-oil?variant=44111543894338"
6295            },
6296{
6297              "@type" : "Offer","sku": "PURNEA-B5","gtin12": "053176178530","availability" : "http://schema.org/InStock",
6298              "price" : 10.2,
6299              "priceCurrency" : "USD",
6300              "priceValidUntil": "2026-12-31",
6301              "url" : "https:\/\/www.rockymountainoils.com\/products\/purify-essential-oil?variant=48953396101442"
6302            }
6303]
6304      }
6305    }
6306    </script>
6306</div>
6307
6308<style>
6309/* Ensure visually-hidden utility exists even if theme lacks it */
6310.visually-hidden {
6311    position: absolute !important;
6312    width: 1px !important;
6313    height: 1px !important;
6314    padding: 0 !important;
6315    margin: -1px !important;
6316    overflow: hidden !important;
6317    clip: rect(0, 0, 0, 0) !important;
6318    white-space: nowrap !important;
6319    border: 0 !important;
6320}
6321
6322/* Ensure the main product image is tappable on iOS */
6323.main-product-image {
6324    cursor: pointer;
6325    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
6326    touch-action: manipulation;
6327}
6328
6329/* ULTIMATE FIX - Override anything that hides select text */
6330.product-variants-select,
6331.product-variants-select.no-js-only,
6332select.product-variants-select,
6333select[id*="ProductSelect-"] {
6334    color: #1a1a1a !important;
6335    opacity: 1 !important;
6336    background-color: #ffffff !important;
6337    -webkit-text-fill-color: #1a1a1a !important;
6338}
6339
6340.product-variants-select option,
6341select[id*="ProductSelect-"] option {
6342    color: #1a1a1a !important;
6343    background-color: #ffffff !important;
6344    -webkit-text-fill-color: #1a1a1a !important;
6345}
6346
6347.product-variants-select option:checked,
6348select[id*="ProductSelect-"] option:checked {
6349    color: #1a1a1a !important;
6350    background-color: #e8f0fe !important;
6351}
6352
6353.product-variants-select option:disabled,
6354select[id*="ProductSelect-"] option:disabled {
6355    color: #6c6c6c !important;
6356    background-color: #f5f5f5 !important;
6357    -webkit-text-fill-color: #6c6c6c !important;
6358    opacity: 1 !important;
6359}
6360
6361.product-variants-select:focus,
6362select[id*="ProductSelect-"]:focus {
6363    color: #1a1a1a !important;
6364    outline: 3px solid #000000ff !important;
6365}
6366</style>
6367                      </div><div class="item">
6368                    	
6368<script>
6369(function() {
6370    class ProductCardVariantSelector {
6371        constructor(container) {
6372            this.container = container;
6373            if (!this.container) return;
6374
6375            this.form = this.container.querySelector('.product-form');
6376            this.variantSelectors = this.container.querySelectorAll('.variant-select');
6377            this.masterSelect = this.container.querySelector('.product-variants-select');
6378            this.productImage = this.container.querySelector('.main-product-image');
6379            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
6380            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
6381            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
6382            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
6383            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
6384            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
6385            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
6386            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
6387            this.saleTag = this.container.querySelector('.hc-sale-tag');
6388            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
6389
6390            if (!this.masterSelect || !this.variantsJsonScript) return;
6391
6392            try {
6393                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
6394            } catch (e) { return; }
6395
6396            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
6397            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
6398
6399            this.init();
6400        }
6401
6402        init() {
6403            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
6404            if (this.productImage) {
6405                let touchStartX = 0, touchStartY = 0, touchMoved = false;
6406                let lastTouchTime = 0;
6407
6408                this.productImage.style.cursor = 'pointer';
6409                this.productImage.setAttribute('role', 'button');
6410                this.productImage.setAttribute('tabindex', '0');
6411
6412                this.productImage.addEventListener('touchstart', (e) => {
6413                    const t = e.touches[0];
6414                    touchStartX = t.clientX;
6415                    touchStartY = t.clientY;
6416                    touchMoved = false;
6417                }, { passive: true });
6418
6419                this.productImage.addEventListener('touchmove', (e) => {
6420                    const t = e.touches[0];
6421                    if (Math.abs(t.clientX - touchStartX) > 10 ||
6422                        Math.abs(t.clientY - touchStartY) > 10) {
6423                        touchMoved = true;
6424                    }
6425                }, { passive: true });
6426
6427                this.productImage.addEventListener('touchend', (e) => {
6428                    if (touchMoved) return;
6429                    lastTouchTime = Date.now();
6430                    e.preventDefault();
6431                    this.onImageTap(e);
6432                }, { passive: false });
6433
6434                // Desktop / non-touch fallback (with double-fire protection after touchend)
6435                this.productImage.addEventListener('click', (e) => {
6436                    if (Date.now() - lastTouchTime < 500) return;
6437                    this.onImageTap(e);
6438                });
6439
6440                this.productImage.addEventListener('keydown', (e) => {
6441                    if (e.key === 'Enter' || e.key === ' ') {
6442                        e.preventDefault();
6443                        this.onImageTap(e);
6444                    }
6445                });
6446            }
6447
6448            // --- Variant select listeners ---
6449            if (this.variantSelectors.length > 0) {
6450                this.variantSelectors.forEach(select => {
6451                    select.addEventListener('change', this.onVariantChange.bind(this));
6452                });
6453                this.updateProductDetails(this.getCurrentVariant());
6454            }
6455        }
6456
6457        // ============================================================
6458        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
6459        // Currently: navigates to the product page.
6460        // ============================================================
6461        onImageTap(e) {
6462            const link = this.container.querySelector('.product-title-link');
6463            if (link && link.href && link.href !== '#') {
6464                window.location.href = link.href;
6465            }
6466        }
6467        // ============================================================
6468
6469        onVariantChange() {
6470            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
6471            const matchedVariant = this.findMatchingVariant(selectedOptions);
6472
6473            if (matchedVariant) {
6474                this.masterSelect.value = matchedVariant.id;
6475                this.updateProductDetails(matchedVariant);
6476                if (this.statusElement) this.statusElement.textContent = '';
6477            } else {
6478                if (this.statusElement) {
6479                    this.statusElement.textContent = 'No available variant matches your selection';
6480                }
6481                this.updateProductDetails(null);
6482            }
6483        }
6484
6485        findMatchingVariant(selectedOptions) {
6486            return this.productVariants.find(variant => {
6487                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
6488                return selectedOptions.every((val, i) => variant.options[i] === val);
6489            });
6490        }
6491
6492        getCurrentVariant() {
6493            if (!this.masterSelect) return null;
6494            const id = this.masterSelect.value;
6495            if (!id) return null;
6496            return this.productVariants.find(v => String(v.id) === String(id)) || null;
6497        }
6498
6499        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
6500        sizedImageUrl(src, width) {
6501            if (!src) return src;
6502            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
6503        }
6504
6505        updateProductDetails(variant) {
6506            this.container.setAttribute('aria-busy', 'true');
6507
6508            if (!variant) {
6509                if (this.addToCartButton) this.addToCartButton.disabled = true;
6510                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
6511                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
6512                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
6513                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
6514                if (this.saleTag) this.saleTag.style.display = 'none';
6515                this.container.setAttribute('aria-busy', 'false');
6516                return;
6517            }
6518
6519            // 1. Image
6520            if (this.productImage) {
6521                if (variant.featured_image && variant.featured_image.src) {
6522                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
6523                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
6524                    this.productImage.src = sized;
6525                    this.productImage.srcset = '';
6526                    this.productImage.alt = variant.featured_image.alt
6527                        ? variant.featured_image.alt
6528                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
6529                } else if (this.mainImageUrl) {
6530                    this.productImage.src = this.mainImageUrl;
6531                    this.productImage.srcset = '';
6532                    this.productImage.alt = this.productTitle;
6533                }
6534            }
6535
6536            // 2. Price
6537            const moneyFormat = "${{amount}}";
6538            const formatMoney = (cents, format) => {
6539                if (typeof cents === 'string') cents = cents.replace('.', '');
6540                let value = '';
6541                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
6542                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
6543
6544                function formatWithDelimiters(number, precision, thousands, decimal) {
6545                    precision = precision ?? 2;
6546                    thousands = thousands ?? ',';
6547                    decimal = decimal ?? '.';
6548                    if (isNaN(number) || number == null) return 0;
6549                    number = (number / 100.0).toFixed(precision);
6550                    const parts = number.split('.');
6551                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
6552                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
6553                    return dollars + centsPart;
6554                }
6555
6556                switch (formatString.match(placeholderRegex)?.[1]) {
6557                    case 'amount': value = formatWithDelimiters(cents, 2); break;
6558                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
6559                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
6560                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
6561                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
6562                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
6563                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
6564                    default: value = formatWithDelimiters(cents, 2);
6565                }
6566                try {
6567                    return formatString.replace(placeholderRegex, value);
6568                } catch (e) {
6569                    const fallback = (cents / 100.0).toFixed(2);
6570                    return formatString.includes('')
6571                        ? formatString.replace(placeholderRegex, fallback)
6572                        : fallback;
6573                }
6574            };
6575
6576            if (this.currentPriceElement) {
6577                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
6578            }
6579            if (this.comparePriceElement && this.priceWrapper) {
6580                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
6581                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
6582                    this.comparePriceElement.style.display = '';
6583                    this.priceWrapper.classList.add('sale');
6584                } else {
6585                    this.comparePriceElement.textContent = '';
6586                    this.comparePriceElement.style.display = 'none';
6587                    this.priceWrapper.classList.remove('sale');
6588                }
6589            }
6590
6591            // 3. Sale tag
6592            if (this.saleTag) {
6593                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
6594                if (isDiscounted && variant.available) {
6595                    this.saleTag.style.display = 'block';
6596                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
6597                    const span = this.saleTag.querySelector('span');
6598                    if (span) span.textContent = discount + '%';
6599                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
6600                    this.saleTag.setAttribute('role', 'status');
6601                } else {
6602                    this.saleTag.style.display = 'none';
6603                }
6604            }
6605
6606            // 4. Add to cart
6607            if (this.addToCartButton && this.addToCartText) {
6608                if (variant.available) {
6609                    this.addToCartButton.disabled = false;
6610                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
6611                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
6612                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
6613                } else {
6614                    this.addToCartButton.disabled = true;
6615                    this.addToCartText.textContent = 'Sold Out';
6616                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
6617                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
6618                }
6619            }
6620            if (this.notifyMeButton) {
6621                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
6622            }
6623
6624            this.container.setAttribute('aria-busy', 'false');
6625        }
6626    }
6627
6628    function initProductCards(root) {
6629        root = root || document;
6630        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
6631            if (cardContainer.dataset.variantSelectorInit === 'true') return;
6632            cardContainer.dataset.variantSelectorInit = 'true';
6633            new ProductCardVariantSelector(cardContainer);
6634        });
6635    }
6636
6637    if (document.readyState === 'loading') {
6638        document.addEventListener('DOMContentLoaded', () => initProductCards());
6639    } else {
6640        initProductCards();
6641    }
6642
6643    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
6644})();
6645</script>
6645<div class="product-card-wrapper" data-product-id="8025569296706" aria-busy="false">
6646
6647    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706"><!-- WISHLIST BUTTON -->
6648        <div class='xb-wishlist__btn-custom'>
6649            <div
6650                class='xb-wishlist__add'
6651                xb-product-id='8025569296706'
6652                xb-product-title='Rosemary Essential Oil'
6653                xb-product-variant='44111544451394'
6654                xb-is-in-stock='true'
6655                xb-product-handle='rosemary-essential-oil'
6656            >
6657                <button aria-label="Add Rosemary Essential Oil to wishlist" aria-pressed="false">
6658                    <svg
6659                        xmlns='http://www.w3.org/2000/svg'
6660                        width='20'
6661                        height='20'
6662                        viewBox='0 0 24 24'
6663                        fill='none'
6664                        stroke='#FF4A71'
6665                        stroke-width='2'
6666                        stroke-linecap='round'
6667                        stroke-linejoin='round'
6668                        aria-hidden='true'
6669                        focusable='false'
6670                    >
6671                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
6672                    </svg>
6673                </button>
6674            </div>
6675
6676            <div class="xb-wishlist__loading" xb-product-id="8025569296706">
6677                <span class="loading-spinner"></span>
6678            </div>
6679
6680            <div class='xb-wishlist__remove' xb-product-id='8025569296706' xb-is-in-stock='true'>
6681                <button aria-label="Remove Rosemary Essential Oil from wishlist" aria-pressed="true">
6682                    <svg
6683                        xmlns='http://www.w3.org/2000/svg'
6684                        width='20'
6685                        height='20'
6686                        viewBox='0 0 24 24'
6687                        fill='#FF4A71'
6688                        stroke='#FF4A71'
6689                        stroke-width='2'
6690                        stroke-linecap='round'
6691                        stroke-linejoin='round'
6692                        aria-hidden='true'
6693                        focusable='false'
6694                    >
6695                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
6696                    </svg>
6697                </button>
6698            </div>
6699        </div><img
6700              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706"
6701              class="main-product-image"
6702              src="//www.rockymountainoils.com/cdn/shop/files/Rosemary15mlSingle.jpg?crop=center&height=300&v=1765177444&width=300"
6703              alt="Rosemary Essential Oil  15ml"
6704              width="300"
6705              height="300"
6706              loading="lazy"
6707            /></div>
6708
6709    <div class="product-content">
6710        <div class="product-title">
6711            <a href="/products/rosemary-essential-oil" class="product-title-link" aria-label="View Rosemary Essential Oil">
6712                <h2>Rosemary Essential Oil</h2>
6713            </a>
6714        </div><div>
6715                <div class="product-subtitle">
6716                    Herbaceous, woodsy; promotes hair growth; relieves sore muscle.
6717                </div>
6718            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025569296706" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
6719            <div class="product-data-store" style="display:none;"
6720                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/Rosemary15mlSingle.jpg?v=1765177444&width=300"
6721                 data-product-title="Rosemary Essential Oil"
6722                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706">
6723            </div>
6724
6725            
6725<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" type="application/json">
6726                [{"id":44111544451394,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"ROSHUN-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":43885244776770,"product_id":8025569296706,"position":1,"created_at":"2024-01-22T08:17:19-07:00","updated_at":"2025-12-08T00:04:04-07:00","alt":"Rosemary Essential Oil  15ml","width":570,"height":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rosemary15mlSingle.jpg?v=1765177444","variant_ids":[44111544451394]},"available":true,"name":"Rosemary Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":1195,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176581","featured_media":{"alt":"Rosemary Essential Oil  15ml","id":36355618799938,"position":1,"preview_image":{"aspect_ratio":1.0,"height":570,"width":570,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rosemary15mlSingle.jpg?v=1765177444"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":837}],"price":837,"compare_at_price":1195,"per_delivery_price":837,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1016},{"position":2,"price":956}],"price":1016,"compare_at_price":1195,"per_delivery_price":1016,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1076},{"position":2,"price":1016}],"price":1076,"compare_at_price":1195,"per_delivery_price":1076,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1135},{"position":2,"price":1076}],"price":1135,"compare_at_price":1195,"per_delivery_price":1135,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1076},{"position":2,"price":1016}],"price":1076,"compare_at_price":1195,"per_delivery_price":1076,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1135},{"position":2,"price":1076}],"price":1135,"compare_at_price":1195,"per_delivery_price":1135,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1016},{"position":2,"price":956}],"price":1016,"compare_at_price":1195,"per_delivery_price":1016,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1076},{"position":2,"price":1016}],"price":1076,"compare_at_price":1195,"per_delivery_price":1076,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1135},{"position":2,"price":1076}],"price":1135,"compare_at_price":1195,"per_delivery_price":1135,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48687666659650,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"ROSHUN-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":44364646547778,"product_id":8025569296706,"position":3,"created_at":"2024-03-06T11:53:42-07:00","updated_at":"2025-12-08T00:04:04-07:00","alt":"Rosemary Essential Oil - 4oz - Rocky Mountain Oils","width":774,"height":774,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/rosemary-essential-oil-4oz-1.jpg?v=1765177444","variant_ids":[48687666659650]},"available":true,"name":"Rosemary Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":4095,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183220","featured_media":{"alt":"Rosemary Essential Oil - 4oz - Rocky Mountain Oils","id":36843541922114,"position":3,"preview_image":{"aspect_ratio":1.0,"height":774,"width":774,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/rosemary-essential-oil-4oz-1.jpg?v=1765177444"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":2867}],"price":2867,"compare_at_price":4095,"per_delivery_price":2867,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3481},{"position":2,"price":3276}],"price":3481,"compare_at_price":4095,"per_delivery_price":3481,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3686},{"position":2,"price":3481}],"price":3686,"compare_at_price":4095,"per_delivery_price":3686,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3890},{"position":2,"price":3686}],"price":3890,"compare_at_price":4095,"per_delivery_price":3890,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3686},{"position":2,"price":3481}],"price":3686,"compare_at_price":4095,"per_delivery_price":3686,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3890},{"position":2,"price":3686}],"price":3890,"compare_at_price":4095,"per_delivery_price":3890,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3481},{"position":2,"price":3276}],"price":3481,"compare_at_price":4095,"per_delivery_price":3481,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3686},{"position":2,"price":3481}],"price":3686,"compare_at_price":4095,"per_delivery_price":3686,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3890},{"position":2,"price":3686}],"price":3890,"compare_at_price":4095,"per_delivery_price":3890,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52948338508143,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"ROSHUN-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":43885248414018,"product_id":8025569296706,"position":4,"created_at":"2024-01-22T08:17:45-07:00","updated_at":"2024-03-07T09:37:55-07:00","alt":"Rosemary Essential Oil - 5ml - Rocky Mountain Oils","width":571,"height":571,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rosemary5mlSingle.jpg?v=1709829475","variant_ids":[52948338508143]},"available":true,"name":"Rosemary Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":695,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176598","featured_media":{"alt":"Rosemary Essential Oil - 5ml - Rocky Mountain Oils","id":36355622404418,"position":4,"preview_image":{"aspect_ratio":1.0,"height":571,"width":571,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rosemary5mlSingle.jpg?v=1709829475"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":487}],"price":487,"compare_at_price":695,"per_delivery_price":487,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":591},{"position":2,"price":556}],"price":591,"compare_at_price":695,"per_delivery_price":591,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":626},{"position":2,"price":591}],"price":626,"compare_at_price":695,"per_delivery_price":626,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":660},{"position":2,"price":626}],"price":660,"compare_at_price":695,"per_delivery_price":660,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":626},{"position":2,"price":591}],"price":626,"compare_at_price":695,"per_delivery_price":626,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":660},{"position":2,"price":626}],"price":660,"compare_at_price":695,"per_delivery_price":660,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":591},{"position":2,"price":556}],"price":591,"compare_at_price":695,"per_delivery_price":591,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":626},{"position":2,"price":591}],"price":626,"compare_at_price":695,"per_delivery_price":626,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":660},{"position":2,"price":626}],"price":660,"compare_at_price":695,"per_delivery_price":660,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
6727            </script>
6727<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025569296706" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
6728                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" aria-live="polite" aria-atomic="true">
6729                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" style="display: none;"></span>
6730                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706">$11.95</span>
6731
6732                        
6733                    </div>
6734
6735                    
6736                        <div class="product-option">
6737                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706-0" class="visually-hidden">
6738                                Select Size for Rosemary Essential Oil
6739                            </label>
6740                            <select
6741                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706-0"
6742                                class="variant-select"
6743                                name="options[Size]"
6744                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706"
6745                                data-index="option0"
6746                            ><option
6747                                        value="15ml"
6748                                        selected="selected"
6749                                    >
6750                                        15ml
6751                                    </option><option
6752                                        value="4oz"
6753                                        
6754                                    >
6755                                        4oz
6756                                    </option><option
6757                                        value="5ml"
6758                                        
6759                                    >
6760                                        5ml
6761                                    </option></select>
6762                        </div>
6763                    
6764                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" class="visually-hidden">
6765                Choose variant for Rosemary Essential Oil
6766            </label>
6767            <select
6768                name="id"
6769                data-productid="8025569296706"
6770                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706"
6771                class="product-variants-select no-js-only"
6772            ><option
6773                        value="44111544451394"
6774                         selected="selected" 
6775                        
6776                    >
6777                        15ml - $11.95 
6778                    </option><option
6779                        value="48687666659650"
6780                        
6781                        
6782                    >
6783                        4oz - $40.95 
6784                    </option><option
6785                        value="52948338508143"
6786                        
6787                        
6788                    >
6789                        5ml - $6.95 
6790                    </option></select>
6791
6792            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706">
6793                <input type="hidden" name="quantity" value="1">
6794                
6795
6796                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" aria-l
6796ive="assertive"></div>
6797
6798                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706" class="visually-hidden">Adds item to your shopping cart</span>
6799
6800                <button
6801                    class="addtocart-btn add-to-cart"
6802                    type="submit"
6803                    name="add"
6804                    aria-label="Add to Cart - Add Rosemary Essential Oil to cart"
6805                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706"
6806                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706"
6807                    
6808                >
6809                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025569296706">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
6810                </button>
6811            </div><input type="hidden" name="product-id" value="8025569296706" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
6811<script type="application/ld+json">
6812    {
6813      "@context": "http://schema.org/",
6814      "@type": "Product",
6815      "name": "Rosemary Essential Oil",
6816      "url": "https:\/\/www.rockymountainoils.com\/products\/rosemary-essential-oil","image": [
6817          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rosemary15mlSingle.jpg?v=1765177444\u0026width=570"
6818        ],
6819      "description": "Rosemary Essential Oil is a versatile oil steam distilled from the Rosmarinus officinalis bush. Known for its potential benefits in hair care routines, it may support a healthy-looking scalp. This oil's aroma is associated with feelings of focus and calmness. With its natural properties, Rosemary oil can be a valuable addition to skincare routines, potentially supporting a brighter and more youthful-looking complexion.","sku": "ROSHUN-S15",
6820      "brand": {
6821        "@type": "Brand",
6822        "name": "Rocky Mountain Oils"
6823      },
6824      "offers": {
6825          "@type": "AggregateOffer",
6826          "availability": "http://schema.org/InStock",
6827          "priceCurrency": "USD",
6828          "highPrice": 40.95,
6829          "lowPrice": 6.95,
6830          "offerCount": 3,
6831          "offers": [{
6832              "@type" : "Offer","sku": "ROSHUN-S15","gtin12": "053176176581","availability" : "http://schema.org/InStock",
6833              "price" : 11.95,
6834              "priceCurrency" : "USD",
6835              "priceValidUntil": "2026-12-31",
6836              "url" : "https:\/\/www.rockymountainoils.com\/products\/rosemary-essential-oil?variant=44111544451394"
6837            },
6838{
6839              "@type" : "Offer","sku": "ROSHUN-4OZ","gtin12": "053176183220","availability" : "http://schema.org/InStock",
6840              "price" : 40.95,
6841              "priceCurrency" : "USD",
6842              "priceValidUntil": "2026-12-31",
6843              "url" : "https:\/\/www.rockymountainoils.com\/products\/rosemary-essential-oil?variant=48687666659650"
6844            },
6845{
6846              "@type" : "Offer","sku": "ROSHUN-S5","gtin12": "053176176598","availability" : "http://schema.org/InStock",
6847              "price" : 6.95,
6848              "priceCurrency" : "USD",
6849              "priceValidUntil": "2026-12-31",
6850              "url" : "https:\/\/www.rockymountainoils.com\/products\/rosemary-essential-oil?variant=52948338508143"
6851            }
6852]
6853      }
6854    }
6855    </script>
6855</div>
6856
6857<style>
6858/* Ensure visually-hidden utility exists even if theme lacks it */
6859.visually-hidden {
6860    position: absolute !important;
6861    width: 1px !important;
6862    height: 1px !important;
6863    padding: 0 !important;
6864    margin: -1px !important;
6865    overflow: hidden !important;
6866    clip: rect(0, 0, 0, 0) !important;
6867    white-space: nowrap !important;
6868    border: 0 !important;
6869}
6870
6871/* Ensure the main product image is tappable on iOS */
6872.main-product-image {
6873    cursor: pointer;
6874    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
6875    touch-action: manipulation;
6876}
6877
6878/* ULTIMATE FIX - Override anything that hides select text */
6879.product-variants-select,
6880.product-variants-select.no-js-only,
6881select.product-variants-select,
6882select[id*="ProductSelect-"] {
6883    color: #1a1a1a !important;
6884    opacity: 1 !important;
6885    background-color: #ffffff !important;
6886    -webkit-text-fill-color: #1a1a1a !important;
6887}
6888
6889.product-variants-select option,
6890select[id*="ProductSelect-"] option {
6891    color: #1a1a1a !important;
6892    background-color: #ffffff !important;
6893    -webkit-text-fill-color: #1a1a1a !important;
6894}
6895
6896.product-variants-select option:checked,
6897select[id*="ProductSelect-"] option:checked {
6898    color: #1a1a1a !important;
6899    background-color: #e8f0fe !important;
6900}
6901
6902.product-variants-select option:disabled,
6903select[id*="ProductSelect-"] option:disabled {
6904    color: #6c6c6c !important;
6905    background-color: #f5f5f5 !important;
6906    -webkit-text-fill-color: #6c6c6c !important;
6907    opacity: 1 !important;
6908}
6909
6910.product-variants-select:focus,
6911select[id*="ProductSelect-"]:focus {
6912    color: #1a1a1a !important;
6913    outline: 3px solid #000000ff !important;
6914}
6915</style>
6916                      </div><div class="item">
6917                    	
6917<script>
6918(function() {
6919    class ProductCardVariantSelector {
6920        constructor(container) {
6921            this.container = container;
6922            if (!this.container) return;
6923
6924            this.form = this.container.querySelector('.product-form');
6925            this.variantSelectors = this.container.querySelectorAll('.variant-select');
6926            this.masterSelect = this.container.querySelector('.product-variants-select');
6927            this.productImage = this.container.querySelector('.main-product-image');
6928            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
6929            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
6930            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
6931            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
6932            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
6933            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
6934            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
6935            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
6936            this.saleTag = this.container.querySelector('.hc-sale-tag');
6937            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
6938
6939            if (!this.masterSelect || !this.variantsJsonScript) return;
6940
6941            try {
6942                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
6943            } catch (e) { return; }
6944
6945            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
6946            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
6947
6948            this.init();
6949        }
6950
6951        init() {
6952            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
6953            if (this.productImage) {
6954                let touchStartX = 0, touchStartY = 0, touchMoved = false;
6955                let lastTouchTime = 0;
6956
6957                this.productImage.style.cursor = 'pointer';
6958                this.productImage.setAttribute('role', 'button');
6959                this.productImage.setAttribute('tabindex', '0');
6960
6961                this.productImage.addEventListener('touchstart', (e) => {
6962                    const t = e.touches[0];
6963                    touchStartX = t.clientX;
6964                    touchStartY = t.clientY;
6965                    touchMoved = false;
6966                }, { passive: true });
6967
6968                this.productImage.addEventListener('touchmove', (e) => {
6969                    const t = e.touches[0];
6970                    if (Math.abs(t.clientX - touchStartX) > 10 ||
6971                        Math.abs(t.clientY - touchStartY) > 10) {
6972                        touchMoved = true;
6973                    }
6974                }, { passive: true });
6975
6976                this.productImage.addEventListener('touchend', (e) => {
6977                    if (touchMoved) return;
6978                    lastTouchTime = Date.now();
6979                    e.preventDefault();
6980                    this.onImageTap(e);
6981                }, { passive: false });
6982
6983                // Desktop / non-touch fallback (with double-fire protection after touchend)
6984                this.productImage.addEventListener('click', (e) => {
6985                    if (Date.now() - lastTouchTime < 500) return;
6986                    this.onImageTap(e);
6987                });
6988
6989                this.productImage.addEventListener('keydown', (e) => {
6990                    if (e.key === 'Enter' || e.key === ' ') {
6991                        e.preventDefault();
6992                        this.onImageTap(e);
6993                    }
6994                });
6995            }
6996
6997            // --- Variant select listeners ---
6998            if (this.variantSelectors.length > 0) {
6999                this.variantSelectors.forEach(select => {
7000                    select.addEventListener('change', this.onVariantChange.bind(this));
7001                });
7002                this.updateProductDetails(this.getCurrentVariant());
7003            }
7004        }
7005
7006        // ============================================================
7007        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
7008        // Currently: navigates to the product page.
7009        // ============================================================
7010        onImageTap(e) {
7011            const link = this.container.querySelector('.product-title-link');
7012            if (link && link.href && link.href !== '#') {
7013                window.location.href = link.href;
7014            }
7015        }
7016        // ============================================================
7017
7018        onVariantChange() {
7019            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
7020            const matchedVariant = this.findMatchingVariant(selectedOptions);
7021
7022            if (matchedVariant) {
7023                this.masterSelect.value = matchedVariant.id;
7024                this.updateProductDetails(matchedVariant);
7025                if (this.statusElement) this.statusElement.textContent = '';
7026            } else {
7027                if (this.statusElement) {
7028                    this.statusElement.textContent = 'No available variant matches your selection';
7029                }
7030                this.updateProductDetails(null);
7031            }
7032        }
7033
7034        findMatchingVariant(selectedOptions) {
7035            return this.productVariants.find(variant => {
7036                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
7037                return selectedOptions.every((val, i) => variant.options[i] === val);
7038            });
7039        }
7040
7041        getCurrentVariant() {
7042            if (!this.masterSelect) return null;
7043            const id = this.masterSelect.value;
7044            if (!id) return null;
7045            return this.productVariants.find(v => String(v.id) === String(id)) || null;
7046        }
7047
7048        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
7049        sizedImageUrl(src, width) {
7050            if (!src) return src;
7051            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
7052        }
7053
7054        updateProductDetails(variant) {
7055            this.container.setAttribute('aria-busy', 'true');
7056
7057            if (!variant) {
7058                if (this.addToCartButton) this.addToCartButton.disabled = true;
7059                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
7060                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
7061                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
7062                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
7063                if (this.saleTag) this.saleTag.style.display = 'none';
7064                this.container.setAttribute('aria-busy', 'false');
7065                return;
7066            }
7067
7068            // 1. Image
7069            if (this.productImage) {
7070                if (variant.featured_image && variant.featured_image.src) {
7071                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
7072                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
7073                    this.productImage.src = sized;
7074                    this.productImage.srcset = '';
7075                    this.productImage.alt = variant.featured_image.alt
7076                        ? variant.featured_image.alt
7077                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
7078                } else if (this.mainImageUrl) {
7079                    this.productImage.src = this.mainImageUrl;
7080                    this.productImage.srcset = '';
7081                    this.productImage.alt = this.productTitle;
7082                }
7083            }
7084
7085            // 2. Price
7086            const moneyFormat = "${{amount}}";
7087            const formatMoney = (cents, format) => {
7088                if (typeof cents === 'string') cents = cents.replace('.', '');
7089                let value = '';
7090                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
7091                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
7092
7093                function formatWithDelimiters(number, precision, thousands, decimal) {
7094                    precision = precision ?? 2;
7095                    thousands = thousands ?? ',';
7096                    decimal = decimal ?? '.';
7097                    if (isNaN(number) || number == null) return 0;
7098                    number = (number / 100.0).toFixed(precision);
7099                    const parts = number.split('.');
7100                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
7101                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
7102                    return dollars + centsPart;
7103                }
7104
7105                switch (formatString.match(placeholderRegex)?.[1]) {
7106                    case 'amount': value = formatWithDelimiters(cents, 2); break;
7107                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
7108                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
7109                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
7110                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
7111                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
7112                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
7113                    default: value = formatWithDelimiters(cents, 2);
7114                }
7115                try {
7116                    return formatString.replace(placeholderRegex, value);
7117                } catch (e) {
7118                    const fallback = (cents / 100.0).toFixed(2);
7119                    return formatString.includes('')
7120                        ? formatString.replace(placeholderRegex, fallback)
7121                        : fallback;
7122                }
7123            };
7124
7125            if (this.currentPriceElement) {
7126                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
7127            }
7128            if (this.comparePriceElement && this.priceWrapper) {
7129                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
7130                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
7131                    this.comparePriceElement.style.display = '';
7132                    this.priceWrapper.classList.add('sale');
7133                } else {
7134                    this.comparePriceElement.textContent = '';
7135                    this.comparePriceElement.style.display = 'none';
7136                    this.priceWrapper.classList.remove('sale');
7137                }
7138            }
7139
7140            // 3. Sale tag
7141            if (this.saleTag) {
7142                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
7143                if (isDiscounted && variant.available) {
7144                    this.saleTag.style.display = 'block';
7145                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
7146                    const span = this.saleTag.querySelector('span');
7147                    if (span) span.textContent = discount + '%';
7148                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
7149                    this.saleTag.setAttribute('role', 'status');
7150                } else {
7151                    this.saleTag.style.display = 'none';
7152                }
7153            }
7154
7155            // 4. Add to cart
7156            if (this.addToCartButton && this.addToCartText) {
7157                if (variant.available) {
7158                    this.addToCartButton.disabled = false;
7159                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
7160                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
7161                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
7162                } else {
7163                    this.addToCartButton.disabled = true;
7164                    this.addToCartText.textContent = 'Sold Out';
7165                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
7166                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
7167                }
7168            }
7169            if (this.notifyMeButton) {
7170                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
7171            }
7172
7173            this.container.setAttribute('aria-busy', 'false');
7174        }
7175    }
7176
7177    function initProductCards(root) {
7178        root = root || document;
7179        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
7180            if (cardContainer.dataset.variantSelectorInit === 'true') return;
7181            cardContainer.dataset.variantSelectorInit = 'true';
7182            new ProductCardVariantSelector(cardContainer);
7183        });
7184    }
7185
7186    if (document.readyState === 'loading') {
7187        document.addEventListener('DOMContentLoaded', () => initProductCards());
7188    } else {
7189        initProductCards();
7190    }
7191
7192    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
7193})();
7194</script>
7194<div class="product-card-wrapper" data-product-id="8025567330626" aria-busy="false">
7195
7196    <div class="product-image" id="ProductImageWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626"><!-- WISHLIST BUTTON -->
7197        <div class='xb-wishlist__btn-custom'>
7198            <div
7199                class='xb-wishlist__add'
7200                xb-product-id='8025567330626'
7201                xb-product-title='Sacred Frankincense Essential Oil'
7202                xb-product-variant='44111529771330'
7203                xb-is-in-stock='true'
7204                xb-product-handle='frankincense-sacred-essential-oil'
7205            >
7206                <button aria-label="Add Sacred Frankincense Essential Oil to wishlist" aria-pressed="false">
7207                    <svg
7208                        xmlns='http://www.w3.org/2000/svg'
7209                        width='20'
7210                        height='20'
7211                        viewBox='0 0 24 24'
7212                        fill='none'
7213                        stroke='#FF4A71'
7214                        stroke-width='2'
7215                        stroke-linecap='round'
7216                        stroke-linejoin='round'
7217                        aria-hidden='true'
7218                        focusable='false'
7219                    >
7220                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
7221                    </svg>
7222                </button>
7223            </div>
7224
7225            <div class="xb-wishlist__loading" xb-product-id="8025567330626">
7226                <span class="loading-spinner"></span>
7227            </div>
7228
7229            <div class='xb-wishlist__remove' xb-product-id='8025567330626' xb-is-in-stock='true'>
7230                <button aria-label="Remove Sacred Frankincense Essential Oil from wishlist" aria-pressed="true">
7231                    <svg
7232                        xmlns='http://www.w3.org/2000/svg'
7233                        width='20'
7234                        height='20'
7235                        viewBox='0 0 24 24'
7236                        fill='#FF4A71'
7237                        stroke='#FF4A71'
7238                        stroke-width='2'
7239                        stroke-linecap='round'
7240                        stroke-linejoin='round'
7241                        aria-hidden='true'
7242                        focusable='false'
7243                    >
7244                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
7245                    </svg>
7246                </button>
7247            </div>
7248        </div><img
7249              id="ProductImage-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626"
7250              class="main-product-image"
7251              src="//www.rockymountainoils.com/cdn/shop/files/sacred-frankincense-essential-oil-15ml-2.jpg?crop=center&height=300&v=1767821511&width=300"
7252              alt=" Sacred Frankincense Essential Oil - 15ml - Rocky Mountain Oils"
7253              width="300"
7254              height="300"
7255              loading="lazy"
7256            /></div>
7257
7258    <div class="product-content">
7259        <div class="product-title">
7260            <a href="/products/frankincense-sacred-essential-oil" class="product-title-link" aria-label="View Sacred Frankincense Essential Oil">
7261                <h2>Sacred Frankincense Essential Oil</h2>
7262            </a>
7263        </div><div>
7264                <div class="product-subtitle">
7265                    Rich, balsamic aroma with woody and spicy-sweet notes
7266                </div>
7267            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025567330626" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
7268            <div class="product-data-store" style="display:none;"
7269                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511&width=300"
7270                 data-product-title="Sacred Frankincense Essential Oil"
7271                 id="DataStore-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626">
7272            </div>
7273
7274            
7274<script id="VariantsJson-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" type="application/json">
7275                [{"id":44111529771330,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"FRAOMA-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":44621360398658,"product_id":8025567330626,"position":1,"created_at":"2024-03-27T10:24:31-06:00","updated_at":"2026-01-07T14:31:51-07:00","alt":" Sacred Frankincense Essential Oil - 15ml - Rocky Mountain Oils","width":587,"height":587,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511","variant_ids":[44111529771330]},"available":true,"name":"Sacred Frankincense Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":9995,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175737","featured_media":{"alt":" Sacred Frankincense Essential Oil - 15ml - Rocky Mountain Oils","id":37105300275522,"position":1,"preview_image":{"aspect_ratio":1.0,"height":587,"width":587,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":6997}],"price":6997,"compare_at_price":9995,"per_delivery_price":6997,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8496},{"position":2,"price":7996}],"price":8496,"compare_at_price":9995,"per_delivery_price":8496,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8496},{"position":2,"price":7996}],"price":8496,"compare_at_price":9995,"per_delivery_price":8496,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44276013269314,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"FRAOMA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44621362299202,"product_id":8025567330626,"position":3,"created_at":"2024-03-27T10:24:42-06:00","updated_at":"2026-01-07T14:31:51-07:00","alt":"Sacred Frankincense Essential Oil - 5ml - Rocky Mountain Oils","width":588,"height":588,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-5ml-2.jpg?v=1767821511","variant_ids":[44276013269314]},"available":true,"name":"Sacred Frankincense Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":4995,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175744","featured_media":{"alt":"Sacred Frankincense Essential Oil - 5ml - Rocky Mountain Oils","id":37105302012226,"position":3,"preview_image":{"aspect_ratio":1.0,"height":588,"width":588,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-5ml-2.jpg?v=1767821511"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":3497}],"price":3497,"compare_at_price":4995,"per_delivery_price":3497,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4246},{"position":2,"price":3996}],"price":4246,"compare_at_price":4995,"per_delivery_price":4246,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4246},{"position":2,"price":3996}],"price":4246,"compare_at_price":4995,"per_delivery_price":4246,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":47468641616194,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"FRAOMA-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":43532700549442,"product_id":8025567330626,"position":4,"created_at":"2023-12-07T14:20:00-07:00","updated_at":"2026-01-07T14:31:51-07:00","alt":"Sacred Frankincense Essential Oil - 4oz - Rocky Mountain Oils","width":865,"height":865,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-4oz-1.webp?v=1767821511","variant_ids":[47468641616194]},"available":true,"name":"Sacred Frankincense Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":24995,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183237","featured_media":{"alt":"Sacred Frankincense Essential Oil - 4oz - Rocky Mountain Oils","id":35991431446850,"position":4,"preview_image":{"aspect_ratio":1.0,"height":865,"width":865,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-4oz-1.webp?v=1767821511"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":17497}],"price":17497,"compare_at_price":24995,"per_delivery_price":17497,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":21246},{"position":2,"price":19996}],"price":21246,"compare_at_price":24995,"per_delivery_price":21246,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":22496},{"position":2,"price":21246}],"price":22496,"compare_at_price":24995,"per_delivery_price":22496,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":23745},{"position":2,"price":22496}],"price":23745,"compare_at_price":24995,"per_delivery_price":23745,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":22496},{"position":2,"price":21246}],"price":22496,"compare_at_price":24995,"per_delivery_price":22496,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":23745},{"position":2,"price":22496}],"price":23745,"compare_at_price":24995,"per_delivery_price":23745,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":21246},{"position":2,"price":19996}],"price":21246,"compare_at_price":24995,"per_delivery_price":21246,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":22496},{"position":2,"price":21246}],"price":22496,"compare_at_price":24995,"per_delivery_price":22496,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":23745},{"position":2,"price":22496}],"price":23745,"compare_at_price":24995,"per_delivery_price":23745,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
7276            </script>
7276<form method="post" action="/cart/add" id="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025567330626" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
7277                    <div class="product-price" id="ProductPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" aria-live="polite" aria-atomic="true">
7278                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" style="display: none;"></span>
7279                        <span class="current-price" id="CurrentPrice-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626">$99.95</span>
7280
7281                        
7282                    </div>
7283
7284                    
7285                        <div class="product-option">
7286                            <label for="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626-0" class="visually-hidden">
7287                                Select Size for Sacred Frankincense Essential Oil
7288                            </label>
7289                            <select
7290                                id="Option-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626-0"
7291                                class="variant-select"
7292                                name="options[Size]"
7293                                form="product-form-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626"
7294                                data-index="option0"
7295                            ><option
7296                                        value="15ml"
7297                                        selected="selected"
7298                                    >
7299                                        15ml
7300                                    </option><option
7301                                        value="5ml"
7302                                        
7303                                    >
7304                                        5ml
7305                                    </option><option
7306                                        value="4oz"
7307                                        
7308                                    >
7309                                        4oz
7310                                    </option></select>
7311                        </div>
7312                    
7313                </div><label for="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" class="visually-hidden">
7314                Choose variant for Sacred Frankincense Essential Oil
7315            </label>
7316            <select
7317                name="id"
7318                data-productid="8025567330626"
7319                id="ProductSelect-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626"
7320                class="product-variants-select no-js-only"
7321            ><option
7322                        value="44111529771330"
7323                         selected="selected" 
7324                        
7325                    >
7326                        15ml - $99.95 
7327                    </option><option
7328                        value="44276013269314"
7329                        
7330                        
7331                    >
7332                        5ml - $49.95 
7333                    </option><option
7334                        value="47468641616194"
7335                        
7336                        
7337                    >
7338                        4oz - $249.95 
7339                    </option></select>
7340
7341            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626">
7342                <input type="hidden" name="quantity" value="1">
7343                
7344
7345                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" aria-l
7345ive="assertive"></div>
7346
7347                <span id="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626" class="visually-hidden">Adds item to your shopping cart</span>
7348
7349                <button
7350                    class="addtocart-btn add-to-cart"
7351                    type="submit"
7352                    name="add"
7353                    aria-label="Add to Cart - Add Sacred Frankincense Essential Oil to cart"
7354                    aria-describedby="cart-action-desc-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626"
7355                    id="AddToCart-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626"
7356                    
7357                >
7358                    <span id="AddToCartText-template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1-8025567330626">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
7359                </button>
7360            </div><input type="hidden" name="product-id" value="8025567330626" /><input type="hidden" name="section-id" value="template--27595751620975__bce15c58-b759-44db-bb1e-8af07c58c1d1" /></form><!-- END Variant Selection Form --></div>
7360<script type="application/ld+json">
7361    {
7362      "@context": "http://schema.org/",
7363      "@type": "Product",
7364      "name": "Sacred Frankincense Essential Oil",
7365      "url": "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil","image": [
7366          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511\u0026width=587"
7367        ],
7368      "description": "Experience serenity and healing with Sacred Frankincense Essential Oil. Steam-distilled from the rare Boswellia sacra tree, this potent oil boasts a rich, balsamic aroma with warming notes of wood and spice. Known for its potent properties, Sacred Frankincense promotes cellular regeneration, helping to reduce the appearance of scars, fine lines, and sun damage. It may also boost the immune system and create a sense of grounding and peace.\nThis highly sought-after oil contains 20% more alpha-pinene compounds than other Frankincense varieties, lending it potent anti-inflammatory benefits. Try it in skincare for a youthful glow, diffuse it for a grounding atmosphere, or inhale its serene scent to balance emotions and relieve stress.\n\n","sku": "FRAOMA-S15",
7369      "brand": {
7370        "@type": "Brand",
7371        "name": "Rocky Mountain Oils"
7372      },
7373      "offers": {
7374          "@type": "AggregateOffer",
7375          "availability": "http://schema.org/InStock",
7376          "priceCurrency": "USD",
7377          "highPrice": 249.95,
7378          "lowPrice": 49.95,
7379          "offerCount": 3,
7380          "offers": [{
7381              "@type" : "Offer","sku": "FRAOMA-S15","gtin12": "053176175737","availability" : "http://schema.org/InStock",
7382              "price" : 99.95,
7383              "priceCurrency" : "USD",
7384              "priceValidUntil": "2026-12-31",
7385              "url" : "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil?variant=44111529771330"
7386            },
7387{
7388              "@type" : "Offer","sku": "FRAOMA-S5","gtin12": "053176175744","availability" : "http://schema.org/InStock",
7389              "price" : 49.95,
7390              "priceCurrency" : "USD",
7391              "priceValidUntil": "2026-12-31",
7392              "url" : "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil?variant=44276013269314"
7393            },
7394{
7395              "@type" : "Offer","sku": "FRAOMA-4OZ","gtin12": "053176183237","availability" : "http://schema.org/InStock",
7396              "price" : 249.95,
7397              "priceCurrency" : "USD",
7398              "priceValidUntil": "2026-12-31",
7399              "url" : "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil?variant=47468641616194"
7400            }
7401]
7402      }
7403    }
7404    </script>
7404</div>
7405
7406<style>
7407/* Ensure visually-hidden utility exists even if theme lacks it */
7408.visually-hidden {
7409    position: absolute !important;
7410    width: 1px !important;
7411    height: 1px !important;
7412    padding: 0 !important;
7413    margin: -1px !important;
7414    overflow: hidden !important;
7415    clip: rect(0, 0, 0, 0) !important;
7416    white-space: nowrap !important;
7417    border: 0 !important;
7418}
7419
7420/* Ensure the main product image is tappable on iOS */
7421.main-product-image {
7422    cursor: pointer;
7423    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
7424    touch-action: manipulation;
7425}
7426
7427/* ULTIMATE FIX - Override anything that hides select text */
7428.product-variants-select,
7429.product-variants-select.no-js-only,
7430select.product-variants-select,
7431select[id*="ProductSelect-"] {
7432    color: #1a1a1a !important;
7433    opacity: 1 !important;
7434    background-color: #ffffff !important;
7435    -webkit-text-fill-color: #1a1a1a !important;
7436}
7437
7438.product-variants-select option,
7439select[id*="ProductSelect-"] option {
7440    color: #1a1a1a !important;
7441    background-color: #ffffff !important;
7442    -webkit-text-fill-color: #1a1a1a !important;
7443}
7444
7445.product-variants-select option:checked,
7446select[id*="ProductSelect-"] option:checked {
7447    color: #1a1a1a !important;
7448    background-color: #e8f0fe !important;
7449}
7450
7451.product-variants-select option:disabled,
7452select[id*="ProductSelect-"] option:disabled {
7453    color: #6c6c6c !important;
7454    background-color: #f5f5f5 !important;
7455    -webkit-text-fill-color: #6c6c6c !important;
7456    opacity: 1 !important;
7457}
7458
7459.product-variants-select:focus,
7460select[id*="ProductSelect-"]:focus {
7461    color: #1a1a1a !important;
7462    outline: 3px solid #000000ff !important;
7463}
7464</style>
7465                      </div></div>
7466              </div>
7467          </div>
7468</section>
7469
7470</section><section id="shopify-section-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" class="shopify-section section"><link href="//www.rockymountainoils.com/cdn/shop/t/383/assets/product-slider.css?v=100911957534726869481785434252" rel="stylesheet" type="text/css" media="all" />
7471
7472<section class="TopSeller">
7473          <div class="container">
7474              <div class="TopSeller_Wrap">
7475                  
7476                    <div class="sec-heading text-center">
7477                        
7478                          <h2>Rare Luxury Oils</h2>
7479                        
7480                        <a href="/collections/rare-luxury-oils" class="viewAllBtn" aria-label="View all Rare Luxury Oils products">
7481                            View all <i role="img" aria-hidden="true"></i>
7482                        </a>
7483                    </div>
7484                  
7485                  <div class="owl-carousel carousel-fade owl-theme slider-section ProductsSlider" id="ProductsSlider"><div class="item">
7486                    	
7486<script>
7487(function() {
7488    class ProductCardVariantSelector {
7489        constructor(container) {
7490            this.container = container;
7491            if (!this.container) return;
7492
7493            this.form = this.container.querySelector('.product-form');
7494            this.variantSelectors = this.container.querySelectorAll('.variant-select');
7495            this.masterSelect = this.container.querySelector('.product-variants-select');
7496            this.productImage = this.container.querySelector('.main-product-image');
7497            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
7498            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
7499            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
7500            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
7501            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
7502            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
7503            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
7504            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
7505            this.saleTag = this.container.querySelector('.hc-sale-tag');
7506            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
7507
7508            if (!this.masterSelect || !this.variantsJsonScript) return;
7509
7510            try {
7511                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
7512            } catch (e) { return; }
7513
7514            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
7515            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
7516
7517            this.init();
7518        }
7519
7520        init() {
7521            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
7522            if (this.productImage) {
7523                let touchStartX = 0, touchStartY = 0, touchMoved = false;
7524                let lastTouchTime = 0;
7525
7526                this.productImage.style.cursor = 'pointer';
7527                this.productImage.setAttribute('role', 'button');
7528                this.productImage.setAttribute('tabindex', '0');
7529
7530                this.productImage.addEventListener('touchstart', (e) => {
7531                    const t = e.touches[0];
7532                    touchStartX = t.clientX;
7533                    touchStartY = t.clientY;
7534                    touchMoved = false;
7535                }, { passive: true });
7536
7537                this.productImage.addEventListener('touchmove', (e) => {
7538                    const t = e.touches[0];
7539                    if (Math.abs(t.clientX - touchStartX) > 10 ||
7540                        Math.abs(t.clientY - touchStartY) > 10) {
7541                        touchMoved = true;
7542                    }
7543                }, { passive: true });
7544
7545                this.productImage.addEventListener('touchend', (e) => {
7546                    if (touchMoved) return;
7547                    lastTouchTime = Date.now();
7548                    e.preventDefault();
7549                    this.onImageTap(e);
7550                }, { passive: false });
7551
7552                // Desktop / non-touch fallback (with double-fire protection after touchend)
7553                this.productImage.addEventListener('click', (e) => {
7554                    if (Date.now() - lastTouchTime < 500) return;
7555                    this.onImageTap(e);
7556                });
7557
7558                this.productImage.addEventListener('keydown', (e) => {
7559                    if (e.key === 'Enter' || e.key === ' ') {
7560                        e.preventDefault();
7561                        this.onImageTap(e);
7562                    }
7563                });
7564            }
7565
7566            // --- Variant select listeners ---
7567            if (this.variantSelectors.length > 0) {
7568                this.variantSelectors.forEach(select => {
7569                    select.addEventListener('change', this.onVariantChange.bind(this));
7570                });
7571                this.updateProductDetails(this.getCurrentVariant());
7572            }
7573        }
7574
7575        // ============================================================
7576        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
7577        // Currently: navigates to the product page.
7578        // ============================================================
7579        onImageTap(e) {
7580            const link = this.container.querySelector('.product-title-link');
7581            if (link && link.href && link.href !== '#') {
7582                window.location.href = link.href;
7583            }
7584        }
7585        // ============================================================
7586
7587        onVariantChange() {
7588            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
7589            const matchedVariant = this.findMatchingVariant(selectedOptions);
7590
7591            if (matchedVariant) {
7592                this.masterSelect.value = matchedVariant.id;
7593                this.updateProductDetails(matchedVariant);
7594                if (this.statusElement) this.statusElement.textContent = '';
7595            } else {
7596                if (this.statusElement) {
7597                    this.statusElement.textContent = 'No available variant matches your selection';
7598                }
7599                this.updateProductDetails(null);
7600            }
7601        }
7602
7603        findMatchingVariant(selectedOptions) {
7604            return this.productVariants.find(variant => {
7605                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
7606                return selectedOptions.every((val, i) => variant.options[i] === val);
7607            });
7608        }
7609
7610        getCurrentVariant() {
7611            if (!this.masterSelect) return null;
7612            const id = this.masterSelect.value;
7613            if (!id) return null;
7614            return this.productVariants.find(v => String(v.id) === String(id)) || null;
7615        }
7616
7617        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
7618        sizedImageUrl(src, width) {
7619            if (!src) return src;
7620            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
7621        }
7622
7623        updateProductDetails(variant) {
7624            this.container.setAttribute('aria-busy', 'true');
7625
7626            if (!variant) {
7627                if (this.addToCartButton) this.addToCartButton.disabled = true;
7628                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
7629                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
7630                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
7631                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
7632                if (this.saleTag) this.saleTag.style.display = 'none';
7633                this.container.setAttribute('aria-busy', 'false');
7634                return;
7635            }
7636
7637            // 1. Image
7638            if (this.productImage) {
7639                if (variant.featured_image && variant.featured_image.src) {
7640                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
7641                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
7642                    this.productImage.src = sized;
7643                    this.productImage.srcset = '';
7644                    this.productImage.alt = variant.featured_image.alt
7645                        ? variant.featured_image.alt
7646                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
7647                } else if (this.mainImageUrl) {
7648                    this.productImage.src = this.mainImageUrl;
7649                    this.productImage.srcset = '';
7650                    this.productImage.alt = this.productTitle;
7651                }
7652            }
7653
7654            // 2. Price
7655            const moneyFormat = "${{amount}}";
7656            const formatMoney = (cents, format) => {
7657                if (typeof cents === 'string') cents = cents.replace('.', '');
7658                let value = '';
7659                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
7660                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
7661
7662                function formatWithDelimiters(number, precision, thousands, decimal) {
7663                    precision = precision ?? 2;
7664                    thousands = thousands ?? ',';
7665                    decimal = decimal ?? '.';
7666                    if (isNaN(number) || number == null) return 0;
7667                    number = (number / 100.0).toFixed(precision);
7668                    const parts = number.split('.');
7669                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
7670                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
7671                    return dollars + centsPart;
7672                }
7673
7674                switch (formatString.match(placeholderRegex)?.[1]) {
7675                    case 'amount': value = formatWithDelimiters(cents, 2); break;
7676                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
7677                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
7678                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
7679                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
7680                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
7681                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
7682                    default: value = formatWithDelimiters(cents, 2);
7683                }
7684                try {
7685                    return formatString.replace(placeholderRegex, value);
7686                } catch (e) {
7687                    const fallback = (cents / 100.0).toFixed(2);
7688                    return formatString.includes('')
7689                        ? formatString.replace(placeholderRegex, fallback)
7690                        : fallback;
7691                }
7692            };
7693
7694            if (this.currentPriceElement) {
7695                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
7696            }
7697            if (this.comparePriceElement && this.priceWrapper) {
7698                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
7699                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
7700                    this.comparePriceElement.style.display = '';
7701                    this.priceWrapper.classList.add('sale');
7702                } else {
7703                    this.comparePriceElement.textContent = '';
7704                    this.comparePriceElement.style.display = 'none';
7705                    this.priceWrapper.classList.remove('sale');
7706                }
7707            }
7708
7709            // 3. Sale tag
7710            if (this.saleTag) {
7711                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
7712                if (isDiscounted && variant.available) {
7713                    this.saleTag.style.display = 'block';
7714                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
7715                    const span = this.saleTag.querySelector('span');
7716                    if (span) span.textContent = discount + '%';
7717                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
7718                    this.saleTag.setAttribute('role', 'status');
7719                } else {
7720                    this.saleTag.style.display = 'none';
7721                }
7722            }
7723
7724            // 4. Add to cart
7725            if (this.addToCartButton && this.addToCartText) {
7726                if (variant.available) {
7727                    this.addToCartButton.disabled = false;
7728                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
7729                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
7730                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
7731                } else {
7732                    this.addToCartButton.disabled = true;
7733                    this.addToCartText.textContent = 'Sold Out';
7734                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
7735                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
7736                }
7737            }
7738            if (this.notifyMeButton) {
7739                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
7740            }
7741
7742            this.container.setAttribute('aria-busy', 'false');
7743        }
7744    }
7745
7746    function initProductCards(root) {
7747        root = root || document;
7748        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
7749            if (cardContainer.dataset.variantSelectorInit === 'true') return;
7750            cardContainer.dataset.variantSelectorInit = 'true';
7751            new ProductCardVariantSelector(cardContainer);
7752        });
7753    }
7754
7755    if (document.readyState === 'loading') {
7756        document.addEventListener('DOMContentLoaded', () => initProductCards());
7757    } else {
7758        initProductCards();
7759    }
7760
7761    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
7762})();
7763</script>
7763<div class="product-card-wrapper" data-product-id="8025567330626" aria-busy="false">
7764
7765    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626"><!-- WISHLIST BUTTON -->
7766        <div class='xb-wishlist__btn-custom'>
7767            <div
7768                class='xb-wishlist__add'
7769                xb-product-id='8025567330626'
7770                xb-product-title='Sacred Frankincense Essential Oil'
7771                xb-product-variant='44111529771330'
7772                xb-is-in-stock='true'
7773                xb-product-handle='frankincense-sacred-essential-oil'
7774            >
7775                <button aria-label="Add Sacred Frankincense Essential Oil to wishlist" aria-pressed="false">
7776                    <svg
7777                        xmlns='http://www.w3.org/2000/svg'
7778                        width='20'
7779                        height='20'
7780                        viewBox='0 0 24 24'
7781                        fill='none'
7782                        stroke='#FF4A71'
7783                        stroke-width='2'
7784                        stroke-linecap='round'
7785                        stroke-linejoin='round'
7786                        aria-hidden='true'
7787                        focusable='false'
7788                    >
7789                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
7790                    </svg>
7791                </button>
7792            </div>
7793
7794            <div class="xb-wishlist__loading" xb-product-id="8025567330626">
7795                <span class="loading-spinner"></span>
7796            </div>
7797
7798            <div class='xb-wishlist__remove' xb-product-id='8025567330626' xb-is-in-stock='true'>
7799                <button aria-label="Remove Sacred Frankincense Essential Oil from wishlist" aria-pressed="true">
7800                    <svg
7801                        xmlns='http://www.w3.org/2000/svg'
7802                        width='20'
7803                        height='20'
7804                        viewBox='0 0 24 24'
7805                        fill='#FF4A71'
7806                        stroke='#FF4A71'
7807                        stroke-width='2'
7808                        stroke-linecap='round'
7809                        stroke-linejoin='round'
7810                        aria-hidden='true'
7811                        focusable='false'
7812                    >
7813                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
7814                    </svg>
7815                </button>
7816            </div>
7817        </div><img
7818              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626"
7819              class="main-product-image"
7820              src="//www.rockymountainoils.com/cdn/shop/files/sacred-frankincense-essential-oil-15ml-2.jpg?crop=center&height=300&v=1767821511&width=300"
7821              alt=" Sacred Frankincense Essential Oil - 15ml - Rocky Mountain Oils"
7822              width="300"
7823              height="300"
7824              loading="lazy"
7825            /></div>
7826
7827    <div class="product-content">
7828        <div class="product-title">
7829            <a href="/products/frankincense-sacred-essential-oil" class="product-title-link" aria-label="View Sacred Frankincense Essential Oil">
7830                <h2>Sacred Frankincense Essential Oil</h2>
7831            </a>
7832        </div><div>
7833                <div class="product-subtitle">
7834                    Rich, balsamic aroma with woody and spicy-sweet notes
7835                </div>
7836            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025567330626" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
7837            <div class="product-data-store" style="display:none;"
7838                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511&width=300"
7839                 data-product-title="Sacred Frankincense Essential Oil"
7840                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626">
7841            </div>
7842
7843            
7843<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" type="application/json">
7844                [{"id":44111529771330,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"FRAOMA-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":44621360398658,"product_id":8025567330626,"position":1,"created_at":"2024-03-27T10:24:31-06:00","updated_at":"2026-01-07T14:31:51-07:00","alt":" Sacred Frankincense Essential Oil - 15ml - Rocky Mountain Oils","width":587,"height":587,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511","variant_ids":[44111529771330]},"available":true,"name":"Sacred Frankincense Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":9995,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175737","featured_media":{"alt":" Sacred Frankincense Essential Oil - 15ml - Rocky Mountain Oils","id":37105300275522,"position":1,"preview_image":{"aspect_ratio":1.0,"height":587,"width":587,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":6997}],"price":6997,"compare_at_price":9995,"per_delivery_price":6997,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8496},{"position":2,"price":7996}],"price":8496,"compare_at_price":9995,"per_delivery_price":8496,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8496},{"position":2,"price":7996}],"price":8496,"compare_at_price":9995,"per_delivery_price":8496,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":8996},{"position":2,"price":8496}],"price":8996,"compare_at_price":9995,"per_delivery_price":8996,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":9495},{"position":2,"price":8996}],"price":9495,"compare_at_price":9995,"per_delivery_price":9495,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44276013269314,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"FRAOMA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44621362299202,"product_id":8025567330626,"position":3,"created_at":"2024-03-27T10:24:42-06:00","updated_at":"2026-01-07T14:31:51-07:00","alt":"Sacred Frankincense Essential Oil - 5ml - Rocky Mountain Oils","width":588,"height":588,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-5ml-2.jpg?v=1767821511","variant_ids":[44276013269314]},"available":true,"name":"Sacred Frankincense Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":4995,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175744","featured_media":{"alt":"Sacred Frankincense Essential Oil - 5ml - Rocky Mountain Oils","id":37105302012226,"position":3,"preview_image":{"aspect_ratio":1.0,"height":588,"width":588,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-5ml-2.jpg?v=1767821511"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":3497}],"price":3497,"compare_at_price":4995,"per_delivery_price":3497,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4246},{"position":2,"price":3996}],"price":4246,"compare_at_price":4995,"per_delivery_price":4246,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4246},{"position":2,"price":3996}],"price":4246,"compare_at_price":4995,"per_delivery_price":4246,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4496},{"position":2,"price":4246}],"price":4496,"compare_at_price":4995,"per_delivery_price":4496,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4745},{"position":2,"price":4496}],"price":4745,"compare_at_price":4995,"per_delivery_price":4745,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":47468641616194,"title":"4oz","option1":"4oz","option2":null,"option3":null,"sku":"FRAOMA-4OZ","requires_shipping":true,"taxable":true,"featured_image":{"id":43532700549442,"product_id":8025567330626,"position":4,"created_at":"2023-12-07T14:20:00-07:00","updated_at":"2026-01-07T14:31:51-07:00","alt":"Sacred Frankincense Essential Oil - 4oz - Rocky Mountain Oils","width":865,"height":865,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-4oz-1.webp?v=1767821511","variant_ids":[47468641616194]},"available":true,"name":"Sacred Frankincense Essential Oil - 4oz","public_title":"4oz","options":["4oz"],"price":24995,"weight":113,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176183237","featured_media":{"alt":"Sacred Frankincense Essential Oil - 4oz - Rocky Mountain Oils","id":35991431446850,"position":4,"preview_image":{"aspect_ratio":1.0,"height":865,"width":865,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-4oz-1.webp?v=1767821511"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":17497}],"price":17497,"compare_at_price":24995,"per_delivery_price":17497,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":21246},{"position":2,"price":19996}],"price":21246,"compare_at_price":24995,"per_delivery_price":21246,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":22496},{"position":2,"price":21246}],"price":22496,"compare_at_price":24995,"per_delivery_price":22496,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":23745},{"position":2,"price":22496}],"price":23745,"compare_at_price":24995,"per_delivery_price":23745,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":22496},{"position":2,"price":21246}],"price":22496,"compare_at_price":24995,"per_delivery_price":22496,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":23745},{"position":2,"price":22496}],"price":23745,"compare_at_price":24995,"per_delivery_price":23745,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":21246},{"position":2,"price":19996}],"price":21246,"compare_at_price":24995,"per_delivery_price":21246,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":22496},{"position":2,"price":21246}],"price":22496,"compare_at_price":24995,"per_delivery_price":22496,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":23745},{"position":2,"price":22496}],"price":23745,"compare_at_price":24995,"per_delivery_price":23745,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
7845            </script>
7845<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025567330626" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
7846                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" aria-live="polite" aria-atomic="true">
7847                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" style="display: none;"></span>
7848                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626">$99.95</span>
7849
7850                        
7851                    </div>
7852
7853                    
7854                        <div class="product-option">
7855                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626-0" class="visually-hidden">
7856                                Select Size for Sacred Frankincense Essential Oil
7857                            </label>
7858                            <select
7859                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626-0"
7860                                class="variant-select"
7861                                name="options[Size]"
7862                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626"
7863                                data-index="option0"
7864                            ><option
7865                                        value="15ml"
7866                                        selected="selected"
7867                                    >
7868                                        15ml
7869                                    </option><option
7870                                        value="5ml"
7871                                        
7872                                    >
7873                                        5ml
7874                                    </option><option
7875                                        value="4oz"
7876                                        
7877                                    >
7878                                        4oz
7879                                    </option></select>
7880                        </div>
7881                    
7882                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" class="visually-hidden">
7883                Choose variant for Sacred Frankincense Essential Oil
7884            </label>
7885            <select
7886                name="id"
7887                data-productid="8025567330626"
7888                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626"
7889                class="product-variants-select no-js-only"
7890            ><option
7891                        value="44111529771330"
7892                         selected="selected" 
7893                        
7894                    >
7895                        15ml - $99.95 
7896                    </option><option
7897                        value="44276013269314"
7898                        
7899                        
7900                    >
7901                        5ml - $49.95 
7902                    </option><option
7903                        value="47468641616194"
7904                        
7905                        
7906                    >
7907                        4oz - $249.95 
7908                    </option></select>
7909
7910            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626">
7911                <input type="hidden" name="quantity" value="1">
7912                
7913
7914                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" aria-l
7914ive="assertive"></div>
7915
7916                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626" class="visually-hidden">Adds item to your shopping cart</span>
7917
7918                <button
7919                    class="addtocart-btn add-to-cart"
7920                    type="submit"
7921                    name="add"
7922                    aria-label="Add to Cart - Add Sacred Frankincense Essential Oil to cart"
7923                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626"
7924                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626"
7925                    
7926                >
7927                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567330626">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
7928                </button>
7929            </div><input type="hidden" name="product-id" value="8025567330626" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
7929<script type="application/ld+json">
7930    {
7931      "@context": "http://schema.org/",
7932      "@type": "Product",
7933      "name": "Sacred Frankincense Essential Oil",
7934      "url": "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil","image": [
7935          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sacred-frankincense-essential-oil-15ml-2.jpg?v=1767821511\u0026width=587"
7936        ],
7937      "description": "Experience serenity and healing with Sacred Frankincense Essential Oil. Steam-distilled from the rare Boswellia sacra tree, this potent oil boasts a rich, balsamic aroma with warming notes of wood and spice. Known for its potent properties, Sacred Frankincense promotes cellular regeneration, helping to reduce the appearance of scars, fine lines, and sun damage. It may also boost the immune system and create a sense of grounding and peace.\nThis highly sought-after oil contains 20% more alpha-pinene compounds than other Frankincense varieties, lending it potent anti-inflammatory benefits. Try it in skincare for a youthful glow, diffuse it for a grounding atmosphere, or inhale its serene scent to balance emotions and relieve stress.\n\n","sku": "FRAOMA-S15",
7938      "brand": {
7939        "@type": "Brand",
7940        "name": "Rocky Mountain Oils"
7941      },
7942      "offers": {
7943          "@type": "AggregateOffer",
7944          "availability": "http://schema.org/InStock",
7945          "priceCurrency": "USD",
7946          "highPrice": 249.95,
7947          "lowPrice": 49.95,
7948          "offerCount": 3,
7949          "offers": [{
7950              "@type" : "Offer","sku": "FRAOMA-S15","gtin12": "053176175737","availability" : "http://schema.org/InStock",
7951              "price" : 99.95,
7952              "priceCurrency" : "USD",
7953              "priceValidUntil": "2026-12-31",
7954              "url" : "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil?variant=44111529771330"
7955            },
7956{
7957              "@type" : "Offer","sku": "FRAOMA-S5","gtin12": "053176175744","availability" : "http://schema.org/InStock",
7958              "price" : 49.95,
7959              "priceCurrency" : "USD",
7960              "priceValidUntil": "2026-12-31",
7961              "url" : "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil?variant=44276013269314"
7962            },
7963{
7964              "@type" : "Offer","sku": "FRAOMA-4OZ","gtin12": "053176183237","availability" : "http://schema.org/InStock",
7965              "price" : 249.95,
7966              "priceCurrency" : "USD",
7967              "priceValidUntil": "2026-12-31",
7968              "url" : "https:\/\/www.rockymountainoils.com\/products\/frankincense-sacred-essential-oil?variant=47468641616194"
7969            }
7970]
7971      }
7972    }
7973    </script>
7973</div>
7974
7975<style>
7976/* Ensure visually-hidden utility exists even if theme lacks it */
7977.visually-hidden {
7978    position: absolute !important;
7979    width: 1px !important;
7980    height: 1px !important;
7981    padding: 0 !important;
7982    margin: -1px !important;
7983    overflow: hidden !important;
7984    clip: rect(0, 0, 0, 0) !important;
7985    white-space: nowrap !important;
7986    border: 0 !important;
7987}
7988
7989/* Ensure the main product image is tappable on iOS */
7990.main-product-image {
7991    cursor: pointer;
7992    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
7993    touch-action: manipulation;
7994}
7995
7996/* ULTIMATE FIX - Override anything that hides select text */
7997.product-variants-select,
7998.product-variants-select.no-js-only,
7999select.product-variants-select,
8000select[id*="ProductSelect-"] {
8001    color: #1a1a1a !important;
8002    opacity: 1 !important;
8003    background-color: #ffffff !important;
8004    -webkit-text-fill-color: #1a1a1a !important;
8005}
8006
8007.product-variants-select option,
8008select[id*="ProductSelect-"] option {
8009    color: #1a1a1a !important;
8010    background-color: #ffffff !important;
8011    -webkit-text-fill-color: #1a1a1a !important;
8012}
8013
8014.product-variants-select option:checked,
8015select[id*="ProductSelect-"] option:checked {
8016    color: #1a1a1a !important;
8017    background-color: #e8f0fe !important;
8018}
8019
8020.product-variants-select option:disabled,
8021select[id*="ProductSelect-"] option:disabled {
8022    color: #6c6c6c !important;
8023    background-color: #f5f5f5 !important;
8024    -webkit-text-fill-color: #6c6c6c !important;
8025    opacity: 1 !important;
8026}
8027
8028.product-variants-select:focus,
8029select[id*="ProductSelect-"]:focus {
8030    color: #1a1a1a !important;
8031    outline: 3px solid #000000ff !important;
8032}
8033</style>
8034                      </div><div class="item">
8035                    	
8035<script>
8036(function() {
8037    class ProductCardVariantSelector {
8038        constructor(container) {
8039            this.container = container;
8040            if (!this.container) return;
8041
8042            this.form = this.container.querySelector('.product-form');
8043            this.variantSelectors = this.container.querySelectorAll('.variant-select');
8044            this.masterSelect = this.container.querySelector('.product-variants-select');
8045            this.productImage = this.container.querySelector('.main-product-image');
8046            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
8047            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
8048            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
8049            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
8050            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
8051            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
8052            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
8053            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
8054            this.saleTag = this.container.querySelector('.hc-sale-tag');
8055            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
8056
8057            if (!this.masterSelect || !this.variantsJsonScript) return;
8058
8059            try {
8060                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
8061            } catch (e) { return; }
8062
8063            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
8064            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
8065
8066            this.init();
8067        }
8068
8069        init() {
8070            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
8071            if (this.productImage) {
8072                let touchStartX = 0, touchStartY = 0, touchMoved = false;
8073                let lastTouchTime = 0;
8074
8075                this.productImage.style.cursor = 'pointer';
8076                this.productImage.setAttribute('role', 'button');
8077                this.productImage.setAttribute('tabindex', '0');
8078
8079                this.productImage.addEventListener('touchstart', (e) => {
8080                    const t = e.touches[0];
8081                    touchStartX = t.clientX;
8082                    touchStartY = t.clientY;
8083                    touchMoved = false;
8084                }, { passive: true });
8085
8086                this.productImage.addEventListener('touchmove', (e) => {
8087                    const t = e.touches[0];
8088                    if (Math.abs(t.clientX - touchStartX) > 10 ||
8089                        Math.abs(t.clientY - touchStartY) > 10) {
8090                        touchMoved = true;
8091                    }
8092                }, { passive: true });
8093
8094                this.productImage.addEventListener('touchend', (e) => {
8095                    if (touchMoved) return;
8096                    lastTouchTime = Date.now();
8097                    e.preventDefault();
8098                    this.onImageTap(e);
8099                }, { passive: false });
8100
8101                // Desktop / non-touch fallback (with double-fire protection after touchend)
8102                this.productImage.addEventListener('click', (e) => {
8103                    if (Date.now() - lastTouchTime < 500) return;
8104                    this.onImageTap(e);
8105                });
8106
8107                this.productImage.addEventListener('keydown', (e) => {
8108                    if (e.key === 'Enter' || e.key === ' ') {
8109                        e.preventDefault();
8110                        this.onImageTap(e);
8111                    }
8112                });
8113            }
8114
8115            // --- Variant select listeners ---
8116            if (this.variantSelectors.length > 0) {
8117                this.variantSelectors.forEach(select => {
8118                    select.addEventListener('change', this.onVariantChange.bind(this));
8119                });
8120                this.updateProductDetails(this.getCurrentVariant());
8121            }
8122        }
8123
8124        // ============================================================
8125        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
8126        // Currently: navigates to the product page.
8127        // ============================================================
8128        onImageTap(e) {
8129            const link = this.container.querySelector('.product-title-link');
8130            if (link && link.href && link.href !== '#') {
8131                window.location.href = link.href;
8132            }
8133        }
8134        // ============================================================
8135
8136        onVariantChange() {
8137            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
8138            const matchedVariant = this.findMatchingVariant(selectedOptions);
8139
8140            if (matchedVariant) {
8141                this.masterSelect.value = matchedVariant.id;
8142                this.updateProductDetails(matchedVariant);
8143                if (this.statusElement) this.statusElement.textContent = '';
8144            } else {
8145                if (this.statusElement) {
8146                    this.statusElement.textContent = 'No available variant matches your selection';
8147                }
8148                this.updateProductDetails(null);
8149            }
8150        }
8151
8152        findMatchingVariant(selectedOptions) {
8153            return this.productVariants.find(variant => {
8154                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
8155                return selectedOptions.every((val, i) => variant.options[i] === val);
8156            });
8157        }
8158
8159        getCurrentVariant() {
8160            if (!this.masterSelect) return null;
8161            const id = this.masterSelect.value;
8162            if (!id) return null;
8163            return this.productVariants.find(v => String(v.id) === String(id)) || null;
8164        }
8165
8166        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
8167        sizedImageUrl(src, width) {
8168            if (!src) return src;
8169            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
8170        }
8171
8172        updateProductDetails(variant) {
8173            this.container.setAttribute('aria-busy', 'true');
8174
8175            if (!variant) {
8176                if (this.addToCartButton) this.addToCartButton.disabled = true;
8177                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
8178                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
8179                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
8180                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
8181                if (this.saleTag) this.saleTag.style.display = 'none';
8182                this.container.setAttribute('aria-busy', 'false');
8183                return;
8184            }
8185
8186            // 1. Image
8187            if (this.productImage) {
8188                if (variant.featured_image && variant.featured_image.src) {
8189                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
8190                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
8191                    this.productImage.src = sized;
8192                    this.productImage.srcset = '';
8193                    this.productImage.alt = variant.featured_image.alt
8194                        ? variant.featured_image.alt
8195                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
8196                } else if (this.mainImageUrl) {
8197                    this.productImage.src = this.mainImageUrl;
8198                    this.productImage.srcset = '';
8199                    this.productImage.alt = this.productTitle;
8200                }
8201            }
8202
8203            // 2. Price
8204            const moneyFormat = "${{amount}}";
8205            const formatMoney = (cents, format) => {
8206                if (typeof cents === 'string') cents = cents.replace('.', '');
8207                let value = '';
8208                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
8209                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
8210
8211                function formatWithDelimiters(number, precision, thousands, decimal) {
8212                    precision = precision ?? 2;
8213                    thousands = thousands ?? ',';
8214                    decimal = decimal ?? '.';
8215                    if (isNaN(number) || number == null) return 0;
8216                    number = (number / 100.0).toFixed(precision);
8217                    const parts = number.split('.');
8218                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
8219                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
8220                    return dollars + centsPart;
8221                }
8222
8223                switch (formatString.match(placeholderRegex)?.[1]) {
8224                    case 'amount': value = formatWithDelimiters(cents, 2); break;
8225                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
8226                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
8227                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
8228                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
8229                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
8230                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
8231                    default: value = formatWithDelimiters(cents, 2);
8232                }
8233                try {
8234                    return formatString.replace(placeholderRegex, value);
8235                } catch (e) {
8236                    const fallback = (cents / 100.0).toFixed(2);
8237                    return formatString.includes('')
8238                        ? formatString.replace(placeholderRegex, fallback)
8239                        : fallback;
8240                }
8241            };
8242
8243            if (this.currentPriceElement) {
8244                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
8245            }
8246            if (this.comparePriceElement && this.priceWrapper) {
8247                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
8248                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
8249                    this.comparePriceElement.style.display = '';
8250                    this.priceWrapper.classList.add('sale');
8251                } else {
8252                    this.comparePriceElement.textContent = '';
8253                    this.comparePriceElement.style.display = 'none';
8254                    this.priceWrapper.classList.remove('sale');
8255                }
8256            }
8257
8258            // 3. Sale tag
8259            if (this.saleTag) {
8260                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
8261                if (isDiscounted && variant.available) {
8262                    this.saleTag.style.display = 'block';
8263                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
8264                    const span = this.saleTag.querySelector('span');
8265                    if (span) span.textContent = discount + '%';
8266                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
8267                    this.saleTag.setAttribute('role', 'status');
8268                } else {
8269                    this.saleTag.style.display = 'none';
8270                }
8271            }
8272
8273            // 4. Add to cart
8274            if (this.addToCartButton && this.addToCartText) {
8275                if (variant.available) {
8276                    this.addToCartButton.disabled = false;
8277                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
8278                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
8279                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
8280                } else {
8281                    this.addToCartButton.disabled = true;
8282                    this.addToCartText.textContent = 'Sold Out';
8283                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
8284                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
8285                }
8286            }
8287            if (this.notifyMeButton) {
8288                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
8289            }
8290
8291            this.container.setAttribute('aria-busy', 'false');
8292        }
8293    }
8294
8295    function initProductCards(root) {
8296        root = root || document;
8297        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
8298            if (cardContainer.dataset.variantSelectorInit === 'true') return;
8299            cardContainer.dataset.variantSelectorInit = 'true';
8300            new ProductCardVariantSelector(cardContainer);
8301        });
8302    }
8303
8304    if (document.readyState === 'loading') {
8305        document.addEventListener('DOMContentLoaded', () => initProductCards());
8306    } else {
8307        initProductCards();
8308    }
8309
8310    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
8311})();
8312</script>
8312<div class="product-card-wrapper" data-product-id="8025567494466" aria-busy="false">
8313
8314    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466"><!-- WISHLIST BUTTON -->
8315        <div class='xb-wishlist__btn-custom'>
8316            <div
8317                class='xb-wishlist__add'
8318                xb-product-id='8025567494466'
8319                xb-product-title='Helichrysum italicum Essential Oil'
8320                xb-product-variant='44111532425538'
8321                xb-is-in-stock='true'
8322                xb-product-handle='helichrysum-italicum-essential-oil'
8323            >
8324                <button aria-label="Add Helichrysum italicum Essential Oil to wishlist" aria-pressed="false">
8325                    <svg
8326                        xmlns='http://www.w3.org/2000/svg'
8327                        width='20'
8328                        height='20'
8329                        viewBox='0 0 24 24'
8330                        fill='none'
8331                        stroke='#FF4A71'
8332                        stroke-width='2'
8333                        stroke-linecap='round'
8334                        stroke-linejoin='round'
8335                        aria-hidden='true'
8336                        focusable='false'
8337                    >
8338                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
8339                    </svg>
8340                </button>
8341            </div>
8342
8343            <div class="xb-wishlist__loading" xb-product-id="8025567494466">
8344                <span class="loading-spinner"></span>
8345            </div>
8346
8347            <div class='xb-wishlist__remove' xb-product-id='8025567494466' xb-is-in-stock='true'>
8348                <button aria-label="Remove Helichrysum italicum Essential Oil from wishlist" aria-pressed="true">
8349                    <svg
8350                        xmlns='http://www.w3.org/2000/svg'
8351                        width='20'
8352                        height='20'
8353                        viewBox='0 0 24 24'
8354                        fill='#FF4A71'
8355                        stroke='#FF4A71'
8356                        stroke-width='2'
8357                        stroke-linecap='round'
8358                        stroke-linejoin='round'
8359                        aria-hidden='true'
8360                        focusable='false'
8361                    >
8362                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
8363                    </svg>
8364                </button>
8365            </div>
8366        </div><img
8367              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466"
8368              class="main-product-image"
8369              src="//www.rockymountainoils.com/cdn/shop/files/helichrysum-italicum-essential-oil-15ml-1.jpg?crop=center&height=300&v=1769670122&width=300"
8370              alt="Helichrysum italicum Essential Oil - Helichrysum Essential Oil"
8371              width="300"
8372              height="300"
8373              loading="lazy"
8374            /></div>
8375
8376    <div class="product-content">
8377        <div class="product-title">
8378            <a href="/products/helichrysum-italicum-essential-oil" class="product-title-link" aria-label="View Helichrysum italicum Essential Oil">
8379                <h2>Helichrysum italicum Essential Oil</h2>
8380            </a>
8381        </div><div>
8382                <div class="product-subtitle">
8383                    Herbal, earthy; good for skin regeneration & wounds.
8384                </div>
8385            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025567494466" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
8386            <div class="product-data-store" style="display:none;"
8387                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/helichrysum-italicum-essential-oil-15ml-1.jpg?v=1769670122&width=300"
8388                 data-product-title="Helichrysum italicum Essential Oil"
8389                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466">
8390            </div>
8391
8392            
8392<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" type="application/json">
8393                [{"id":44111532425538,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"HELCRO-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":44126478205250,"product_id":8025567494466,"position":1,"created_at":"2024-02-14T14:10:54-07:00","updated_at":"2026-01-29T00:02:02-07:00","alt":"Helichrysum italicum Essential Oil - Helichrysum Essential Oil","width":617,"height":617,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/helichrysum-italicum-essential-oil-15ml-1.jpg?v=1769670122","variant_ids":[44111532425538]},"available":true,"name":"Helichrysum italicum Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":15995,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175874","featured_media":{"alt":"Helichrysum italicum Essential Oil - Helichrysum Essential Oil","id":36602306330946,"position":1,"preview_image":{"aspect_ratio":1.0,"height":617,"width":617,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/helichrysum-italicum-essential-oil-15ml-1.jpg?v=1769670122"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":11197}],"price":11197,"compare_at_price":15995,"per_delivery_price":11197,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":13596},{"position":2,"price":12796}],"price":13596,"compare_at_price":15995,"per_delivery_price":13596,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":14396},{"position":2,"price":13596}],"price":14396,"compare_at_price":15995,"per_delivery_price":14396,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":15195},{"position":2,"price":14396}],"price":15195,"compare_at_price":15995,"per_delivery_price":15195,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":14396},{"position":2,"price":13596}],"price":14396,"compare_at_price":15995,"per_delivery_price":14396,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":15195},{"position":2,"price":14396}],"price":15195,"compare_at_price":15995,"per_delivery_price":15195,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":13596},{"position":2,"price":12796}],"price":13596,"compare_at_price":15995,"per_delivery_price":13596,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":14396},{"position":2,"price":13596}],"price":14396,"compare_at_price":15995,"per_delivery_price":14396,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":15195},{"position":2,"price":14396}],"price":15195,"compare_at_price":15995,"per_delivery_price":15195,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064202457455,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"HELCRO-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328887124335,"product_id":8025567494466,"position":8,"created_at":"2025-06-30T23:35:19-06:00","updated_at":"2026-01-29T00:02:02-07:00","alt":"Small brown bottle with a black cap of Helichrysum italicum essential oil on a white background, featuring a red 'LIMITED TIME ONLY!' banner.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Helichrysum_Italicum_1ml.webp?v=1769670122","variant_ids":[52064202457455]},"available":true,"name":"Helichrysum italicum Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1795,"weight":25,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184760","featured_media":{"alt":"Small brown bottle with a black cap of Helichrysum italicum essential oil on a white background, featuring a red 'LIMITED TIME ONLY!' banner.","id":51984769057135,"position":8,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Helichrysum_Italicum_1ml.webp?v=1769670122"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1257}],"price":1257,"compare_at_price":1795,"per_delivery_price":1257,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1436}],"price":1526,"compare_at_price":1795,"per_delivery_price":1526,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1616},{"position":2,"price":1526}],"price":1616,"compare_at_price":1795,"per_delivery_price":1616,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1705},{"position":2,"price":1616}],"price":1705,"compare_at_price":1795,"per_delivery_price":1705,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1616},{"position":2,"price":1526}],"price":1616,"compare_at_price":1795,"per_delivery_price":1616,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1705},{"position":2,"price":1616}],"price":1705,"compare_at_price":1795,"per_delivery_price":1705,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1436}],"price":1526,"compare_at_price":1795,"per_delivery_price":1526,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1616},{"position":2,"price":1526}],"price":1616,"compare_at_price":1795,"per_delivery_price":1616,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1705},{"position":2,"price":1616}],"price":1705,"compare_at_price":1795,"per_delivery_price":1705,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":48953635078466,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"HELCRO-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44126471487810,"product_id":8025567494466,"position":4,"created_at":"2024-02-14T14:10:10-07:00","updated_at":"2026-01-29T00:02:02-07:00","alt":"Helichrysum Essential Oil - 5ml - Rocky Mountain Oils","width":583,"height":583,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/helichrysum-italicum-essential-oil-5ml-1.jpg?v=1769670122","variant_ids":[48953635078466]},"available":true,"name":"Helichrysum italicum Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":7995,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175881","featured_media":{"alt":"Helichrysum Essential Oil - 5ml - Rocky Mountain Oils","id":36602298696002,"position":4,"preview_image":{"aspect_ratio":1.0,"height":583,"width":583,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/helichrysum-italicum-essential-oil-5ml-1.jpg?v=1769670122"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":5597}],"price":5597,"compare_at_price":7995,"per_delivery_price":5597,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6796},{"position":2,"price":6396}],"price":6796,"compare_at_price":7995,"per_delivery_price":6796,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7196},{"position":2,"price":6796}],"price":7196,"compare_at_price":7995,"per_delivery_price":7196,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7595},{"position":2,"price":7196}],"price":7595,"compare_at_price":7995,"per_delivery_price":7595,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7196},{"position":2,"price":6796}],"price":7196,"compare_at_price":7995,"per_delivery_price":7196,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":7595},{"position":2,"price":7196}],"price":7595,"compare_at_price":7995,"per_delivery_price":7595,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6796},{"position":2,"price":6396}],"price":6796,"compare_at_price":7995,"per_delivery_price":6796,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":7196},{"position":2,"price":6796}],"price":7196,"compare_at_price":7995,"per_delivery_price":7196,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":7595},{"position":2,"price":7196}],"price":7595,"compare_at_price":7995,"per_delivery_price":7595,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
8394            </script>
8394<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025567494466" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
8395                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" aria-live="polite" aria-atomic="true">
8396                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" style="display: none;"></span>
8397                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466">$159.95</span>
8398
8399                        
8400                    </div>
8401
8402                    
8403                        <div class="product-option">
8404                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466-0" class="visually-hidden">
8405                                Select Size for Helichrysum italicum Essential Oil
8406                            </label>
8407                            <select
8408                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466-0"
8409                                class="variant-select"
8410                                name="options[Size]"
8411                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466"
8412                                data-index="option0"
8413                            ><option
8414                                        value="15ml"
8415                                        selected="selected"
8416                                    >
8417                                        15ml
8418                                    </option><option
8419                                        value="1ml"
8420                                        
8421                                    >
8422                                        1ml
8423                                    </option><option
8424                                        value="5ml"
8425                                        
8426                                    >
8427                                        5ml
8428                                    </option></select>
8429                        </div>
8430                    
8431                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" class="visually-hidden">
8432                Choose variant for Helichrysum italicum Essential Oil
8433            </label>
8434            <select
8435                name="id"
8436                data-productid="8025567494466"
8437                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466"
8438                class="product-variants-select no-js-only"
8439            ><option
8440                        value="44111532425538"
8441                         selected="selected" 
8442                        
8443                    >
8444                        15ml - $159.95 
8445                    </option><option
8446                        value="52064202457455"
8447                        
8448                        
8449                    >
8450                        1ml - $17.95 
8451                    </option><option
8452                        value="48953635078466"
8453                        
8454                        
8455                    >
8456                        5ml - $79.95 
8457                    </option></select>
8458
8459            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466">
8460                <input type="hidden" name="quantity" value="1">
8461                
8462
8463                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" aria-l
8463ive="assertive"></div>
8464
8465                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466" class="visually-hidden">Adds item to your shopping cart</span>
8466
8467                <button
8468                    class="addtocart-btn add-to-cart"
8469                    type="submit"
8470                    name="add"
8471                    aria-label="Add to Cart - Add Helichrysum italicum Essential Oil to cart"
8472                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466"
8473                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466"
8474                    
8475                >
8476                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025567494466">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
8477                </button>
8478            </div><input type="hidden" name="product-id" value="8025567494466" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
8478<script type="application/ld+json">
8479    {
8480      "@context": "http://schema.org/",
8481      "@type": "Product",
8482      "name": "Helichrysum italicum Essential Oil",
8483      "url": "https:\/\/www.rockymountainoils.com\/products\/helichrysum-italicum-essential-oil","image": [
8484          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/helichrysum-italicum-essential-oil-15ml-1.jpg?v=1769670122\u0026width=617"
8485        ],
8486      "description": "Helichrysum italicum Essential Oil, also known as Immortelle or Everlasting Flower, is steam distilled from the flowers and leaves of the Helichrysum plant. This precious oil offers a rich, floral scent with herbal notes.\nHelichrysum contains beneficial compounds that may support skin health and overall wellness. Its soothing aroma can help create a calming atmosphere when diffused. For topical use, dilute with a carrier oil to enjoy its skin-nourishing properties.\n\n","sku": "HELCRO-S15",
8487      "brand": {
8488        "@type": "Brand",
8489        "name": "Rocky Mountain Oils"
8490      },
8491      "offers": {
8492          "@type": "AggregateOffer",
8493          "availability": "http://schema.org/InStock",
8494          "priceCurrency": "USD",
8495          "highPrice": 159.95,
8496          "lowPrice": 17.95,
8497          "offerCount": 3,
8498          "offers": [{
8499              "@type" : "Offer","sku": "HELCRO-S15","gtin12": "053176175874","availability" : "http://schema.org/InStock",
8500              "price" : 159.95,
8501              "priceCurrency" : "USD",
8502              "priceValidUntil": "2026-12-31",
8503              "url" : "https:\/\/www.rockymountainoils.com\/products\/helichrysum-italicum-essential-oil?variant=44111532425538"
8504            },
8505{
8506              "@type" : "Offer","sku": "HELCRO-1ML","gtin12": "053176184760","availability" : "http://schema.org/InStock",
8507              "price" : 17.95,
8508              "priceCurrency" : "USD",
8509              "priceValidUntil": "2026-12-31",
8510              "url" : "https:\/\/www.rockymountainoils.com\/products\/helichrysum-italicum-essential-oil?variant=52064202457455"
8511            },
8512{
8513              "@type" : "Offer","sku": "HELCRO-S5","gtin12": "053176175881","availability" : "http://schema.org/InStock",
8514              "price" : 79.95,
8515              "priceCurrency" : "USD",
8516              "priceValidUntil": "2026-12-31",
8517              "url" : "https:\/\/www.rockymountainoils.com\/products\/helichrysum-italicum-essential-oil?variant=48953635078466"
8518            }
8519]
8520      }
8521    }
8522    </script>
8522</div>
8523
8524<style>
8525/* Ensure visually-hidden utility exists even if theme lacks it */
8526.visually-hidden {
8527    position: absolute !important;
8528    width: 1px !important;
8529    height: 1px !important;
8530    padding: 0 !important;
8531    margin: -1px !important;
8532    overflow: hidden !important;
8533    clip: rect(0, 0, 0, 0) !important;
8534    white-space: nowrap !important;
8535    border: 0 !important;
8536}
8537
8538/* Ensure the main product image is tappable on iOS */
8539.main-product-image {
8540    cursor: pointer;
8541    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
8542    touch-action: manipulation;
8543}
8544
8545/* ULTIMATE FIX - Override anything that hides select text */
8546.product-variants-select,
8547.product-variants-select.no-js-only,
8548select.product-variants-select,
8549select[id*="ProductSelect-"] {
8550    color: #1a1a1a !important;
8551    opacity: 1 !important;
8552    background-color: #ffffff !important;
8553    -webkit-text-fill-color: #1a1a1a !important;
8554}
8555
8556.product-variants-select option,
8557select[id*="ProductSelect-"] option {
8558    color: #1a1a1a !important;
8559    background-color: #ffffff !important;
8560    -webkit-text-fill-color: #1a1a1a !important;
8561}
8562
8563.product-variants-select option:checked,
8564select[id*="ProductSelect-"] option:checked {
8565    color: #1a1a1a !important;
8566    background-color: #e8f0fe !important;
8567}
8568
8569.product-variants-select option:disabled,
8570select[id*="ProductSelect-"] option:disabled {
8571    color: #6c6c6c !important;
8572    background-color: #f5f5f5 !important;
8573    -webkit-text-fill-color: #6c6c6c !important;
8574    opacity: 1 !important;
8575}
8576
8577.product-variants-select:focus,
8578select[id*="ProductSelect-"]:focus {
8579    color: #1a1a1a !important;
8580    outline: 3px solid #000000ff !important;
8581}
8582</style>
8583                      </div><div class="item">
8584                    	
8584<script>
8585(function() {
8586    class ProductCardVariantSelector {
8587        constructor(container) {
8588            this.container = container;
8589            if (!this.container) return;
8590
8591            this.form = this.container.querySelector('.product-form');
8592            this.variantSelectors = this.container.querySelectorAll('.variant-select');
8593            this.masterSelect = this.container.querySelector('.product-variants-select');
8594            this.productImage = this.container.querySelector('.main-product-image');
8595            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
8596            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
8597            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
8598            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
8599            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
8600            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
8601            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
8602            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
8603            this.saleTag = this.container.querySelector('.hc-sale-tag');
8604            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
8605
8606            if (!this.masterSelect || !this.variantsJsonScript) return;
8607
8608            try {
8609                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
8610            } catch (e) { return; }
8611
8612            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
8613            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
8614
8615            this.init();
8616        }
8617
8618        init() {
8619            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
8620            if (this.productImage) {
8621                let touchStartX = 0, touchStartY = 0, touchMoved = false;
8622                let lastTouchTime = 0;
8623
8624                this.productImage.style.cursor = 'pointer';
8625                this.productImage.setAttribute('role', 'button');
8626                this.productImage.setAttribute('tabindex', '0');
8627
8628                this.productImage.addEventListener('touchstart', (e) => {
8629                    const t = e.touches[0];
8630                    touchStartX = t.clientX;
8631                    touchStartY = t.clientY;
8632                    touchMoved = false;
8633                }, { passive: true });
8634
8635                this.productImage.addEventListener('touchmove', (e) => {
8636                    const t = e.touches[0];
8637                    if (Math.abs(t.clientX - touchStartX) > 10 ||
8638                        Math.abs(t.clientY - touchStartY) > 10) {
8639                        touchMoved = true;
8640                    }
8641                }, { passive: true });
8642
8643                this.productImage.addEventListener('touchend', (e) => {
8644                    if (touchMoved) return;
8645                    lastTouchTime = Date.now();
8646                    e.preventDefault();
8647                    this.onImageTap(e);
8648                }, { passive: false });
8649
8650                // Desktop / non-touch fallback (with double-fire protection after touchend)
8651                this.productImage.addEventListener('click', (e) => {
8652                    if (Date.now() - lastTouchTime < 500) return;
8653                    this.onImageTap(e);
8654                });
8655
8656                this.productImage.addEventListener('keydown', (e) => {
8657                    if (e.key === 'Enter' || e.key === ' ') {
8658                        e.preventDefault();
8659                        this.onImageTap(e);
8660                    }
8661                });
8662            }
8663
8664            // --- Variant select listeners ---
8665            if (this.variantSelectors.length > 0) {
8666                this.variantSelectors.forEach(select => {
8667                    select.addEventListener('change', this.onVariantChange.bind(this));
8668                });
8669                this.updateProductDetails(this.getCurrentVariant());
8670            }
8671        }
8672
8673        // ============================================================
8674        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
8675        // Currently: navigates to the product page.
8676        // ============================================================
8677        onImageTap(e) {
8678            const link = this.container.querySelector('.product-title-link');
8679            if (link && link.href && link.href !== '#') {
8680                window.location.href = link.href;
8681            }
8682        }
8683        // ============================================================
8684
8685        onVariantChange() {
8686            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
8687            const matchedVariant = this.findMatchingVariant(selectedOptions);
8688
8689            if (matchedVariant) {
8690                this.masterSelect.value = matchedVariant.id;
8691                this.updateProductDetails(matchedVariant);
8692                if (this.statusElement) this.statusElement.textContent = '';
8693            } else {
8694                if (this.statusElement) {
8695                    this.statusElement.textContent = 'No available variant matches your selection';
8696                }
8697                this.updateProductDetails(null);
8698            }
8699        }
8700
8701        findMatchingVariant(selectedOptions) {
8702            return this.productVariants.find(variant => {
8703                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
8704                return selectedOptions.every((val, i) => variant.options[i] === val);
8705            });
8706        }
8707
8708        getCurrentVariant() {
8709            if (!this.masterSelect) return null;
8710            const id = this.masterSelect.value;
8711            if (!id) return null;
8712            return this.productVariants.find(v => String(v.id) === String(id)) || null;
8713        }
8714
8715        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
8716        sizedImageUrl(src, width) {
8717            if (!src) return src;
8718            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
8719        }
8720
8721        updateProductDetails(variant) {
8722            this.container.setAttribute('aria-busy', 'true');
8723
8724            if (!variant) {
8725                if (this.addToCartButton) this.addToCartButton.disabled = true;
8726                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
8727                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
8728                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
8729                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
8730                if (this.saleTag) this.saleTag.style.display = 'none';
8731                this.container.setAttribute('aria-busy', 'false');
8732                return;
8733            }
8734
8735            // 1. Image
8736            if (this.productImage) {
8737                if (variant.featured_image && variant.featured_image.src) {
8738                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
8739                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
8740                    this.productImage.src = sized;
8741                    this.productImage.srcset = '';
8742                    this.productImage.alt = variant.featured_image.alt
8743                        ? variant.featured_image.alt
8744                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
8745                } else if (this.mainImageUrl) {
8746                    this.productImage.src = this.mainImageUrl;
8747                    this.productImage.srcset = '';
8748                    this.productImage.alt = this.productTitle;
8749                }
8750            }
8751
8752            // 2. Price
8753            const moneyFormat = "${{amount}}";
8754            const formatMoney = (cents, format) => {
8755                if (typeof cents === 'string') cents = cents.replace('.', '');
8756                let value = '';
8757                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
8758                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
8759
8760                function formatWithDelimiters(number, precision, thousands, decimal) {
8761                    precision = precision ?? 2;
8762                    thousands = thousands ?? ',';
8763                    decimal = decimal ?? '.';
8764                    if (isNaN(number) || number == null) return 0;
8765                    number = (number / 100.0).toFixed(precision);
8766                    const parts = number.split('.');
8767                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
8768                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
8769                    return dollars + centsPart;
8770                }
8771
8772                switch (formatString.match(placeholderRegex)?.[1]) {
8773                    case 'amount': value = formatWithDelimiters(cents, 2); break;
8774                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
8775                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
8776                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
8777                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
8778                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
8779                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
8780                    default: value = formatWithDelimiters(cents, 2);
8781                }
8782                try {
8783                    return formatString.replace(placeholderRegex, value);
8784                } catch (e) {
8785                    const fallback = (cents / 100.0).toFixed(2);
8786                    return formatString.includes('')
8787                        ? formatString.replace(placeholderRegex, fallback)
8788                        : fallback;
8789                }
8790            };
8791
8792            if (this.currentPriceElement) {
8793                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
8794            }
8795            if (this.comparePriceElement && this.priceWrapper) {
8796                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
8797                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
8798                    this.comparePriceElement.style.display = '';
8799                    this.priceWrapper.classList.add('sale');
8800                } else {
8801                    this.comparePriceElement.textContent = '';
8802                    this.comparePriceElement.style.display = 'none';
8803                    this.priceWrapper.classList.remove('sale');
8804                }
8805            }
8806
8807            // 3. Sale tag
8808            if (this.saleTag) {
8809                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
8810                if (isDiscounted && variant.available) {
8811                    this.saleTag.style.display = 'block';
8812                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
8813                    const span = this.saleTag.querySelector('span');
8814                    if (span) span.textContent = discount + '%';
8815                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
8816                    this.saleTag.setAttribute('role', 'status');
8817                } else {
8818                    this.saleTag.style.display = 'none';
8819                }
8820            }
8821
8822            // 4. Add to cart
8823            if (this.addToCartButton && this.addToCartText) {
8824                if (variant.available) {
8825                    this.addToCartButton.disabled = false;
8826                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
8827                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
8828                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
8829                } else {
8830                    this.addToCartButton.disabled = true;
8831                    this.addToCartText.textContent = 'Sold Out';
8832                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
8833                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
8834                }
8835            }
8836            if (this.notifyMeButton) {
8837                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
8838            }
8839
8840            this.container.setAttribute('aria-busy', 'false');
8841        }
8842    }
8843
8844    function initProductCards(root) {
8845        root = root || document;
8846        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
8847            if (cardContainer.dataset.variantSelectorInit === 'true') return;
8848            cardContainer.dataset.variantSelectorInit = 'true';
8849            new ProductCardVariantSelector(cardContainer);
8850        });
8851    }
8852
8853    if (document.readyState === 'loading') {
8854        document.addEventListener('DOMContentLoaded', () => initProductCards());
8855    } else {
8856        initProductCards();
8857    }
8858
8859    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
8860})();
8861</script>
8861<div class="product-card-wrapper" data-product-id="8025539838274" aria-busy="false">
8862
8863    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274"><!-- WISHLIST BUTTON -->
8864        <div class='xb-wishlist__btn-custom'>
8865            <div
8866                class='xb-wishlist__add'
8867                xb-product-id='8025539838274'
8868                xb-product-title='Sandalwood Essential Oil'
8869                xb-product-variant='44111352037698'
8870                xb-is-in-stock='true'
8871                xb-product-handle='sandalwood-essential-oil'
8872            >
8873                <button aria-label="Add Sandalwood Essential Oil to wishlist" aria-pressed="false">
8874                    <svg
8875                        xmlns='http://www.w3.org/2000/svg'
8876                        width='20'
8877                        height='20'
8878                        viewBox='0 0 24 24'
8879                        fill='none'
8880                        stroke='#FF4A71'
8881                        stroke-width='2'
8882                        stroke-linecap='round'
8883                        stroke-linejoin='round'
8884                        aria-hidden='true'
8885                        focusable='false'
8886                    >
8887                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
8888                    </svg>
8889                </button>
8890            </div>
8891
8892            <div class="xb-wishlist__loading" xb-product-id="8025539838274">
8893                <span class="loading-spinner"></span>
8894            </div>
8895
8896            <div class='xb-wishlist__remove' xb-product-id='8025539838274' xb-is-in-stock='true'>
8897                <button aria-label="Remove Sandalwood Essential Oil from wishlist" aria-pressed="true">
8898                    <svg
8899                        xmlns='http://www.w3.org/2000/svg'
8900                        width='20'
8901                        height='20'
8902                        viewBox='0 0 24 24'
8903                        fill='#FF4A71'
8904                        stroke='#FF4A71'
8905                        stroke-width='2'
8906                        stroke-linecap='round'
8907                        stroke-linejoin='round'
8908                        aria-hidden='true'
8909                        focusable='false'
8910                    >
8911                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
8912                    </svg>
8913                </button>
8914            </div>
8915        </div><img
8916              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274"
8917              class="main-product-image"
8918              src="//www.rockymountainoils.com/cdn/shop/files/sandalwood-essential-oil-15ml-1.jpg?crop=center&height=300&v=1773761002&width=300"
8919              alt="Sandalwood Essential Oil - 15ml"
8920              width="300"
8921              height="300"
8922              loading="lazy"
8923            /></div>
8924
8925    <div class="product-content">
8926        <div class="product-title">
8927            <a href="/products/sandalwood-essential-oil" class="product-title-link" aria-label="View Sandalwood Essential Oil">
8928                <h2>Sandalwood Essential Oil</h2>
8929            </a>
8930        </div><div>
8931                <div class="product-subtitle">
8932                    Deep, woodsy, earthy; popular scents for men; reduces stress.
8933                </div>
8934            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025539838274" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
8935            <div class="product-data-store" style="display:none;"
8936                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/sandalwood-essential-oil-15ml-1.jpg?v=1773761002&width=300"
8937                 data-product-title="Sandalwood Essential Oil"
8938                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274">
8939            </div>
8940
8941            
8941<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" type="application/json">
8942                [{"id":44111352037698,"title":"15ml","option1":"15ml","option2":null,"option3":null,"sku":"SANIND-S15","requires_shipping":true,"taxable":true,"featured_image":{"id":43452497068354,"product_id":8025539838274,"position":1,"created_at":"2023-11-28T08:46:51-07:00","updated_at":"2026-03-17T09:23:22-06:00","alt":"Sandalwood Essential Oil - 15ml","width":660,"height":660,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sandalwood-essential-oil-15ml-1.jpg?v=1773761002","variant_ids":[44111352037698]},"available":true,"name":"Sandalwood Essential Oil - 15ml","public_title":"15ml","options":["15ml"],"price":13495,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176642","featured_media":{"alt":"Sandalwood Essential Oil - 15ml","id":35909263982914,"position":1,"preview_image":{"aspect_ratio":1.0,"height":660,"width":660,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sandalwood-essential-oil-15ml-1.jpg?v=1773761002"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":9447}],"price":9447,"compare_at_price":13495,"per_delivery_price":9447,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":11471},{"position":2,"price":10796}],"price":11471,"compare_at_price":13495,"per_delivery_price":11471,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":12146},{"position":2,"price":11471}],"price":12146,"compare_at_price":13495,"per_delivery_price":12146,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":12820},{"position":2,"price":12146}],"price":12820,"compare_at_price":13495,"per_delivery_price":12820,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":12146},{"position":2,"price":11471}],"price":12146,"compare_at_price":13495,"per_delivery_price":12146,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":12820},{"position":2,"price":12146}],"price":12820,"compare_at_price":13495,"per_delivery_price":12820,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":11471},{"position":2,"price":10796}],"price":11471,"compare_at_price":13495,"per_delivery_price":11471,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":12146},{"position":2,"price":11471}],"price":12146,"compare_at_price":13495,"per_delivery_price":12146,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":12820},{"position":2,"price":12146}],"price":12820,"compare_at_price":13495,"per_delivery_price":12820,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44276030538050,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"SANIND-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44621390709058,"product_id":8025539838274,"position":2,"created_at":"2024-03-27T10:27:37-06:00","updated_at":"2026-03-17T09:23:22-06:00","alt":"reliable sandalwood essential oil - 5ml ","width":579,"height":579,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sandalwood-essential-oil-5ml-1.jpg?v=1773761002","variant_ids":[44276030538050]},"available":true,"name":"Sandalwood Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":6795,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"0531761766
894259","featured_media":{"alt":"reliable sandalwood essential oil - 5ml ","id":37105330291010,"position":2,"preview_image":{"aspect_ratio":1.0,"height":579,"width":579,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sandalwood-essential-oil-5ml-1.jpg?v=1773761002"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":4757}],"price":4757,"compare_at_price":6795,"per_delivery_price":4757,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":5776},{"position":2,"price":5436}],"price":5776,"compare_at_price":6795,"per_delivery_price":5776,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6116},{"position":2,"price":5776}],"price":6116,"compare_at_price":6795,"per_delivery_price":6116,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6455},{"position":2,"price":6116}],"price":6455,"compare_at_price":6795,"per_delivery_price":6455,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6116},{"position":2,"price":5776}],"price":6116,"compare_at_price":6795,"per_delivery_price":6116,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6455},{"position":2,"price":6116}],"price":6455,"compare_at_price":6795,"per_delivery_price":6455,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":5776},{"position":2,"price":5436}],"price":5776,"compare_at_price":6795,"per_delivery_price":5776,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":6116},{"position":2,"price":5776}],"price":6116,"compare_at_price":6795,"per_delivery_price":6116,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":6455},{"position":2,"price":6116}],"price":6455,"compare_at_price":6795,"per_delivery_price":6455,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064210354543,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"SANIND-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328890302831,"product_id":8025539838274,"position":3,"created_at":"2025-06-30T23:36:45-06:00","updated_at":"2026-03-17T09:23:22-06:00","alt":"Small bottle labeled 'Sandalwood' with a red 'LIMITED TIME ONLY!' banner on a light gray background","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Sandalwood_1ml.webp?v=1773761002","variant_ids":[52064210354543]},"available":false,"name":"Sandalwood Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1695,"weight":45,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184777","featured_media":{"alt":"Small bottle labeled 'Sandalwood' with a red 'LIMITED TIME ONLY!' banner on a light gray background","id":51984772235631,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Sandalwood_1ml.webp?v=1773761002"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1187}],"price":1187,"compare_at_price":1695,"per_delivery_price":1187,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1441},{"position":2,"price":1356}],"price":1441,"compare_at_price":1695,"per_delivery_price":1441,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1441},{"position":2,"price":1356}],"price":1441,"compare_at_price":1695,"per_delivery_price":1441,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
8943            </script>
8943<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025539838274" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
8944                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" aria-live="polite" aria-atomic="true">
8945                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" style="display: none;"></span>
8946                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274">$134.95</span>
8947
8948                        
8949                    </div>
8950
8951                    
8952                        <div class="product-option">
8953                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274-0" class="visually-hidden">
8954                                Select Size for Sandalwood Essential Oil
8955                            </label>
8956                            <select
8957                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274-0"
8958                                class="variant-select"
8959                                name="options[Size]"
8960                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274"
8961                                data-index="option0"
8962                            ><option
8963                                        value="15ml"
8964                                        selected="selected"
8965                                    >
8966                                        15ml
8967                                    </option><option
8968                                        value="5ml"
8969                                        
8970                                    >
8971                                        5ml
8972                                    </option><option
8973                                        value="1ml"
8974                                        
8975                                    >
8976                                        1ml
8977                                    </option></select>
8978                        </div>
8979                    
8980                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" class="visually-hidden">
8981                Choose variant for Sandalwood Essential Oil
8982            </label>
8983            <select
8984                name="id"
8985                data-productid="8025539838274"
8986                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274"
8987                class="product-variants-select no-js-only"
8988            ><option
8989                        value="44111352037698"
8990                         selected="selected" 
8991                        
8992                    >
8993                        15ml - $134.95 
8994                    </option><option
8995                        value="44276030538050"
8996                        
8997                        
8998                    >
8999                        5ml - $67.95 
9000                    </option><option
9001                        value="52064210354543"
9002                        
9003                        disabled="disabled"
9004                    >
9005                        1ml - $16.95 - Sold Out
9006                    </option></select>
9007
9008            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274">
9009                <input type="hidden" name="quantity" value="1">
9010                
9011
9012                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" aria-live="assertive"></div>
9013
9014                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274" class="visually-hidden">Adds item to your shopping cart</span>
9015
9016                <button
9017                    class="addtocart-btn add-to-cart"
9018                    type="submit"
9019                    name="add"
9020                    aria-label="Add to Cart - Add Sandalwood Essential Oil to cart"
9021                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274"
9022                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274"
9023                    
9024                >
9025                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539838274">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
9026                </button>
9027            </div><input type="hidden" name="product-id" value="8025539838274" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
9027<script type="application/ld+json">
9028    {
9029      "@context": "http://schema.org/",
9030      "@type": "Product",
9031      "name": "Sandalwood Essential Oil",
9032      "url": "https:\/\/www.rockymountainoils.com\/products\/sandalwood-essential-oil","image": [
9033          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/sandalwood-essential-oil-15ml-1.jpg?v=1773761002\u0026width=660"
9034        ],
9035      "description": "Sandalwood essential oil offers a rich, grounding aroma that may help promote a sense of calm and centeredness. Steam distilled from the wood of the Santalum album tree, this luxurious oil is prized for its versatile uses and alluring scent.\nThe deep, woody fragrance of Sandalwood can help create a peaceful atmosphere, potentially supporting relaxation and emotional balance. Many find it beneficial for enhancing focus and mental clarity. Its warm, slightly sweet aroma makes it popular in personal care products and aromatherapy practices.","sku": "SANIND-S15",
9036      "brand": {
9037        "@type": "Brand",
9038        "name": "Rocky Mountain Oils"
9039      },
9040      "offers": {
9041          "@type": "AggregateOffer",
9042          "availability": "http://schema.org/InStock",
9043          "priceCurrency": "USD",
9044          "highPrice": 134.95,
9045          "lowPrice": 16.95,
9046          "offerCount": 3,
9047          "offers": [{
9048              "@type" : "Offer","sku": "SANIND-S15","gtin12": "053176176642","availability" : "http://schema.org/InStock",
9049              "price" : 134.95,
9050              "priceCurrency" : "USD",
9051              "priceValidUntil": "2026-12-31",
9052              "url" : "https:\/\/www.rockymountainoils.com\/products\/sandalwood-essential-oil?variant=44111352037698"
9053            },
9054{
9055              "@type" : "Offer","sku": "SANIND-S5","gtin12": "053176176659","availability" : "http://schema.org/InStock",
9056              "price" : 67.95,
9057              "priceCurrency" : "USD",
9058              "priceValidUntil": "2026-12-31",
9059              "url" : "https:\/\/www.rockymountainoils.com\/products\/sandalwood-essential-oil?variant=44276030538050"
9060            },
9061{
9062              "@type" : "Offer","sku": "SANIND-1ML","gtin12": "053176184777","availability" : "http://schema.org/OutOfStock",
9063              "price" : 16.95,
9064              "priceCurrency" : "USD",
9065              "priceValidUntil": "2026-12-31",
9066              "url" : "https:\/\/www.rockymountainoils.com\/products\/sandalwood-essential-oil?variant=52064210354543"
9067            }
9068]
9069      }
9070    }
9071    </script>
9071</div>
9072
9073<style>
9074/* Ensure visually-hidden utility exists even if theme lacks it */
9075.visually-hidden {
9076    position: absolute !important;
9077    width: 1px !important;
9078    height: 1px !important;
9079    padding: 0 !important;
9080    margin: -1px !important;
9081    overflow: hidden !important;
9082    clip: rect(0, 0, 0, 0) !important;
9083    white-space: nowrap !important;
9084    border: 0 !important;
9085}
9086
9087/* Ensure the main product image is tappable on iOS */
9088.main-product-image {
9089    cursor: pointer;
9090    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
9091    touch-action: manipulation;
9092}
9093
9094/* ULTIMATE FIX - Override anything that hides select text */
9095.product-variants-select,
9096.product-variants-select.no-js-only,
9097select.product-variants-select,
9098select[id*="ProductSelect-"] {
9099    color: #1a1a1a !important;
9100    opacity: 1 !important;
9101    background-color: #ffffff !important;
9102    -webkit-text-fill-color: #1a1a1a !important;
9103}
9104
9105.product-variants-select option,
9106select[id*="ProductSelect-"] option {
9107    color: #1a1a1a !important;
9108    background-color: #ffffff !important;
9109    -webkit-text-fill-color: #1a1a1a !important;
9110}
9111
9112.product-variants-select option:checked,
9113select[id*="ProductSelect-"] option:checked {
9114    color: #1a1a1a !important;
9115    background-color: #e8f0fe !important;
9116}
9117
9118.product-variants-select option:disabled,
9119select[id*="ProductSelect-"] option:disabled {
9120    color: #6c6c6c !important;
9121    background-color: #f5f5f5 !important;
9122    -webkit-text-fill-color: #6c6c6c !important;
9123    opacity: 1 !important;
9124}
9125
9126.product-variants-select:focus,
9127select[id*="ProductSelect-"]:focus {
9128    color: #1a1a1a !important;
9129    outline: 3px solid #000000ff !important;
9130}
9131</style>
9132                      </div><div class="item">
9133                    	
9133<script>
9134(function() {
9135    class ProductCardVariantSelector {
9136        constructor(container) {
9137            this.container = container;
9138            if (!this.container) return;
9139
9140            this.form = this.container.querySelector('.product-form');
9141            this.variantSelectors = this.container.querySelectorAll('.variant-select');
9142            this.masterSelect = this.container.querySelector('.product-variants-select');
9143            this.productImage = this.container.querySelector('.main-product-image');
9144            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
9145            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
9146            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
9147            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
9148            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
9149            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
9150            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
9151            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
9152            this.saleTag = this.container.querySelector('.hc-sale-tag');
9153            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
9154
9155            if (!this.masterSelect || !this.variantsJsonScript) return;
9156
9157            try {
9158                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
9159            } catch (e) { return; }
9160
9161            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
9162            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
9163
9164            this.init();
9165        }
9166
9167        init() {
9168            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
9169            if (this.productImage) {
9170                let touchStartX = 0, touchStartY = 0, touchMoved = false;
9171                let lastTouchTime = 0;
9172
9173                this.productImage.style.cursor = 'pointer';
9174                this.productImage.setAttribute('role', 'button');
9175                this.productImage.setAttribute('tabindex', '0');
9176
9177                this.productImage.addEventListener('touchstart', (e) => {
9178                    const t = e.touches[0];
9179                    touchStartX = t.clientX;
9180                    touchStartY = t.clientY;
9181                    touchMoved = false;
9182                }, { passive: true });
9183
9184                this.productImage.addEventListener('touchmove', (e) => {
9185                    const t = e.touches[0];
9186                    if (Math.abs(t.clientX - touchStartX) > 10 ||
9187                        Math.abs(t.clientY - touchStartY) > 10) {
9188                        touchMoved = true;
9189                    }
9190                }, { passive: true });
9191
9192                this.productImage.addEventListener('touchend', (e) => {
9193                    if (touchMoved) return;
9194                    lastTouchTime = Date.now();
9195                    e.preventDefault();
9196                    this.onImageTap(e);
9197                }, { passive: false });
9198
9199                // Desktop / non-touch fallback (with double-fire protection after touchend)
9200                this.productImage.addEventListener('click', (e) => {
9201                    if (Date.now() - lastTouchTime < 500) return;
9202                    this.onImageTap(e);
9203                });
9204
9205                this.productImage.addEventListener('keydown', (e) => {
9206                    if (e.key === 'Enter' || e.key === ' ') {
9207                        e.preventDefault();
9208                        this.onImageTap(e);
9209                    }
9210                });
9211            }
9212
9213            // --- Variant select listeners ---
9214            if (this.variantSelectors.length > 0) {
9215                this.variantSelectors.forEach(select => {
9216                    select.addEventListener('change', this.onVariantChange.bind(this));
9217                });
9218                this.updateProductDetails(this.getCurrentVariant());
9219            }
9220        }
9221
9222        // ============================================================
9223        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
9224        // Currently: navigates to the product page.
9225        // ============================================================
9226        onImageTap(e) {
9227            const link = this.container.querySelector('.product-title-link');
9228            if (link && link.href && link.href !== '#') {
9229                window.location.href = link.href;
9230            }
9231        }
9232        // ============================================================
9233
9234        onVariantChange() {
9235            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
9236            const matchedVariant = this.findMatchingVariant(selectedOptions);
9237
9238            if (matchedVariant) {
9239                this.masterSelect.value = matchedVariant.id;
9240                this.updateProductDetails(matchedVariant);
9241                if (this.statusElement) this.statusElement.textContent = '';
9242            } else {
9243                if (this.statusElement) {
9244                    this.statusElement.textContent = 'No available variant matches your selection';
9245                }
9246                this.updateProductDetails(null);
9247            }
9248        }
9249
9250        findMatchingVariant(selectedOptions) {
9251            return this.productVariants.find(variant => {
9252                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
9253                return selectedOptions.every((val, i) => variant.options[i] === val);
9254            });
9255        }
9256
9257        getCurrentVariant() {
9258            if (!this.masterSelect) return null;
9259            const id = this.masterSelect.value;
9260            if (!id) return null;
9261            return this.productVariants.find(v => String(v.id) === String(id)) || null;
9262        }
9263
9264        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
9265        sizedImageUrl(src, width) {
9266            if (!src) return src;
9267            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
9268        }
9269
9270        updateProductDetails(variant) {
9271            this.container.setAttribute('aria-busy', 'true');
9272
9273            if (!variant) {
9274                if (this.addToCartButton) this.addToCartButton.disabled = true;
9275                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
9276                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
9277                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
9278                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
9279                if (this.saleTag) this.saleTag.style.display = 'none';
9280                this.container.setAttribute('aria-busy', 'false');
9281                return;
9282            }
9283
9284            // 1. Image
9285            if (this.productImage) {
9286                if (variant.featured_image && variant.featured_image.src) {
9287                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
9288                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
9289                    this.productImage.src = sized;
9290                    this.productImage.srcset = '';
9291                    this.productImage.alt = variant.featured_image.alt
9292                        ? variant.featured_image.alt
9293                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
9294                } else if (this.mainImageUrl) {
9295                    this.productImage.src = this.mainImageUrl;
9296                    this.productImage.srcset = '';
9297                    this.productImage.alt = this.productTitle;
9298                }
9299            }
9300
9301            // 2. Price
9302            const moneyFormat = "${{amount}}";
9303            const formatMoney = (cents, format) => {
9304                if (typeof cents === 'string') cents = cents.replace('.', '');
9305                let value = '';
9306                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
9307                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
9308
9309                function formatWithDelimiters(number, precision, thousands, decimal) {
9310                    precision = precision ?? 2;
9311                    thousands = thousands ?? ',';
9312                    decimal = decimal ?? '.';
9313                    if (isNaN(number) || number == null) return 0;
9314                    number = (number / 100.0).toFixed(precision);
9315                    const parts = number.split('.');
9316                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
9317                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
9318                    return dollars + centsPart;
9319                }
9320
9321                switch (formatString.match(placeholderRegex)?.[1]) {
9322                    case 'amount': value = formatWithDelimiters(cents, 2); break;
9323                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
9324                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
9325                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
9326                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
9327                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
9328                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
9329                    default: value = formatWithDelimiters(cents, 2);
9330                }
9331                try {
9332                    return formatString.replace(placeholderRegex, value);
9333                } catch (e) {
9334                    const fallback = (cents / 100.0).toFixed(2);
9335                    return formatString.includes('')
9336                        ? formatString.replace(placeholderRegex, fallback)
9337                        : fallback;
9338                }
9339            };
9340
9341            if (this.currentPriceElement) {
9342                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
9343            }
9344            if (this.comparePriceElement && this.priceWrapper) {
9345                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
9346                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
9347                    this.comparePriceElement.style.display = '';
9348                    this.priceWrapper.classList.add('sale');
9349                } else {
9350                    this.comparePriceElement.textContent = '';
9351                    this.comparePriceElement.style.display = 'none';
9352                    this.priceWrapper.classList.remove('sale');
9353                }
9354            }
9355
9356            // 3. Sale tag
9357            if (this.saleTag) {
9358                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
9359                if (isDiscounted && variant.available) {
9360                    this.saleTag.style.display = 'block';
9361                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
9362                    const span = this.saleTag.querySelector('span');
9363                    if (span) span.textContent = discount + '%';
9364                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
9365                    this.saleTag.setAttribute('role', 'status');
9366                } else {
9367                    this.saleTag.style.display = 'none';
9368                }
9369            }
9370
9371            // 4. Add to cart
9372            if (this.addToCartButton && this.addToCartText) {
9373                if (variant.available) {
9374                    this.addToCartButton.disabled = false;
9375                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
9376                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
9377                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
9378                } else {
9379                    this.addToCartButton.disabled = true;
9380                    this.addToCartText.textContent = 'Sold Out';
9381                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
9382                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
9383                }
9384            }
9385            if (this.notifyMeButton) {
9386                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
9387            }
9388
9389            this.container.setAttribute('aria-busy', 'false');
9390        }
9391    }
9392
9393    function initProductCards(root) {
9394        root = root || document;
9395        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
9396            if (cardContainer.dataset.variantSelectorInit === 'true') return;
9397            cardContainer.dataset.variantSelectorInit = 'true';
9398            new ProductCardVariantSelector(cardContainer);
9399        });
9400    }
9401
9402    if (document.readyState === 'loading') {
9403        document.addEventListener('DOMContentLoaded', () => initProductCards());
9404    } else {
9405        initProductCards();
9406    }
9407
9408    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
9409})();
9410</script>
9410<div class="product-card-wrapper" data-product-id="8025537380674" aria-busy="false">
9411
9412    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674"><!-- WISHLIST BUTTON -->
9413        <div class='xb-wishlist__btn-custom'>
9414            <div
9415                class='xb-wishlist__add'
9416                xb-product-id='8025537380674'
9417                xb-product-title='Rose Essential Oil'
9418                xb-product-variant='44111325430082'
9419                xb-is-in-stock='true'
9420                xb-product-handle='rose-essential-oil'
9421            >
9422                <button aria-label="Add Rose Essential Oil to wishlist" aria-pressed="false">
9423                    <svg
9424                        xmlns='http://www.w3.org/2000/svg'
9425                        width='20'
9426                        height='20'
9427                        viewBox='0 0 24 24'
9428                        fill='none'
9429                        stroke='#FF4A71'
9430                        stroke-width='2'
9431                        stroke-linecap='round'
9432                        stroke-linejoin='round'
9433                        aria-hidden='true'
9434                        focusable='false'
9435                    >
9436                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
9437                    </svg>
9438                </button>
9439            </div>
9440
9441            <div class="xb-wishlist__loading" xb-product-id="8025537380674">
9442                <span class="loading-spinner"></span>
9443            </div>
9444
9445            <div class='xb-wishlist__remove' xb-product-id='8025537380674' xb-is-in-stock='true'>
9446                <button aria-label="Remove Rose Essential Oil from wishlist" aria-pressed="true">
9447                    <svg
9448                        xmlns='http://www.w3.org/2000/svg'
9449                        width='20'
9450                        height='20'
9451                        viewBox='0 0 24 24'
9452                        fill='#FF4A71'
9453                        stroke='#FF4A71'
9454                        stroke-width='2'
9455                        stroke-linecap='round'
9456                        stroke-linejoin='round'
9457                        aria-hidden='true'
9458                        focusable='false'
9459                    >
9460                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
9461                    </svg>
9462                </button>
9463            </div>
9464        </div><img
9465              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674"
9466              class="main-product-image"
9467              src="//www.rockymountainoils.com/cdn/shop/files/rose-essential-oil-5ml-1.jpg?crop=center&height=300&v=1754576332&width=300"
9468              alt="Rose Essential Oil - 5ml - Rocky Mountain Oils"
9469              width="300"
9470              height="300"
9471              loading="lazy"
9472            /></div>
9473
9474    <div class="product-content">
9475        <div class="product-title">
9476            <a href="/products/rose-essential-oil" class="product-title-link" aria-label="View Rose Essential Oil">
9477                <h2>Rose Essential Oil</h2>
9478            </a>
9479        </div><div>
9480                <div class="product-subtitle">
9481                    Uplifting floral aroma; soothes grief and promotes healing.
9482                </div>
9483            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025537380674" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
9484            <div class="product-data-store" style="display:none;"
9485                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/rose-essential-oil-5ml-1.jpg?v=1754576332&width=300"
9486                 data-product-title="Rose Essential Oil"
9487                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674">
9488            </div>
9489
9490            
9490<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" type="application/json">
9491                [{"id":44111325430082,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"ROSBUL-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44621338870082,"product_id":8025537380674,"position":1,"created_at":"2024-03-27T10:22:18-06:00","updated_at":"2025-08-07T08:18:52-06:00","alt":"Rose Essential Oil - 5ml - Rocky Mountain Oils","width":513,"height":513,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/rose-essential-oil-5ml-1.jpg?v=1754576332","variant_ids":[44111325430082]},"available":true,"name":"Rose Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":19995,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176550","featured_media":{"alt":"Rose Essential Oil - 5ml - Rocky Mountain Oils","id":37105278517570,"position":1,"preview_image":{"aspect_ratio":1.0,"height":513,"width":513,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/rose-essential-oil-5ml-1.jpg?v=1754576332"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":13997}],"price":13997,"compare_at_price":19995,"per_delivery_price":13997,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":16996},{"position":2,"price":15996}],"price":16996,"compare_at_price":19995,"per_delivery_price":16996,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":17996},{"position":2,"price":16996}],"price":17996,"compare_at_price":19995,"per_delivery_price":17996,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":18995},{"position":2,"price":17996}],"price":18995,"compare_at_price":19995,"per_delivery_price":18995,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":17996},{"position":2,"price":16996}],"price":17996,"compare_at_price":19995,"per_delivery_price":17996,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":18995},{"position":2,"price":17996}],"price":18995,"compare_at_price":19995,"per_delivery_price":18995,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":16996},{"position":2,"price":15996}],"price":16996,"compare_at_price":19995,"per_delivery_price":16996,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":17996},{"position":2,"price":16996}],"price":17996,"compare_at_price":19995,"per_delivery_price":17996,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":18995},{"position":2,"price":17996}],"price":18995,"compare_at_price":19995,"per_delivery_price":18995,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064215433583,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"ROSBUL-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328894595439,"product_id":8025537380674,"position":4,"created_at":"2025-06-30T23:38:07-06:00","updated_at":"2025-08-07T08:18:52-06:00","alt":"Small brown bottle with a black cap of Rose essential oil on a white background, featuring a 'LIMITED TIME ONLY!' banner.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rose_1ml_a8716da6-eb41-492b-a6f7-9eef6fdac771.webp?v=1754576332","variant_ids":[52064215433583]},"available":true,"name":"Rose Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":4295,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184784","featured_media":{"alt":"Small brown bottle with a black cap of Rose essential oil on a white background, featuring a 'LIMITED TIME ONLY!' banner.","id":51984776036719,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Rose_1ml_a8716da6-eb41-492b-a6f7-9eef6fdac771.webp?v=1754576332"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":3007}],"price":3007,"compare_at_price":4295,"per_delivery_price":3007,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3651},{"position":2,"price":3436}],"price":3651,"compare_at_price":4295,"per_delivery_price":3651,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3866},{"position":2,"price":3651}],"price":3866,"compare_at_price":4295,"per_delivery_price":3866,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":4080},{"position":2,"price":3866}],"price":4080,"compare_at_price":4295,"per_delivery_price":4080,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":3866},{"position":2,"price":3651}],"price":3866,"compare_at_price":4295,"per_delivery_price":3866,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":4080},{"position":2,"price":3866}],"price":4080,"compare_at_price":4295,"per_delivery_price":4080,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":3651},{"position":2,"price":3436}],"price":3651,"compare_at_price":4295,"per_delivery_price":3651,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":3866},{"position":2,"price":3651}],"price":3866,"compare_at_price":4295,"per_delivery_price":3866,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":4080},{"position":2,"price":3866}],"price":4080,"compare_at_price":4295,"per_delivery_price":4080,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
9492            </script>
9492<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025537380674" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
9493                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" aria-live="polite" aria-atomic="true">
9494                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" style="display: none;"></span>
9495                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674">$199.95</span>
9496
9497                        
9498                    </div>
9499
9500                    
9501                        <div class="product-option">
9502                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674-0" class="visually-hidden">
9503                                Select Size for Rose Essential Oil
9504                            </label>
9505                            <select
9506                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674-0"
9507                                class="variant-select"
9508                                name="options[Size]"
9509                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674"
9510                                data-index="option0"
9511                            ><option
9512                                        value="5ml"
9513                                        selected="selected"
9514                                    >
9515                                        5ml
9516                                    </option><option
9517                                        value="1ml"
9518                                        
9519                                    >
9520                                        1ml
9521                                    </option></select>
9522                        </div>
9523                    
9524                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" class="visually-hidden">
9525                Choose variant for Rose Essential Oil
9526            </label>
9527            <select
9528                name="id"
9529                data-productid="8025537380674"
9530                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674"
9531                class="product-variants-select no-js-only"
9532            ><option
9533                        value="44111325430082"
9534                         selected="selected" 
9535                        
9536                    >
9537                        5ml - $199.95 
9538                    </option><option
9539                        value="52064215433583"
9540                        
9541                        
9542                    >
9543                        1ml - $42.95 
9544                    </option></select>
9545
9546            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674">
9547                <input type="hidden" name="quantity" value="1">
9548                
9549
9550                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" aria-live="assertive"></div>
9551
9552                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674" class="visually-hidden">Adds item to your shopping cart</span>
9553
9554                <button
9555                    class="addtocart-btn add-to-cart"
9556                    type="submit"
9557                    name="add"
9558                    aria-label="Add to Cart - Add Rose Essential Oil to cart"
9559                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674"
9560                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674"
9561                    
9562                >
9563                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025537380674">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
9564                </button>
9565            </div><input type="hidden" name="product-id" value="8025537380674" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
9565<script type="application/ld+json">
9566    {
9567      "@context": "http://schema.org/",
9568      "@type": "Product",
9569      "name": "Rose Essential Oil",
9570      "url": "https:\/\/www.rockymountainoils.com\/products\/rose-essential-oil","image": [
9571          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/rose-essential-oil-5ml-1.jpg?v=1754576332\u0026width=513"
9572        ],
9573      "description": "Indulge in the exquisite aroma of pure Rose Essential Oil. Known as the \"Queen of Essential Oils,\" this luxurious oil offers a captivating scent that uplifts the senses and creates a romantic ambiance. Steam distilled from rose petals, it carries a deep, floral fragrance that's both soothing and invigorating.\nRose Essential Oil is prized for its potential to support skin health, offering moisturizing properties that may help promote a radiant complexion. Its enchanting aroma can be used in natural perfumes, home cleaning products, and personal care items to add a touch of elegance and grace to your daily routine.","sku": "ROSBUL-S5",
9574      "brand": {
9575        "@type": "Brand",
9576        "name": "Rocky Mountain Oils"
9577      },
9578      "offers": {
9579          "@type": "AggregateOffer",
9580          "availability": "http://schema.org/InStock",
9581          "priceCurrency": "USD",
9582          "highPrice": 199.95,
9583          "lowPrice": 42.95,
9584          "offerCount": 2,
9585          "offers": [{
9586              "@type" : "Offer","sku": "ROSBUL-S5","gtin12": "053176176550","availability" : "http://schema.org/InStock",
9587              "price" : 199.95,
9588              "priceCurrency" : "USD",
9589              "priceValidUntil": "2026-12-31",
9590              "url" : "https:\/\/www.rockymountainoils.com\/products\/rose-essential-oil?variant=44111325430082"
9591            },
9592{
9593              "@type" : "Offer","sku": "ROSBUL-1ML","gtin12": "053176184784","availability" : "http://schema.org/InStock",
9594              "price" : 42.95,
9595              "priceCurrency" : "USD",
9596              "priceValidUntil": "2026-12-31",
9597              "url" : "https:\/\/www.rockymountainoils.com\/products\/rose-essential-oil?variant=52064215433583"
9598            }
9599]
9600      }
9601    }
9602    </script>
9602</div>
9603
9604<style>
9605/* Ensure visually-hidden utility exists even if theme lacks it */
9606.visually-hidden {
9607    position: absolute !important;
9608    width: 1px !important;
9609    height: 1px !important;
9610    padding: 0 !important;
9611    margin: -1px !important;
9612    overflow: hidden !important;
9613    clip: rect(0, 0, 0, 0) !important;
9614    white-space: nowrap !important;
9615    border: 0 !important;
9616}
9617
9618/* Ensure the main product image is tappable on iOS */
9619.main-product-image {
9620    cursor: pointer;
9621    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
9622    touch-action: manipulation;
9623}
9624
9625/* ULTIMATE FIX - Override anything that hides select text */
9626.product-variants-select,
9627.product-variants-select.no-js-only,
9628select.product-variants-select,
9629select[id*="ProductSelect-"] {
9630    color: #1a1a1a !important;
9631    opacity: 1 !important;
9632    background-color: #ffffff !important;
9633    -webkit-text-fill-color: #1a1a1a !important;
9634}
9635
9636.product-variants-select option,
9637select[id*="ProductSelect-"] option {
9638    color: #1a1a1a !important;
9639    background-color: #ffffff !important;
9640    -webkit-text-fill-color: #1a1a1a !important;
9641}
9642
9643.product-variants-select option:checked,
9644select[id*="ProductSelect-"] option:checked {
9645    color: #1a1a1a !important;
9646    background-color: #e8f0fe !important;
9647}
9648
9649.product-variants-select option:disabled,
9650select[id*="ProductSelect-"] option:disabled {
9651    color: #6c6c6c !important;
9652    background-color: #f5f5f5 !important;
9653    -webkit-text-fill-color: #6c6c6c !important;
9654    opacity: 1 !important;
9655}
9656
9657.product-variants-select:focus,
9658select[id*="ProductSelect-"]:focus {
9659    color: #1a1a1a !important;
9660    outline: 3px solid #000000ff !important;
9661}
9662</style>
9663                      </div><div class="item">
9664                    	
9664<script>
9665(function() {
9666    class ProductCardVariantSelector {
9667        constructor(container) {
9668            this.container = container;
9669            if (!this.container) return;
9670
9671            this.form = this.container.querySelector('.product-form');
9672            this.variantSelectors = this.container.querySelectorAll('.variant-select');
9673            this.masterSelect = this.container.querySelector('.product-variants-select');
9674            this.productImage = this.container.querySelector('.main-product-image');
9675            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
9676            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
9677            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
9678            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
9679            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
9680            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
9681            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
9682            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
9683            this.saleTag = this.container.querySelector('.hc-sale-tag');
9684            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
9685
9686            if (!this.masterSelect || !this.variantsJsonScript) return;
9687
9688            try {
9689                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
9690            } catch (e) { return; }
9691
9692            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
9693            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
9694
9695            this.init();
9696        }
9697
9698        init() {
9699            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
9700            if (this.productImage) {
9701                let touchStartX = 0, touchStartY = 0, touchMoved = false;
9702                let lastTouchTime = 0;
9703
9704                this.productImage.style.cursor = 'pointer';
9705                this.productImage.setAttribute('role', 'button');
9706                this.productImage.setAttribute('tabindex', '0');
9707
9708                this.productImage.addEventListener('touchstart', (e) => {
9709                    const t = e.touches[0];
9710                    touchStartX = t.clientX;
9711                    touchStartY = t.clientY;
9712                    touchMoved = false;
9713                }, { passive: true });
9714
9715                this.productImage.addEventListener('touchmove', (e) => {
9716                    const t = e.touches[0];
9717                    if (Math.abs(t.clientX - touchStartX) > 10 ||
9718                        Math.abs(t.clientY - touchStartY) > 10) {
9719                        touchMoved = true;
9720                    }
9721                }, { passive: true });
9722
9723                this.productImage.addEventListener('touchend', (e) => {
9724                    if (touchMoved) return;
9725                    lastTouchTime = Date.now();
9726                    e.preventDefault();
9727                    this.onImageTap(e);
9728                }, { passive: false });
9729
9730                // Desktop / non-touch fallback (with double-fire protection after touchend)
9731                this.productImage.addEventListener('click', (e) => {
9732                    if (Date.now() - lastTouchTime < 500) return;
9733                    this.onImageTap(e);
9734                });
9735
9736                this.productImage.addEventListener('keydown', (e) => {
9737                    if (e.key === 'Enter' || e.key === ' ') {
9738                        e.preventDefault();
9739                        this.onImageTap(e);
9740                    }
9741                });
9742            }
9743
9744            // --- Variant select listeners ---
9745            if (this.variantSelectors.length > 0) {
9746                this.variantSelectors.forEach(select => {
9747                    select.addEventListener('change', this.onVariantChange.bind(this));
9748                });
9749                this.updateProductDetails(this.getCurrentVariant());
9750            }
9751        }
9752
9753        // ============================================================
9754        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
9755        // Currently: navigates to the product page.
9756        // ============================================================
9757        onImageTap(e) {
9758            const link = this.container.querySelector('.product-title-link');
9759            if (link && link.href && link.href !== '#') {
9760                window.location.href = link.href;
9761            }
9762        }
9763        // ============================================================
9764
9765        onVariantChange() {
9766            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
9767            const matchedVariant = this.findMatchingVariant(selectedOptions);
9768
9769            if (matchedVariant) {
9770                this.masterSelect.value = matchedVariant.id;
9771                this.updateProductDetails(matchedVariant);
9772                if (this.statusElement) this.statusElement.textContent = '';
9773            } else {
9774                if (this.statusElement) {
9775                    this.statusElement.textContent = 'No available variant matches your selection';
9776                }
9777                this.updateProductDetails(null);
9778            }
9779        }
9780
9781        findMatchingVariant(selectedOptions) {
9782            return this.productVariants.find(variant => {
9783                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
9784                return selectedOptions.every((val, i) => variant.options[i] === val);
9785            });
9786        }
9787
9788        getCurrentVariant() {
9789            if (!this.masterSelect) return null;
9790            const id = this.masterSelect.value;
9791            if (!id) return null;
9792            return this.productVariants.find(v => String(v.id) === String(id)) || null;
9793        }
9794
9795        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
9796        sizedImageUrl(src, width) {
9797            if (!src) return src;
9798            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
9799        }
9800
9801        updateProductDetails(variant) {
9802            this.container.setAttribute('aria-busy', 'true');
9803
9804            if (!variant) {
9805                if (this.addToCartButton) this.addToCartButton.disabled = true;
9806                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
9807                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
9808                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
9809                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
9810                if (this.saleTag) this.saleTag.style.display = 'none';
9811                this.container.setAttribute('aria-busy', 'false');
9812                return;
9813            }
9814
9815            // 1. Image
9816            if (this.productImage) {
9817                if (variant.featured_image && variant.featured_image.src) {
9818                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
9819                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
9820                    this.productImage.src = sized;
9821                    this.productImage.srcset = '';
9822                    this.productImage.alt = variant.featured_image.alt
9823                        ? variant.featured_image.alt
9824                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
9825                } else if (this.mainImageUrl) {
9826                    this.productImage.src = this.mainImageUrl;
9827                    this.productImage.srcset = '';
9828                    this.productImage.alt = this.productTitle;
9829                }
9830            }
9831
9832            // 2. Price
9833            const moneyFormat = "${{amount}}";
9834            const formatMoney = (cents, format) => {
9835                if (typeof cents === 'string') cents = cents.replace('.', '');
9836                let value = '';
9837                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
9838                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
9839
9840                function formatWithDelimiters(number, precision, thousands, decimal) {
9841                    precision = precision ?? 2;
9842                    thousands = thousands ?? ',';
9843                    decimal = decimal ?? '.';
9844                    if (isNaN(number) || number == null) return 0;
9845                    number = (number / 100.0).toFixed(precision);
9846                    const parts = number.split('.');
9847                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
9848                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
9849                    return dollars + centsPart;
9850                }
9851
9852                switch (formatString.match(placeholderRegex)?.[1]) {
9853                    case 'amount': value = formatWithDelimiters(cents, 2); break;
9854                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
9855                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
9856                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
9857                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
9858                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
9859                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
9860                    default: value = formatWithDelimiters(cents, 2);
9861                }
9862                try {
9863                    return formatString.replace(placeholderRegex, value);
9864                } catch (e) {
9865                    const fallback = (cents / 100.0).toFixed(2);
9866                    return formatString.includes('')
9867                        ? formatString.replace(placeholderRegex, fallback)
9868                        : fallback;
9869                }
9870            };
9871
9872            if (this.currentPriceElement) {
9873                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
9874            }
9875            if (this.comparePriceElement && this.priceWrapper) {
9876                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
9877                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
9878                    this.comparePriceElement.style.display = '';
9879                    this.priceWrapper.classList.add('sale');
9880                } else {
9881                    this.comparePriceElement.textContent = '';
9882                    this.comparePriceElement.style.display = 'none';
9883                    this.priceWrapper.classList.remove('sale');
9884                }
9885            }
9886
9887            // 3. Sale tag
9888            if (this.saleTag) {
9889                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
9890                if (isDiscounted && variant.available) {
9891                    this.saleTag.style.display = 'block';
9892                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
9893                    const span = this.saleTag.querySelector('span');
9894                    if (span) span.textContent = discount + '%';
9895                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
9896                    this.saleTag.setAttribute('role', 'status');
9897                } else {
9898                    this.saleTag.style.display = 'none';
9899                }
9900            }
9901
9902            // 4. Add to cart
9903            if (this.addToCartButton && this.addToCartText) {
9904                if (variant.available) {
9905                    this.addToCartButton.disabled = false;
9906                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
9907                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
9908                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
9909                } else {
9910                    this.addToCartButton.disabled = true;
9911                    this.addToCartText.textContent = 'Sold Out';
9912                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
9913                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
9914                }
9915            }
9916            if (this.notifyMeButton) {
9917                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
9918            }
9919
9920            this.container.setAttribute('aria-busy', 'false');
9921        }
9922    }
9923
9924    function initProductCards(root) {
9925        root = root || document;
9926        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
9927            if (cardContainer.dataset.variantSelectorInit === 'true') return;
9928            cardContainer.dataset.variantSelectorInit = 'true';
9929            new ProductCardVariantSelector(cardContainer);
9930        });
9931    }
9932
9933    if (document.readyState === 'loading') {
9934        document.addEventListener('DOMContentLoaded', () => initProductCards());
9935    } else {
9936        initProductCards();
9937    }
9938
9939    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
9940})();
9941</script>
9941<div class="product-card-wrapper" data-product-id="8025532334402" aria-busy="false">
9942
9943    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402"><!-- WISHLIST BUTTON -->
9944        <div class='xb-wishlist__btn-custom'>
9945            <div
9946                class='xb-wishlist__add'
9947                xb-product-id='8025532334402'
9948                xb-product-title='Jasmine Essential Oil'
9949                xb-product-variant='44111282209090'
9950                xb-is-in-stock='true'
9951                xb-product-handle='jasmine-essential-oil'
9952            >
9953                <button aria-label="Add Jasmine Essential Oil to wishlist" aria-pressed="false">
9954                    <svg
9955                        xmlns='http://www.w3.org/2000/svg'
9956                        width='20'
9957                        height='20'
9958                        viewBox='0 0 24 24'
9959                        fill='none'
9960                        stroke='#FF4A71'
9961                        stroke-width='2'
9962                        stroke-linecap='round'
9963                        stroke-linejoin='round'
9964                        aria-hidden='true'
9965                        focusable='false'
9966                    >
9967                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
9968                    </svg>
9969                </button>
9970            </div>
9971
9972            <div class="xb-wishlist__loading" xb-product-id="8025532334402">
9973                <span class="loading-spinner"></span>
9974            </div>
9975
9976            <div class='xb-wishlist__remove' xb-product-id='8025532334402' xb-is-in-stock='true'>
9977                <button aria-label="Remove Jasmine Essential Oil from wishlist" aria-pressed="true">
9978                    <svg
9979                        xmlns='http://www.w3.org/2000/svg'
9980                        width='20'
9981                        height='20'
9982                        viewBox='0 0 24 24'
9983                        fill='#FF4A71'
9984                        stroke='#FF4A71'
9985                        stroke-width='2'
9986                        stroke-linecap='round'
9987                        stroke-linejoin='round'
9988                        aria-hidden='true'
9989                        focusable='false'
9990                    >
9991                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
9992                    </svg>
9993                </button>
9994            </div>
9995        </div><img
9996              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402"
9997              class="main-product-image"
9998              src="//www.rockymountainoils.com/cdn/shop/files/jasmine-essential-oil-5ml-1.jpg?crop=center&height=300&v=1769779286&width=300"
9999              alt="Jasmine Essential Oil - 5ml - Rocky Mountain Oils"
10000              width="300"
10001              height="300"
10002              loading="lazy"
10003            /></div>
10004
10005    <div class="product-content">
10006        <div class="product-title">
10007            <a href="/products/jasmine-essential-oil" class="product-title-link" aria-label="View Jasmine Essential Oil">
10008                <h2>Jasmine Essential Oil</h2>
10009            </a>
10010        </div><div>
10011                <div class="product-subtitle">
10012                    Rich, floral scent; helps reverse fatigue.
10013                </div>
10014            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025532334402" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
10015            <div class="product-data-store" style="display:none;"
10016                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/jasmine-essential-oil-5ml-1.jpg?v=1769779286&width=300"
10017                 data-product-title="Jasmine Essential Oil"
10018                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402">
10019            </div>
10020
10021            
10021<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" type="application/json">
10022                [{"id":44111282209090,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"JASIND-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44126452187458,"product_id":8025532334402,"position":1,"created_at":"2024-02-14T14:08:26-07:00","updated_at":"2026-01-30T06:21:26-07:00","alt":"Jasmine Essential Oil - 5ml - Rocky Mountain Oils","width":513,"height":513,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/jasmine-essential-oil-5ml-1.jpg?v=1769779286","variant_ids":[44111282209090]},"available":true,"name":"Jasmine Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":7695,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175942","featured_media":{"alt":"Jasmine Essential Oil - 5ml - Rocky Mountain Oils","id":36602280051010,"position":1,"preview_image":{"aspect_ratio":1.0,"height":513,"width":513,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/jasmine-essential-oil-5ml-1.jpg?v=1769779286"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":5387}],"price":5387,"compare_at_price":7695,"per_delivery_price":5387,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6541},{"position":2,"price":6156}],"price":6541,"compare_at_price":7695,"per_delivery_price":6541,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6926},{"position":2,"price":6541}],"price":6926,"compare_at_price":7695,"per_delivery_price":6926,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7310},{"position":2,"price":6926}],"price":7310,"compare_at_price":7695,"per_delivery_price":7310,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6926},{"position":2,"price":6541}],"price":6926,"compare_at_price":7695,"per_delivery_price":6926,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":7310},{"position":2,"price":6926}],"price":7310,"compare_at_price":7695,"per_delivery_price":7310,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6541},{"position":2,"price":6156}],"price":6541,"compare_at_price":7695,"per_delivery_price":6541,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":6926},{"position":2,"price":6541}],"price":6926,"compare_at_price":7695,"per_delivery_price":6926,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":7310},{"position":2,"price":6926}],"price":7310,"compare_at_price":7695,"per_delivery_price":7310,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064259408239,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"JASIND-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328924021103,"product_id":8025532334402,"position":3,"created_at":"2025-06-30T23:50:15-06:00","updated_at":"2026-01-30T06:21:26-07:00","alt":"Small black bottle of Jasmine essential oil with a purple label on a white background, featuring a 'LIMITED TIME ONLY!' banner.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Jasmine_1ml.webp?v=1769779286","variant_ids":[52064259408239]},"available":false,"name":"Jasmine Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1695,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184814","featured_media":{"alt":"Small black bottle of Jasmine essential oil with a purple label on a white background, featuring a 'LIMITED TIME ONLY!' banner.","id":51984803365231,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Jasmine_1ml.webp?v=1769779286"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1187}],"price":1187,"compare_at_price":1695,"per_delivery_price":1187,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1441},{"position":2,"price":1356}],"price":1441,"compare_at_price":1695,"per_delivery_price":1441,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1441},{"position":2,"price":1356}],"price":1441,"compare_at_price":1695,"per_delivery_price":1441,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1441}],"price":1526,"compare_at_price":1695,"per_delivery_price":1526,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1610},{"position":2,"price":1526}],"price":1610,"compare_at_price":1695,"per_delivery_price":1610,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
10023            </script>
10023<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025532334402" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
10024                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" aria-live="polite" aria-atomic="true">
10025                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" style="display: none;"></span>
10026                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402">$76.95</span>
10027
10028                        
10029                    </div>
10030
10031                    
10032                        <div class="product-option">
10033                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402-0" class="visually-hidden">
10034                                Select Size for Jasmine Essential Oil
10035                            </label>
10036                            <select
10037                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402-0"
10038                                class="variant-select"
10039                                name="options[Size]"
10040                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402"
10041                                data-index="option0"
10042                            ><option
10043                                        value="5ml"
10044                                        selected="selected"
10045                                    >
10046                                        5ml
10047                                    </option><option
10048                                        value="1ml"
10049                                        
10050                                    >
10051                                        1ml
10052                                    </option></select>
10053                        </div>
10054                    
10055                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" class="visually-hidden">
10056                Choose variant for Jasmine Essential Oil
10057            </label>
10058            <select
10059                name="id"
10060                data-productid="8025532334402"
10061                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402"
10062                class="product-variants-select no-js-only"
10063            ><option
10064                        value="44111282209090"
10065                         selected="selected" 
10066                        
10067                    >
10068                        5ml - $76.95 
10069                    </option><option
10070                        value="52064259408239"
10071                        
10072                        disabled="disabled"
10073                    >
10074                        1ml - $16.95 - Sold Out
10075                    </option></select>
10076
10077            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402">
10078                <input type="hidden" name="quantity" value="1">
10079                
10080
10081                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" aria-live="assertive"></div>
10082
10083                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402" class="visually-hidden">Adds item to your shopping cart</span>
10084
10085                <button
10086                    class="addtocart-btn add-to-cart"
10087                    type="submit"
10088                    name="add"
10089                    aria-label="Add to Cart - Add Jasmine Essential Oil to cart"
10090                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402"
10091                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402"
10092                    
10093                >
10094                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025532334402">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
10095                </button>
10096            </div><input type="hidden" name="product-id" value="8025532334402" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
10096<script type="application/ld+json">
10097    {
10098      "@context": "http://schema.org/",
10099      "@type": "Product",
10100      "name": "Jasmine Essential Oil",
10101      "url": "https:\/\/www.rockymountainoils.com\/products\/jasmine-essential-oil","image": [
10102          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/jasmine-essential-oil-5ml-1.jpg?v=1769779286\u0026width=513"
10103        ],
10104      "description": "Jasmine Essential Oil offers a luxurious, sweet floral scent that can transform your space and mood. This precious oil is steam distilled from Jasminum grandiflorum flowers, capturing their enchanting aroma and beneficial properties.\nJasmine Essential Oil may help promote feelings of calm and relaxation. Its soothing scent can be used in aromatherapy to create a peaceful atmosphere, potentially easing tension and supporting emotional balance. When diluted properly, it may also contribute to skin health and overall well-being.","sku": "JASIND-S5",
10105      "brand": {
10106        "@type": "Brand",
10107        "name": "Rocky Mountain Oils"
10108      },
10109      "offers": {
10110          "@type": "AggregateOffer",
10111          "availability": "http://schema.org/InStock",
10112          "priceCurrency": "USD",
10113          "highPrice": 76.95,
10114          "lowPrice": 16.95,
10115          "offerCount": 2,
10116          "offers": [{
10117              "@type" : "Offer","sku": "JASIND-S5","gtin12": "053176175942","availability" : "http://schema.org/InStock",
10118              "price" : 76.95,
10119              "priceCurrency" : "USD",
10120              "priceValidUntil": "2026-12-31",
10121              "url" : "https:\/\/www.rockymountainoils.com\/products\/jasmine-essential-oil?variant=44111282209090"
10122            },
10123{
10124              "@type" : "Offer","sku": "JASIND-1ML","gtin12": "053176184814","availability" : "http://schema.org/OutOfStock",
10125              "price" : 16.95,
10126              "priceCurrency" : "USD",
10127              "priceValidUntil": "2026-12-31",
10128              "url" : "https:\/\/www.rockymountainoils.com\/products\/jasmine-essential-oil?variant=52064259408239"
10129            }
10130]
10131      }
10132    }
10133    </script>
10133</div>
10134
10135<style>
10136/* Ensure visually-hidden utility exists even if theme lacks it */
10137.visually-hidden {
10138    position: absolute !important;
10139    width: 1px !important;
10140    height: 1px !important;
10141    padding: 0 !important;
10142    margin: -1px !important;
10143    overflow: hidden !important;
10144    clip: rect(0, 0, 0, 0) !important;
10145    white-space: nowrap !important;
10146    border: 0 !important;
10147}
10148
10149/* Ensure the main product image is tappable on iOS */
10150.main-product-image {
10151    cursor: pointer;
10152    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
10153    touch-action: manipulation;
10154}
10155
10156/* ULTIMATE FIX - Override anything that hides select text */
10157.product-variants-select,
10158.product-variants-select.no-js-only,
10159select.product-variants-select,
10160select[id*="ProductSelect-"] {
10161    color: #1a1a1a !important;
10162    opacity: 1 !important;
10163    background-color: #ffffff !important;
10164    -webkit-text-fill-color: #1a1a1a !important;
10165}
10166
10167.product-variants-select option,
10168select[id*="ProductSelect-"] option {
10169    color: #1a1a1a !important;
10170    background-color: #ffffff !important;
10171    -webkit-text-fill-color: #1a1a1a !important;
10172}
10173
10174.product-variants-select option:checked,
10175select[id*="ProductSelect-"] option:checked {
10176    color: #1a1a1a !important;
10177    background-color: #e8f0fe !important;
10178}
10179
10180.product-variants-select option:disabled,
10181select[id*="ProductSelect-"] option:disabled {
10182    color: #6c6c6c !important;
10183    background-color: #f5f5f5 !important;
10184    -webkit-text-fill-color: #6c6c6c !important;
10185    opacity: 1 !important;
10186}
10187
10188.product-variants-select:focus,
10189select[id*="ProductSelect-"]:focus {
10190    color: #1a1a1a !important;
10191    outline: 3px solid #000000ff !important;
10192}
10193</style>
10194                      </div><div class="item">
10195                    	
10195<script>
10196(function() {
10197    class ProductCardVariantSelector {
10198        constructor(container) {
10199            this.container = container;
10200            if (!this.container) return;
10201
10202            this.form = this.container.querySelector('.product-form');
10203            this.variantSelectors = this.container.querySelectorAll('.variant-select');
10204            this.masterSelect = this.container.querySelector('.product-variants-select');
10205            this.productImage = this.container.querySelector('.main-product-image');
10206            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
10207            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
10208            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
10209            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
10210            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
10211            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
10212            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
10213            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
10214            this.saleTag = this.container.querySelector('.hc-sale-tag');
10215            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
10216
10217            if (!this.masterSelect || !this.variantsJsonScript) return;
10218
10219            try {
10220                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
10221            } catch (e) { return; }
10222
10223            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
10224            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
10225
10226            this.init();
10227        }
10228
10229        init() {
10230            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
10231            if (this.productImage) {
10232                let touchStartX = 0, touchStartY = 0, touchMoved = false;
10233                let lastTouchTime = 0;
10234
10235                this.productImage.style.cursor = 'pointer';
10236                this.productImage.setAttribute('role', 'button');
10237                this.productImage.setAttribute('tabindex', '0');
10238
10239                this.productImage.addEventListener('touchstart', (e) => {
10240                    const t = e.touches[0];
10241                    touchStartX = t.clientX;
10242                    touchStartY = t.clientY;
10243                    touchMoved = false;
10244                }, { passive: true });
10245
10246                this.productImage.addEventListener('touchmove', (e) => {
10247                    const t = e.touches[0];
10248                    if (Math.abs(t.clientX - touchStartX) > 10 ||
10249                        Math.abs(t.clientY - touchStartY) > 10) {
10250                        touchMoved = true;
10251                    }
10252                }, { passive: true });
10253
10254                this.productImage.addEventListener('touchend', (e) => {
10255                    if (touchMoved) return;
10256                    lastTouchTime = Date.now();
10257                    e.preventDefault();
10258                    this.onImageTap(e);
10259                }, { passive: false });
10260
10261                // Desktop / non-touch fallback (with double-fire protection after touchend)
10262                this.productImage.addEventListener('click', (e) => {
10263                    if (Date.now() - lastTouchTime < 500) return;
10264                    this.onImageTap(e);
10265                });
10266
10267                this.productImage.addEventListener('keydown', (e) => {
10268                    if (e.key === 'Enter' || e.key === ' ') {
10269                        e.preventDefault();
10270                        this.onImageTap(e);
10271                    }
10272                });
10273            }
10274
10275            // --- Variant select listeners ---
10276            if (this.variantSelectors.length > 0) {
10277                this.variantSelectors.forEach(select => {
10278                    select.addEventListener('change', this.onVariantChange.bind(this));
10279                });
10280                this.updateProductDetails(this.getCurrentVariant());
10281            }
10282        }
10283
10284        // ============================================================
10285        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
10286        // Currently: navigates to the product page.
10287        // ============================================================
10288        onImageTap(e) {
10289            const link = this.container.querySelector('.product-title-link');
10290            if (link && link.href && link.href !== '#') {
10291                window.location.href = link.href;
10292            }
10293        }
10294        // ============================================================
10295
10296        onVariantChange() {
10297            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
10298            const matchedVariant = this.findMatchingVariant(selectedOptions);
10299
10300            if (matchedVariant) {
10301                this.masterSelect.value = matchedVariant.id;
10302                this.updateProductDetails(matchedVariant);
10303                if (this.statusElement) this.statusElement.textContent = '';
10304            } else {
10305                if (this.statusElement) {
10306                    this.statusElement.textContent = 'No available variant matches your selection';
10307                }
10308                this.updateProductDetails(null);
10309            }
10310        }
10311
10312        findMatchingVariant(selectedOptions) {
10313            return this.productVariants.find(variant => {
10314                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
10315                return selectedOptions.every((val, i) => variant.options[i] === val);
10316            });
10317        }
10318
10319        getCurrentVariant() {
10320            if (!this.masterSelect) return null;
10321            const id = this.masterSelect.value;
10322            if (!id) return null;
10323            return this.productVariants.find(v => String(v.id) === String(id)) || null;
10324        }
10325
10326        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
10327        sizedImageUrl(src, width) {
10328            if (!src) return src;
10329            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
10330        }
10331
10332        updateProductDetails(variant) {
10333            this.container.setAttribute('aria-busy', 'true');
10334
10335            if (!variant) {
10336                if (this.addToCartButton) this.addToCartButton.disabled = true;
10337                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
10338                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
10339                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
10340                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
10341                if (this.saleTag) this.saleTag.style.display = 'none';
10342                this.container.setAttribute('aria-busy', 'false');
10343                return;
10344            }
10345
10346            // 1. Image
10347            if (this.productImage) {
10348                if (variant.featured_image && variant.featured_image.src) {
10349                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
10350                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
10351                    this.productImage.src = sized;
10352                    this.productImage.srcset = '';
10353                    this.productImage.alt = variant.featured_image.alt
10354                        ? variant.featured_image.alt
10355                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
10356                } else if (this.mainImageUrl) {
10357                    this.productImage.src = this.mainImageUrl;
10358                    this.productImage.srcset = '';
10359                    this.productImage.alt = this.productTitle;
10360                }
10361            }
10362
10363            // 2. Price
10364            const moneyFormat = "${{amount}}";
10365            const formatMoney = (cents, format) => {
10366                if (typeof cents === 'string') cents = cents.replace('.', '');
10367                let value = '';
10368                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
10369                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
10370
10371                function formatWithDelimiters(number, precision, thousands, decimal) {
10372                    precision = precision ?? 2;
10373                    thousands = thousands ?? ',';
10374                    decimal = decimal ?? '.';
10375                    if (isNaN(number) || number == null) return 0;
10376                    number = (number / 100.0).toFixed(precision);
10377                    const parts = number.split('.');
10378                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
10379                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
10380                    return dollars + centsPart;
10381                }
10382
10383                switch (formatString.match(placeholderRegex)?.[1]) {
10384                    case 'amount': value = formatWithDelimiters(cents, 2); break;
10385                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
10386                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
10387                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
10388                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
10389                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
10390                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
10391                    default: value = formatWithDelimiters(cents, 2);
10392                }
10393                try {
10394                    return formatString.replace(placeholderRegex, value);
10395                } catch (e) {
10396                    const fallback = (cents / 100.0).toFixed(2);
10397                    return formatString.includes('')
10398                        ? formatString.replace(placeholderRegex, fallback)
10399                        : fallback;
10400                }
10401            };
10402
10403            if (this.currentPriceElement) {
10404                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
10405            }
10406            if (this.comparePriceElement && this.priceWrapper) {
10407                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
10408                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
10409                    this.comparePriceElement.style.display = '';
10410                    this.priceWrapper.classList.add('sale');
10411                } else {
10412                    this.comparePriceElement.textContent = '';
10413                    this.comparePriceElement.style.display = 'none';
10414                    this.priceWrapper.classList.remove('sale');
10415                }
10416            }
10417
10418            // 3. Sale tag
10419            if (this.saleTag) {
10420                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
10421                if (isDiscounted && variant.available) {
10422                    this.saleTag.style.display = 'block';
10423                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
10424                    const span = this.saleTag.querySelector('span');
10425                    if (span) span.textContent = discount + '%';
10426                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
10427                    this.saleTag.setAttribute('role', 'status');
10428                } else {
10429                    this.saleTag.style.display = 'none';
10430                }
10431            }
10432
10433            // 4. Add to cart
10434            if (this.addToCartButton && this.addToCartText) {
10435                if (variant.available) {
10436                    this.addToCartButton.disabled = false;
10437                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
10438                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
10439                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
10440                } else {
10441                    this.addToCartButton.disabled = true;
10442                    this.addToCartText.textContent = 'Sold Out';
10443                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
10444                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
10445                }
10446            }
10447            if (this.notifyMeButton) {
10448                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
10449            }
10450
10451            this.container.setAttribute('aria-busy', 'false');
10452        }
10453    }
10454
10455    function initProductCards(root) {
10456        root = root || document;
10457        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
10458            if (cardContainer.dataset.variantSelectorInit === 'true') return;
10459            cardContainer.dataset.variantSelectorInit = 'true';
10460            new ProductCardVariantSelector(cardContainer);
10461        });
10462    }
10463
10464    if (document.readyState === 'loading') {
10465        document.addEventListener('DOMContentLoaded', () => initProductCards());
10466    } else {
10467        initProductCards();
10468    }
10469
10470    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
10471})();
10472</script>
10472<div class="product-card-wrapper" data-product-id="8025523618114" aria-busy="false">
10473
10474    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114"><!-- WISHLIST BUTTON -->
10475        <div class='xb-wishlist__btn-custom'>
10476            <div
10477                class='xb-wishlist__add'
10478                xb-product-id='8025523618114'
10479                xb-product-title='Blue Tansy Essential Oil'
10480                xb-product-variant='44111212314946'
10481                xb-is-in-stock='true'
10482                xb-product-handle='blue-tansy-essential-oil'
10483            >
10484                <button aria-label="Add Blue Tansy Essential Oil to wishlist" aria-pressed="false">
10485                    <svg
10486                        xmlns='http://www.w3.org/2000/svg'
10487                        width='20'
10488                        height='20'
10489                        viewBox='0 0 24 24'
10490                        fill='none'
10491                        stroke='#FF4A71'
10492                        stroke-width='2'
10493                        stroke-linecap='round'
10494                        stroke-linejoin='round'
10495                        aria-hidden='true'
10496                        focusable='false'
10497                    >
10498                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
10499                    </svg>
10500                </button>
10501            </div>
10502
10503            <div class="xb-wishlist__loading" xb-product-id="8025523618114">
10504                <span class="loading-spinner"></span>
10505            </div>
10506
10507            <div class='xb-wishlist__remove' xb-product-id='8025523618114' xb-is-in-stock='true'>
10508                <button aria-label="Remove Blue Tansy Essential Oil from wishlist" aria-pressed="true">
10509                    <svg
10510                        xmlns='http://www.w3.org/2000/svg'
10511                        width='20'
10512                        height='20'
10513                        viewBox='0 0 24 24'
10514                        fill='#FF4A71'
10515                        stroke='#FF4A71'
10516                        stroke-width='2'
10517                        stroke-linecap='round'
10518                        stroke-linejoin='round'
10519                        aria-hidden='true'
10520                        focusable='false'
10521                    >
10522                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
10523                    </svg>
10524                </button>
10525            </div>
10526        </div><img
10527              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114"
10528              class="main-product-image"
10529              src="//www.rockymountainoils.com/cdn/shop/files/blue-tansy-essential-oil-5ml-1.jpg?crop=center&height=300&v=1773761127&width=300"
10530              alt="blue tansy essential oil - 5ml"
10531              width="300"
10532              height="300"
10533              loading="lazy"
10534            /></div>
10535
10536    <div class="product-content">
10537        <div class="product-title">
10538            <a href="/products/blue-tansy-essential-oil" class="product-title-link" aria-label="View Blue Tansy Essential Oil">
10539                <h2>Blue Tansy Essential Oil</h2>
10540            </a>
10541        </div><div>
10542                <div class="product-subtitle">
10543                    Sweet, herbaceous scent; great for skin & reduces inflammation.
10544                </div>
10545            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025523618114" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
10546            <div class="product-data-store" style="display:none;"
10547                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/blue-tansy-essential-oil-5ml-1.jpg?v=1773761127&width=300"
10548                 data-product-title="Blue Tansy Essential Oil"
10549                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114">
10550            </div>
10551
10552            
10552<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" type="application/json">
10553                [{"id":44111212314946,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"BLUMOR-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":43606271459650,"product_id":8025523618114,"position":1,"created_at":"2023-12-18T12:07:40-07:00","updated_at":"2026-03-17T09:25:27-06:00","alt":"blue tansy essential oil - 5ml","width":473,"height":473,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/blue-tansy-essential-oil-5ml-1.jpg?v=1773761127","variant_ids":[44111212314946]},"available":true,"name":"Blue Tansy Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":7695,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176175164","featured_media":{"alt":"blue tansy essential oil - 5ml","id":36066332803394,"position":1,"preview_image":{"aspect_ratio":1.0,"height":473,"width":473,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/blue-tansy-essential-oil-5ml-1.jpg?v=1773761127"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":5387}],"price":5387,"compare_at_price":7695,"per_delivery_price":5387,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6541},{"position":2,"price":6156}],"price":6541,"compare_at_price":7695,"per_delivery_price":6541,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6926},{"position":2,"price":6541}],"price":6926,"compare_at_price":7695,"per_delivery_price":6926,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7310},{"position":2,"price":6926}],"price":7310,"compare_at_price":7695,"per_delivery_price":7310,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6926},{"position":2,"price":6541}],"price":6926,"compare_at_price":7695,"per_delivery_price":6926,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":7310},{"position":2,"price":6926}],"price":7310,"compare_at_price":7695,"per_delivery_price":7310,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6541},{"position":2,"price":6156}],"price":6541,"compare_at_price":7695,"per_delivery_price":6541,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":6926},{"position":2,"price":6541}],"price":6926,"compare_at_price":7695,"per_delivery_price":6926,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":7310},{"position":2,"price":6926}],"price":7310,"compare_at_price":7695,"per_delivery_price":7310,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064222282095,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"BLUMOR-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328900329839,"product_id":8025523618114,"position":5,"created_at":"2025-06-30T23:40:23-06:00","updated_at":"2026-03-17T09:25:27-06:00","alt":"Black bottle with blue label of Blue Tansy essential oil on a white background.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Blue_Tansy_1ml.webp?v=1773761127","variant_ids":[52064222282095]},"available":true,"name":"Blue Tansy Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1895,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184791","featured_media":{"alt":"Black bottle with blue label of Blue Tansy essential oil on a white background.","id":51984781214063,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Blue_Tansy_1ml.webp?v=1773761127"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1327}],"price":1327,"compare_at_price":1895,"per_delivery_price":1327,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1611},{"position":2,"price":1516}],"price":1611,"compare_at_price":1895,"per_delivery_price":1611,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1706},{"position":2,"price":1611}],"price":1706,"compare_at_price":1895,"per_delivery_price":1706,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1800},{"position":2,"price":1706}],"price":1800,"compare_at_price":1895,"per_delivery_price":1800,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1706},{"position":2,"price":1611}],"price":1706,"compare_at_price":1895,"per_delivery_price":1706,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1800},{"position":2,"price":1706}],"price":1800,"compare_at_price":1895,"per_delivery_price":1800,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1611},{"position":2,"price":1516}],"price":1611,"compare_at_price":1895,"per_delivery_price":1611,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1706},{"position":2,"price":1611}],"price":1706,"compare_at_price":1895,"per_delivery_price":1706,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1800},{"position":2,"price":1706}],"price":1800,"compare_at_price":1895,"per_delivery_price":1800,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
10554            </script>
10554<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025523618114" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
10555                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" aria-live="polite" aria-atomic="true">
10556                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" style="display: none;"></span>
10557                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114">$76.95</span>
10558
10559                        
10560                    </div>
10561
10562                    
10563                        <div class="product-option">
10564                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114-0" class="visually-hidden">
10565                                Select Size for Blue Tansy Essential Oil
10566                            </label>
10567                            <select
10568                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114-0"
10569                                class="variant-select"
10570                                name="options[Size]"
10571                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114"
10572                                data-index="option0"
10573                            ><option
10574                                        value="5ml"
10575                                        selected="selected"
10576                                    >
10577                                        5ml
10578                                    </option><option
10579                                        value="1ml"
10580                                        
10581                                    >
10582                                        1ml
10583                                    </option></select>
10584                        </div>
10585                    
10586                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" class="visually-hidden">
10587                Choose variant for Blue Tansy Essential Oil
10588            </label>
10589            <select
10590                name="id"
10591                data-productid="8025523618114"
10592                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114"
10593                class="product-variants-select no-js-only"
10594            ><option
10595                        value="44111212314946"
10596                         selected="selected" 
10597                        
10598                    >
10599                        5ml - $76.95 
10600                    </option><option
10601                        value="52064222282095"
10602                        
10603                        
10604                    >
10605                        1ml - $18.95 
10606                    </option></select>
10607
10608            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114">
10609                <input type="hidden" name="quantity" value="1">
10610                
10611
10612                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" aria-live="assertive"></div>
10613
10614                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114" class="visually-hidden">Adds item to your shopping cart</span>
10615
10616                <button
10617                    class="addtocart-btn add-to-cart"
10618                    type="submit"
10619                    name="add"
10620                    aria-label="Add to Cart - Add Blue Tansy Essential Oil to cart"
10621                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114"
10622                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114"
10623                    
10624                >
10625                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025523618114">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
10626                </button>
10627            </div><input type="hidden" name="product-id" value="8025523618114" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
10627<script type="application/ld+json">
10628    {
10629      "@context": "http://schema.org/",
10630      "@type": "Product",
10631      "name": "Blue Tansy Essential Oil",
10632      "url": "https:\/\/www.rockymountainoils.com\/products\/blue-tansy-essential-oil","image": [
10633          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/blue-tansy-essential-oil-5ml-1.jpg?v=1773761127\u0026width=473"
10634        ],
10635      "description": "Blue Tansy Essential Oil offers a unique, soothing aroma that can help create a serene environment. This rare oil, steam distilled from the flowers and leaves of the Blue Tansy plant native to Morocco, is prized for its potential skincare benefits and aromatic properties.\nWhen diffused, Blue Tansy's distinct scent may help promote a relaxing atmosphere and support emotional balance. Its natural properties make it a popular choice for those seeking to enhance their self-care routines or create a tranquil space for meditation and relaxation.","sku": "BLUMOR-S5",
10636      "brand": {
10637        "@type": "Brand",
10638        "name": "Rocky Mountain Oils"
10639      },
10640      "offers": {
10641          "@type": "AggregateOffer",
10642          "availability": "http://schema.org/InStock",
10643          "priceCurrency": "USD",
10644          "highPrice": 76.95,
10645          "lowPrice": 18.95,
10646          "offerCount": 2,
10647          "offers": [{
10648              "@type" : "Offer","sku": "BLUMOR-S5","gtin12": "053176175164","availability" : "http://schema.org/InStock",
10649              "price" : 76.95,
10650              "priceCurrency" : "USD",
10651              "priceValidUntil": "2026-12-31",
10652              "url" : "https:\/\/www.rockymountainoils.com\/products\/blue-tansy-essential-oil?variant=44111212314946"
10653            },
10654{
10655              "@type" : "Offer","sku": "BLUMOR-1ML","gtin12": "053176184791","availability" : "http://schema.org/InStock",
10656              "price" : 18.95,
10657              "priceCurrency" : "USD",
10658              "priceValidUntil": "2026-12-31",
10659              "url" : "https:\/\/www.rockymountainoils.com\/products\/blue-tansy-essential-oil?variant=52064222282095"
10660            }
10661]
10662      }
10663    }
10664    </script>
10664</div>
10665
10666<style>
10667/* Ensure visually-hidden utility exists even if theme lacks it */
10668.visually-hidden {
10669    position: absolute !important;
10670    width: 1px !important;
10671    height: 1px !important;
10672    padding: 0 !important;
10673    margin: -1px !important;
10674    overflow: hidden !important;
10675    clip: rect(0, 0, 0, 0) !important;
10676    white-space: nowrap !important;
10677    border: 0 !important;
10678}
10679
10680/* Ensure the main product image is tappable on iOS */
10681.main-product-image {
10682    cursor: pointer;
10683    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
10684    touch-action: manipulation;
10685}
10686
10687/* ULTIMATE FIX - Override anything that hides select text */
10688.product-variants-select,
10689.product-variants-select.no-js-only,
10690select.product-variants-select,
10691select[id*="ProductSelect-"] {
10692    color: #1a1a1a !important;
10693    opacity: 1 !important;
10694    background-color: #ffffff !important;
10695    -webkit-text-fill-color: #1a1a1a !important;
10696}
10697
10698.product-variants-select option,
10699select[id*="ProductSelect-"] option {
10700    color: #1a1a1a !important;
10701    background-color: #ffffff !important;
10702    -webkit-text-fill-color: #1a1a1a !important;
10703}
10704
10705.product-variants-select option:checked,
10706select[id*="ProductSelect-"] option:checked {
10707    color: #1a1a1a !important;
10708    background-color: #e8f0fe !important;
10709}
10710
10711.product-variants-select option:disabled,
10712select[id*="ProductSelect-"] option:disabled {
10713    color: #6c6c6c !important;
10714    background-color: #f5f5f5 !important;
10715    -webkit-text-fill-color: #6c6c6c !important;
10716    opacity: 1 !important;
10717}
10718
10719.product-variants-select:focus,
10720select[id*="ProductSelect-"]:focus {
10721    color: #1a1a1a !important;
10722    outline: 3px solid #000000ff !important;
10723}
10724</style>
10725                      </div><div class="item">
10726                    	
10726<script>
10727(function() {
10728    class ProductCardVariantSelector {
10729        constructor(container) {
10730            this.container = container;
10731            if (!this.container) return;
10732
10733            this.form = this.container.querySelector('.product-form');
10734            this.variantSelectors = this.container.querySelectorAll('.variant-select');
10735            this.masterSelect = this.container.querySelector('.product-variants-select');
10736            this.productImage = this.container.querySelector('.main-product-image');
10737            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
10738            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
10739            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
10740            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
10741            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
10742            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
10743            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
10744            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
10745            this.saleTag = this.container.querySelector('.hc-sale-tag');
10746            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
10747
10748            if (!this.masterSelect || !this.variantsJsonScript) return;
10749
10750            try {
10751                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
10752            } catch (e) { return; }
10753
10754            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
10755            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
10756
10757            this.init();
10758        }
10759
10760        init() {
10761            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
10762            if (this.productImage) {
10763                let touchStartX = 0, touchStartY = 0, touchMoved = false;
10764                let lastTouchTime = 0;
10765
10766                this.productImage.style.cursor = 'pointer';
10767                this.productImage.setAttribute('role', 'button');
10768                this.productImage.setAttribute('tabindex', '0');
10769
10770                this.productImage.addEventListener('touchstart', (e) => {
10771                    const t = e.touches[0];
10772                    touchStartX = t.clientX;
10773                    touchStartY = t.clientY;
10774                    touchMoved = false;
10775                }, { passive: true });
10776
10777                this.productImage.addEventListener('touchmove', (e) => {
10778                    const t = e.touches[0];
10779                    if (Math.abs(t.clientX - touchStartX) > 10 ||
10780                        Math.abs(t.clientY - touchStartY) > 10) {
10781                        touchMoved = true;
10782                    }
10783                }, { passive: true });
10784
10785                this.productImage.addEventListener('touchend', (e) => {
10786                    if (touchMoved) return;
10787                    lastTouchTime = Date.now();
10788                    e.preventDefault();
10789                    this.onImageTap(e);
10790                }, { passive: false });
10791
10792                // Desktop / non-touch fallback (with double-fire protection after touchend)
10793                this.productImage.addEventListener('click', (e) => {
10794                    if (Date.now() - lastTouchTime < 500) return;
10795                    this.onImageTap(e);
10796                });
10797
10798                this.productImage.addEventListener('keydown', (e) => {
10799                    if (e.key === 'Enter' || e.key === ' ') {
10800                        e.preventDefault();
10801                        this.onImageTap(e);
10802                    }
10803                });
10804            }
10805
10806            // --- Variant select listeners ---
10807            if (this.variantSelectors.length > 0) {
10808                this.variantSelectors.forEach(select => {
10809                    select.addEventListener('change', this.onVariantChange.bind(this));
10810                });
10811                this.updateProductDetails(this.getCurrentVariant());
10812            }
10813        }
10814
10815        // ============================================================
10816        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
10817        // Currently: navigates to the product page.
10818        // ============================================================
10819        onImageTap(e) {
10820            const link = this.container.querySelector('.product-title-link');
10821            if (link && link.href && link.href !== '#') {
10822                window.location.href = link.href;
10823            }
10824        }
10825        // ============================================================
10826
10827        onVariantChange() {
10828            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
10829            const matchedVariant = this.findMatchingVariant(selectedOptions);
10830
10831            if (matchedVariant) {
10832                this.masterSelect.value = matchedVariant.id;
10833                this.updateProductDetails(matchedVariant);
10834                if (this.statusElement) this.statusElement.textContent = '';
10835            } else {
10836                if (this.statusElement) {
10837                    this.statusElement.textContent = 'No available variant matches your selection';
10838                }
10839                this.updateProductDetails(null);
10840            }
10841        }
10842
10843        findMatchingVariant(selectedOptions) {
10844            return this.productVariants.find(variant => {
10845                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
10846                return selectedOptions.every((val, i) => variant.options[i] === val);
10847            });
10848        }
10849
10850        getCurrentVariant() {
10851            if (!this.masterSelect) return null;
10852            const id = this.masterSelect.value;
10853            if (!id) return null;
10854            return this.productVariants.find(v => String(v.id) === String(id)) || null;
10855        }
10856
10857        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
10858        sizedImageUrl(src, width) {
10859            if (!src) return src;
10860            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
10861        }
10862
10863        updateProductDetails(variant) {
10864            this.container.setAttribute('aria-busy', 'true');
10865
10866            if (!variant) {
10867                if (this.addToCartButton) this.addToCartButton.disabled = true;
10868                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
10869                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
10870                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
10871                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
10872                if (this.saleTag) this.saleTag.style.display = 'none';
10873                this.container.setAttribute('aria-busy', 'false');
10874                return;
10875            }
10876
10877            // 1. Image
10878            if (this.productImage) {
10879                if (variant.featured_image && variant.featured_image.src) {
10880                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
10881                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
10882                    this.productImage.src = sized;
10883                    this.productImage.srcset = '';
10884                    this.productImage.alt = variant.featured_image.alt
10885                        ? variant.featured_image.alt
10886                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
10887                } else if (this.mainImageUrl) {
10888                    this.productImage.src = this.mainImageUrl;
10889                    this.productImage.srcset = '';
10890                    this.productImage.alt = this.productTitle;
10891                }
10892            }
10893
10894            // 2. Price
10895            const moneyFormat = "${{amount}}";
10896            const formatMoney = (cents, format) => {
10897                if (typeof cents === 'string') cents = cents.replace('.', '');
10898                let value = '';
10899                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
10900                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
10901
10902                function formatWithDelimiters(number, precision, thousands, decimal) {
10903                    precision = precision ?? 2;
10904                    thousands = thousands ?? ',';
10905                    decimal = decimal ?? '.';
10906                    if (isNaN(number) || number == null) return 0;
10907                    number = (number / 100.0).toFixed(precision);
10908                    const parts = number.split('.');
10909                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
10910                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
10911                    return dollars + centsPart;
10912                }
10913
10914                switch (formatString.match(placeholderRegex)?.[1]) {
10915                    case 'amount': value = formatWithDelimiters(cents, 2); break;
10916                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
10917                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
10918                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
10919                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
10920                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
10921                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
10922                    default: value = formatWithDelimiters(cents, 2);
10923                }
10924                try {
10925                    return formatString.replace(placeholderRegex, value);
10926                } catch (e) {
10927                    const fallback = (cents / 100.0).toFixed(2);
10928                    return formatString.includes('')
10929                        ? formatString.replace(placeholderRegex, fallback)
10930                        : fallback;
10931                }
10932            };
10933
10934            if (this.currentPriceElement) {
10935                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
10936            }
10937            if (this.comparePriceElement && this.priceWrapper) {
10938                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
10939                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
10940                    this.comparePriceElement.style.display = '';
10941                    this.priceWrapper.classList.add('sale');
10942                } else {
10943                    this.comparePriceElement.textContent = '';
10944                    this.comparePriceElement.style.display = 'none';
10945                    this.priceWrapper.classList.remove('sale');
10946                }
10947            }
10948
10949            // 3. Sale tag
10950            if (this.saleTag) {
10951                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
10952                if (isDiscounted && variant.available) {
10953                    this.saleTag.style.display = 'block';
10954                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
10955                    const span = this.saleTag.querySelector('span');
10956                    if (span) span.textContent = discount + '%';
10957                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
10958                    this.saleTag.setAttribute('role', 'status');
10959                } else {
10960                    this.saleTag.style.display = 'none';
10961                }
10962            }
10963
10964            // 4. Add to cart
10965            if (this.addToCartButton && this.addToCartText) {
10966                if (variant.available) {
10967                    this.addToCartButton.disabled = false;
10968                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
10969                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
10970                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
10971                } else {
10972                    this.addToCartButton.disabled = true;
10973                    this.addToCartText.textContent = 'Sold Out';
10974                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
10975                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
10976                }
10977            }
10978            if (this.notifyMeButton) {
10979                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
10980            }
10981
10982            this.container.setAttribute('aria-busy', 'false');
10983        }
10984    }
10985
10986    function initProductCards(root) {
10987        root = root || document;
10988        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
10989            if (cardContainer.dataset.variantSelectorInit === 'true') return;
10990            cardContainer.dataset.variantSelectorInit = 'true';
10991            new ProductCardVariantSelector(cardContainer);
10992        });
10993    }
10994
10995    if (document.readyState === 'loading') {
10996        document.addEventListener('DOMContentLoaded', () => initProductCards());
10997    } else {
10998        initProductCards();
10999    }
11000
11001    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
11002})();
11003</script>
11003<div class="product-card-wrapper" data-product-id="8025534529858" aria-busy="false">
11004
11005    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858"><!-- WISHLIST BUTTON -->
11006        <div class='xb-wishlist__btn-custom'>
11007            <div
11008                class='xb-wishlist__add'
11009                xb-product-id='8025534529858'
11010                xb-product-title='Neroli Essential Oil'
11011                xb-product-variant='44111301673282'
11012                xb-is-in-stock='true'
11013                xb-product-handle='neroli-essential-oil'
11014            >
11015                <button aria-label="Add Neroli Essential Oil to wishlist" aria-pressed="false">
11016                    <svg
11017                        xmlns='http://www.w3.org/2000/svg'
11018                        width='20'
11019                        height='20'
11020                        viewBox='0 0 24 24'
11021                        fill='none'
11022                        stroke='#FF4A71'
11023                        stroke-width='2'
11024                        stroke-linecap='round'
11025                        stroke-linejoin='round'
11026                        aria-hidden='true'
11027                        focusable='false'
11028                    >
11029                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
11030                    </svg>
11031                </button>
11032            </div>
11033
11034            <div class="xb-wishlist__loading" xb-product-id="8025534529858">
11035                <span class="loading-spinner"></span>
11036            </div>
11037
11038            <div class='xb-wishlist__remove' xb-product-id='8025534529858' xb-is-in-stock='true'>
11039                <button aria-label="Remove Neroli Essential Oil from wishlist" aria-pressed="true">
11040                    <svg
11041                        xmlns='http://www.w3.org/2000/svg'
11042                        width='20'
11043                        height='20'
11044                        viewBox='0 0 24 24'
11045                        fill='#FF4A71'
11046                        stroke='#FF4A71'
11047                        stroke-width='2'
11048                        stroke-linecap='round'
11049                        stroke-linejoin='round'
11050                        aria-hidden='true'
11051                        focusable='false'
11052                    >
11053                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
11054                    </svg>
11055                </button>
11056            </div>
11057        </div><img
11058              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858"
11059              class="main-product-image"
11060              src="//www.rockymountainoils.com/cdn/shop/files/neroli-essential-oil-5ml.jpg?crop=center&height=300&v=1773761091&width=300"
11061              alt="Neroli Essential Oil 5ml"
11062              width="300"
11063              height="300"
11064              loading="lazy"
11065            /></div>
11066
11067    <div class="product-content">
11068        <div class="product-title">
11069            <a href="/products/neroli-essential-oil" class="product-title-link" aria-label="View Neroli Essential Oil">
11070                <h2>Neroli Essential Oil</h2>
11071            </a>
11072        </div><div>
11073                <div class="product-subtitle">
11074                    Floral scent; kid-safe, boosts mood, anti-aging.
11075                </div>
11076            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025534529858" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
11077            <div class="product-data-store" style="display:none;"
11078                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/neroli-essential-oil-5ml.jpg?v=1773761091&width=300"
11079                 data-product-title="Neroli Essential Oil"
11080                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858">
11081            </div>
11082
11083            
11083<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" type="application/json">
11084                [{"id":44111301673282,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"NERTUN-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44306699419970,"product_id":8025534529858,"position":1,"created_at":"2024-03-01T11:31:13-07:00","updated_at":"2026-03-17T09:24:51-06:00","alt":"Neroli Essential Oil 5ml","width":583,"height":583,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/neroli-essential-oil-5ml.jpg?v=1773761091","variant_ids":[44111301673282]},"available":true,"name":"Neroli Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":8595,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176284","featured_media":{"alt":"Neroli Essential Oil 5ml","id":36784917283138,"position":1,"preview_image":{"aspect_ratio":1.0,"height":583,"width":583,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/neroli-essential-oil-5ml.jpg?v=1773761091"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":6017}],"price":6017,"compare_at_price":8595,"per_delivery_price":6017,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":7306},{"position":2,"price":6876}],"price":7306,"compare_at_price":8595,"per_delivery_price":7306,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7736},{"position":2,"price":7306}],"price":7736,"compare_at_price":8595,"per_delivery_price":7736,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":8165},{"position":2,"price":7736}],"price":8165,"compare_at_price":8595,"per_delivery_price":8165,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":7736},{"position":2,"price":7306}],"price":7736,"compare_at_price":8595,"per_delivery_price":7736,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":8165},{"position":2,"price":7736}],"price":8165,"compare_at_price":8595,"per_delivery_price":8165,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":7306},{"position":2,"price":6876}],"price":7306,"compare_at_price":8595,"per_delivery_price":7306,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":7736},{"position":2,"price":7306}],"price":7736,"compare_at_price":8595,"per_delivery_price":7736,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":8165},{"position":2,"price":7736}],"price":8165,"compare_at_price":8595,"per_delivery_price":8165,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064228901231,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"NERTUN-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328905310575,"product_id":8025534529858,"position":4,"created_at":"2025-06-30T23:42:28-06:00","updated_at":"2026-03-17T09:24:51-06:00","alt":"Small brown bottle with a black cap and yellow label of Neroli essential oil on a white background, with 'LIMITED TIME ONLY!' text above.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Neroli_1ml.webp?v=1773761091","variant_ids":[52064228901231]},"available":false,"name":"Neroli Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1795,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184821","featured_media":{"alt":"Small brown bottle with a black cap and yellow label of Neroli essential oil on a white background, with 'LIMITED TIME ONLY!' text above.","id":51984786030959,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Neroli_1ml.webp?v=1773761091"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1257}],"price":1257,"compare_at_price":1795,"per_delivery_price":1257,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1436}],"price":1526,"compare_at_price":1795,"per_delivery_price":1526,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1616},{"position":2,"price":1526}],"price":1616,"compare_at_price":1795,"per_delivery_price":1616,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1705},{"position":2,"price":1616}],"price":1705,"compare_at_price":1795,"per_delivery_price":1705,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1616},{"position":2,"price":1526}],"price":1616,"compare_at_price":1795,"per_delivery_price":1616,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1705},{"position":2,"price":1616}],"price":1705,"compare_at_price":1795,"per_delivery_price":1705,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1526},{"position":2,"price":1436}],"price":1526,"compare_at_price":1795,"per_delivery_price":1526,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1616},{"position":2,"price":1526}],"price":1616,"compare_at_price":1795,"per_delivery_price":1616,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1705},{"position":2,"price":1616}],"price":1705,"compare_at_price":1795,"per_delivery_price":1705,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
11085            </script>
11085<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025534529858" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
11086                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" aria-live="polite" aria-atomic="true">
11087                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" style="display: none;"></span>
11088                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858">$85.95</span>
11089
11090                        
11091                    </div>
11092
11093                    
11094                        <div class="product-option">
11095                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858-0" class="visually-hidden">
11096                                Select Size for Neroli Essential Oil
11097                            </label>
11098                            <select
11099                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858-0"
11100                                class="variant-select"
11101                                name="options[Size]"
11102                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858"
11103                                data-index="option0"
11104                            ><option
11105                                        value="5ml"
11106                                        selected="selected"
11107                                    >
11108                                        5ml
11109                                    </option><option
11110                                        value="1ml"
11111                                        
11112                                    >
11113                                        1ml
11114                                    </option></select>
11115                        </div>
11116                    
11117                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" class="visually-hidden">
11118                Choose variant for Neroli Essential Oil
11119            </label>
11120            <select
11121                name="id"
11122                data-productid="8025534529858"
11123                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858"
11124                class="product-variants-select no-js-only"
11125            ><option
11126                        value="44111301673282"
11127                         selected="selected" 
11128                        
11129                    >
11130                        5ml - $85.95 
11131                    </option><option
11132                        value="52064228901231"
11133                        
11134                        disabled="disabled"
11135                    >
11136                        1ml - $17.95 - Sold Out
11137                    </option></select>
11138
11139            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858">
11140                <input type="hidden" name="quantity" value="1">
11141                
11142
11143                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" aria-live="assertive"></div>
11144
11145                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858" class="visually-hidden">Adds item to your shopping cart</span>
11146
11147                <button
11148                    class="addtocart-btn add-to-cart"
11149                    type="submit"
11150                    name="add"
11151                    aria-label="Add to Cart - Add Neroli Essential Oil to cart"
11152                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858"
11153                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858"
11154                    
11155                >
11156                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025534529858">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
11157                </button>
11158            </div><input type="hidden" name="product-id" value="8025534529858" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
11158<script type="application/ld+json">
11159    {
11160      "@context": "http://schema.org/",
11161      "@type": "Product",
11162      "name": "Neroli Essential Oil",
11163      "url": "https:\/\/www.rockymountainoils.com\/products\/neroli-essential-oil","image": [
11164          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/neroli-essential-oil-5ml.jpg?v=1773761091\u0026width=583"
11165        ],
11166      "description": "Neroli Essential Oil offers a delightful blend of sweet floral and citrus notes with a hint of herbaceous warmth. Derived from the blossoms of the bitter orange tree, this luxurious oil is prized for its ability to uplift mood and promote a sense of calm. Neroli Essential Oil may help soothe the mind and support emotional well-being.\nKnown for its skin-nourishing properties, Neroli Essential Oil is popular in natural skincare routines. It may help improve the appearance of skin texture and tone when used regularly. The gentle, refreshing scent of Neroli Essential Oil can create a peaceful atmosphere in any space.","sku": "NERTUN-S5",
11167      "brand": {
11168        "@type": "Brand",
11169        "name": "Rocky Mountain Oils"
11170      },
11171      "offers": {
11172          "@type": "AggregateOffer",
11173          "availability": "http://schema.org/InStock",
11174          "priceCurrency": "USD",
11175          "highPrice": 85.95,
11176          "lowPrice": 17.95,
11177          "offerCount": 2,
11178          "offers": [{
11179              "@type" : "Offer","sku": "NERTUN-S5","gtin12": "053176176284","availability" : "http://schema.org/InStock",
11180              "price" : 85.95,
11181              "priceCurrency" : "USD",
11182              "priceValidUntil": "2026-12-31",
11183              "url" : "https:\/\/www.rockymountainoils.com\/products\/neroli-essential-oil?variant=44111301673282"
11184            },
11185{
11186              "@type" : "Offer","sku": "NERTUN-1ML","gtin12": "053176184821","availability" : "http://schema.org/OutOfStock",
11187              "price" : 17.95,
11188              "priceCurrency" : "USD",
11189              "priceValidUntil": "2026-12-31",
11190              "url" : "https:\/\/www.rockymountainoils.com\/products\/neroli-essential-oil?variant=52064228901231"
11191            }
11192]
11193      }
11194    }
11195    </script>
11195</div>
11196
11197<style>
11198/* Ensure visually-hidden utility exists even if theme lacks it */
11199.visually-hidden {
11200    position: absolute !important;
11201    width: 1px !important;
11202    height: 1px !important;
11203    padding: 0 !important;
11204    margin: -1px !important;
11205    overflow: hidden !important;
11206    clip: rect(0, 0, 0, 0) !important;
11207    white-space: nowrap !important;
11208    border: 0 !important;
11209}
11210
11211/* Ensure the main product image is tappable on iOS */
11212.main-product-image {
11213    cursor: pointer;
11214    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
11215    touch-action: manipulation;
11216}
11217
11218/* ULTIMATE FIX - Override anything that hides select text */
11219.product-variants-select,
11220.product-variants-select.no-js-only,
11221select.product-variants-select,
11222select[id*="ProductSelect-"] {
11223    color: #1a1a1a !important;
11224    opacity: 1 !important;
11225    background-color: #ffffff !important;
11226    -webkit-text-fill-color: #1a1a1a !important;
11227}
11228
11229.product-variants-select option,
11230select[id*="ProductSelect-"] option {
11231    color: #1a1a1a !important;
11232    background-color: #ffffff !important;
11233    -webkit-text-fill-color: #1a1a1a !important;
11234}
11235
11236.product-variants-select option:checked,
11237select[id*="ProductSelect-"] option:checked {
11238    color: #1a1a1a !important;
11239    background-color: #e8f0fe !important;
11240}
11241
11242.product-variants-select option:disabled,
11243select[id*="ProductSelect-"] option:disabled {
11244    color: #6c6c6c !important;
11245    background-color: #f5f5f5 !important;
11246    -webkit-text-fill-color: #6c6c6c !important;
11247    opacity: 1 !important;
11248}
11249
11250.product-variants-select:focus,
11251select[id*="ProductSelect-"]:focus {
11252    color: #1a1a1a !important;
11253    outline: 3px solid #000000ff !important;
11254}
11255</style>
11256                      </div><div class="item">
11257                    	
11257<script>
11258(function() {
11259    class ProductCardVariantSelector {
11260        constructor(container) {
11261            this.container = container;
11262            if (!this.container) return;
11263
11264            this.form = this.container.querySelector('.product-form');
11265            this.variantSelectors = this.container.querySelectorAll('.variant-select');
11266            this.masterSelect = this.container.querySelector('.product-variants-select');
11267            this.productImage = this.container.querySelector('.main-product-image');
11268            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
11269            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
11270            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
11271            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
11272            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
11273            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
11274            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
11275            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
11276            this.saleTag = this.container.querySelector('.hc-sale-tag');
11277            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
11278
11279            if (!this.masterSelect || !this.variantsJsonScript) return;
11280
11281            try {
11282                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
11283            } catch (e) { return; }
11284
11285            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
11286            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
11287
11288            this.init();
11289        }
11290
11291        init() {
11292            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
11293            if (this.productImage) {
11294                let touchStartX = 0, touchStartY = 0, touchMoved = false;
11295                let lastTouchTime = 0;
11296
11297                this.productImage.style.cursor = 'pointer';
11298                this.productImage.setAttribute('role', 'button');
11299                this.productImage.setAttribute('tabindex', '0');
11300
11301                this.productImage.addEventListener('touchstart', (e) => {
11302                    const t = e.touches[0];
11303                    touchStartX = t.clientX;
11304                    touchStartY = t.clientY;
11305                    touchMoved = false;
11306                }, { passive: true });
11307
11308                this.productImage.addEventListener('touchmove', (e) => {
11309                    const t = e.touches[0];
11310                    if (Math.abs(t.clientX - touchStartX) > 10 ||
11311                        Math.abs(t.clientY - touchStartY) > 10) {
11312                        touchMoved = true;
11313                    }
11314                }, { passive: true });
11315
11316                this.productImage.addEventListener('touchend', (e) => {
11317                    if (touchMoved) return;
11318                    lastTouchTime = Date.now();
11319                    e.preventDefault();
11320                    this.onImageTap(e);
11321                }, { passive: false });
11322
11323                // Desktop / non-touch fallback (with double-fire protection after touchend)
11324                this.productImage.addEventListener('click', (e) => {
11325                    if (Date.now() - lastTouchTime < 500) return;
11326                    this.onImageTap(e);
11327                });
11328
11329                this.productImage.addEventListener('keydown', (e) => {
11330                    if (e.key === 'Enter' || e.key === ' ') {
11331                        e.preventDefault();
11332                        this.onImageTap(e);
11333                    }
11334                });
11335            }
11336
11337            // --- Variant select listeners ---
11338            if (this.variantSelectors.length > 0) {
11339                this.variantSelectors.forEach(select => {
11340                    select.addEventListener('change', this.onVariantChange.bind(this));
11341                });
11342                this.updateProductDetails(this.getCurrentVariant());
11343            }
11344        }
11345
11346        // ============================================================
11347        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
11348        // Currently: navigates to the product page.
11349        // ============================================================
11350        onImageTap(e) {
11351            const link = this.container.querySelector('.product-title-link');
11352            if (link && link.href && link.href !== '#') {
11353                window.location.href = link.href;
11354            }
11355        }
11356        // ============================================================
11357
11358        onVariantChange() {
11359            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
11360            const matchedVariant = this.findMatchingVariant(selectedOptions);
11361
11362            if (matchedVariant) {
11363                this.masterSelect.value = matchedVariant.id;
11364                this.updateProductDetails(matchedVariant);
11365                if (this.statusElement) this.statusElement.textContent = '';
11366            } else {
11367                if (this.statusElement) {
11368                    this.statusElement.textContent = 'No available variant matches your selection';
11369                }
11370                this.updateProductDetails(null);
11371            }
11372        }
11373
11374        findMatchingVariant(selectedOptions) {
11375            return this.productVariants.find(variant => {
11376                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
11377                return selectedOptions.every((val, i) => variant.options[i] === val);
11378            });
11379        }
11380
11381        getCurrentVariant() {
11382            if (!this.masterSelect) return null;
11383            const id = this.masterSelect.value;
11384            if (!id) return null;
11385            return this.productVariants.find(v => String(v.id) === String(id)) || null;
11386        }
11387
11388        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
11389        sizedImageUrl(src, width) {
11390            if (!src) return src;
11391            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
11392        }
11393
11394        updateProductDetails(variant) {
11395            this.container.setAttribute('aria-busy', 'true');
11396
11397            if (!variant) {
11398                if (this.addToCartButton) this.addToCartButton.disabled = true;
11399                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
11400                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
11401                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
11402                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
11403                if (this.saleTag) this.saleTag.style.display = 'none';
11404                this.container.setAttribute('aria-busy', 'false');
11405                return;
11406            }
11407
11408            // 1. Image
11409            if (this.productImage) {
11410                if (variant.featured_image && variant.featured_image.src) {
11411                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
11412                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
11413                    this.productImage.src = sized;
11414                    this.productImage.srcset = '';
11415                    this.productImage.alt = variant.featured_image.alt
11416                        ? variant.featured_image.alt
11417                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
11418                } else if (this.mainImageUrl) {
11419                    this.productImage.src = this.mainImageUrl;
11420                    this.productImage.srcset = '';
11421                    this.productImage.alt = this.productTitle;
11422                }
11423            }
11424
11425            // 2. Price
11426            const moneyFormat = "${{amount}}";
11427            const formatMoney = (cents, format) => {
11428                if (typeof cents === 'string') cents = cents.replace('.', '');
11429                let value = '';
11430                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
11431                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
11432
11433                function formatWithDelimiters(number, precision, thousands, decimal) {
11434                    precision = precision ?? 2;
11435                    thousands = thousands ?? ',';
11436                    decimal = decimal ?? '.';
11437                    if (isNaN(number) || number == null) return 0;
11438                    number = (number / 100.0).toFixed(precision);
11439                    const parts = number.split('.');
11440                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
11441                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
11442                    return dollars + centsPart;
11443                }
11444
11445                switch (formatString.match(placeholderRegex)?.[1]) {
11446                    case 'amount': value = formatWithDelimiters(cents, 2); break;
11447                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
11448                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
11449                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
11450                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
11451                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
11452                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
11453                    default: value = formatWithDelimiters(cents, 2);
11454                }
11455                try {
11456                    return formatString.replace(placeholderRegex, value);
11457                } catch (e) {
11458                    const fallback = (cents / 100.0).toFixed(2);
11459                    return formatString.includes('')
11460                        ? formatString.replace(placeholderRegex, fallback)
11461                        : fallback;
11462                }
11463            };
11464
11465            if (this.currentPriceElement) {
11466                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
11467            }
11468            if (this.comparePriceElement && this.priceWrapper) {
11469                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
11470                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
11471                    this.comparePriceElement.style.display = '';
11472                    this.priceWrapper.classList.add('sale');
11473                } else {
11474                    this.comparePriceElement.textContent = '';
11475                    this.comparePriceElement.style.display = 'none';
11476                    this.priceWrapper.classList.remove('sale');
11477                }
11478            }
11479
11480            // 3. Sale tag
11481            if (this.saleTag) {
11482                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
11483                if (isDiscounted && variant.available) {
11484                    this.saleTag.style.display = 'block';
11485                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
11486                    const span = this.saleTag.querySelector('span');
11487                    if (span) span.textContent = discount + '%';
11488                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
11489                    this.saleTag.setAttribute('role', 'status');
11490                } else {
11491                    this.saleTag.style.display = 'none';
11492                }
11493            }
11494
11495            // 4. Add to cart
11496            if (this.addToCartButton && this.addToCartText) {
11497                if (variant.available) {
11498                    this.addToCartButton.disabled = false;
11499                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
11500                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
11501                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
11502                } else {
11503                    this.addToCartButton.disabled = true;
11504                    this.addToCartText.textContent = 'Sold Out';
11505                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
11506                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
11507                }
11508            }
11509            if (this.notifyMeButton) {
11510                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
11511            }
11512
11513            this.container.setAttribute('aria-busy', 'false');
11514        }
11515    }
11516
11517    function initProductCards(root) {
11518        root = root || document;
11519        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
11520            if (cardContainer.dataset.variantSelectorInit === 'true') return;
11521            cardContainer.dataset.variantSelectorInit = 'true';
11522            new ProductCardVariantSelector(cardContainer);
11523        });
11524    }
11525
11526    if (document.readyState === 'loading') {
11527        document.addEventListener('DOMContentLoaded', () => initProductCards());
11528    } else {
11529        initProductCards();
11530    }
11531
11532    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
11533})();
11534</script>
11534<div class="product-card-wrapper" data-product-id="8025533776194" aria-busy="false">
11535
11536    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194"><!-- WISHLIST BUTTON -->
11537        <div class='xb-wishlist__btn-custom'>
11538            <div
11539                class='xb-wishlist__add'
11540                xb-product-id='8025533776194'
11541                xb-product-title='Melissa Essential Oil'
11542                xb-product-variant='44111294955842'
11543                xb-is-in-stock='true'
11544                xb-product-handle='melissa-essential-oil'
11545            >
11546                <button aria-label="Add Melissa Essential Oil to wishlist" aria-pressed="false">
11547                    <svg
11548                        xmlns='http://www.w3.org/2000/svg'
11549                        width='20'
11550                        height='20'
11551                        viewBox='0 0 24 24'
11552                        fill='none'
11553                        stroke='#FF4A71'
11554                        stroke-width='2'
11555                        stroke-linecap='round'
11556                        stroke-linejoin='round'
11557                        aria-hidden='true'
11558                        focusable='false'
11559                    >
11560                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
11561                    </svg>
11562                </button>
11563            </div>
11564
11565            <div class="xb-wishlist__loading" xb-product-id="8025533776194">
11566                <span class="loading-spinner"></span>
11567            </div>
11568
11569            <div class='xb-wishlist__remove' xb-product-id='8025533776194' xb-is-in-stock='true'>
11570                <button aria-label="Remove Melissa Essential Oil from wishlist" aria-pressed="true">
11571                    <svg
11572                        xmlns='http://www.w3.org/2000/svg'
11573                        width='20'
11574                        height='20'
11575                        viewBox='0 0 24 24'
11576                        fill='#FF4A71'
11577                        stroke='#FF4A71'
11578                        stroke-width='2'
11579                        stroke-linecap='round'
11580                        stroke-linejoin='round'
11581                        aria-hidden='true'
11582                        focusable='false'
11583                    >
11584                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
11585                    </svg>
11586                </button>
11587            </div>
11588        </div><img
11589              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194"
11590              class="main-product-image"
11591              src="//www.rockymountainoils.com/cdn/shop/files/melissa-essential-oil-5ml-1.jpg?crop=center&height=300&v=1764659300&width=300"
11592              alt="Melissa Essential Oil, 5ml, Rocky Mountain Oils"
11593              width="300"
11594              height="300"
11595              loading="lazy"
11596            /></div>
11597
11598    <div class="product-content">
11599        <div class="product-title">
11600            <a href="/products/melissa-essential-oil" class="product-title-link" aria-label="View Melissa Essential Oil">
11601                <h2>Melissa Essential Oil</h2>
11602            </a>
11603        </div><div>
11604                <div class="product-subtitle">
11605                    Herbaceous, citrusy, sweet; helps with acne, psoriasis & eczema.
11606                </div>
11607            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025533776194" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
11608            <div class="product-data-store" style="display:none;"
11609                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/melissa-essential-oil-5ml-1.jpg?v=1764659300&width=300"
11610                 data-product-title="Melissa Essential Oil"
11611                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194">
11612            </div>
11613
11614            
11614<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" type="application/json">
11615                [{"id":44111294955842,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"MELFRA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44306593481026,"product_id":8025533776194,"position":1,"created_at":"2024-03-01T11:22:31-07:00","updated_at":"2025-12-02T00:08:20-07:00","alt":"Melissa Essential Oil, 5ml, Rocky Mountain Oils","width":540,"height":540,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/melissa-essential-oil-5ml-1.jpg?v=1764659300","variant_ids":[44111294955842]},"available":true,"name":"Melissa Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":10895,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176185","featured_media":{"alt":"Melissa Essential Oil, 5ml, Rocky Mountain Oils","id":36784810950978,"position":1,"preview_image":{"aspect_ratio":1.0,"height":540,"width":540,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/melissa-essential-oil-5ml-1.jpg?v=1764659300"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":7627}],"price":7627,"compare_at_price":10895,"per_delivery_price":7627,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":9261},{"position":2,"price":8716}],"price":9261,"compare_at_price":10895,"per_delivery_price":9261,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":9806},{"position":2,"price":9261}],"price":9806,"compare_at_price":10895,"per_delivery_price":9806,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":10350},{"position":2,"price":9806}],"price":10350,"compare_at_price":10895,"per_delivery_price":10350,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":9806},{"position":2,"price":9261}],"price":9806,"compare_at_price":10895,"per_delivery_price":9806,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":10350},{"position":2,"price":9806}],"price":10350,"compare_at_price":10895,"per_delivery_price":10350,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":9261},{"position":2,"price":8716}],"price":9261,"compare_at_price":10895,"per_delivery_price":9261,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":9806},{"position":2,"price":9261}],"price":9806,"compare_at_price":10895,"per_delivery_price":9806,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":10350},{"position":2,"price":9806}],"price":10350,"compare_at_price":10895,"per_delivery_price":10350,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064234307951,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"MELFRA-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328909111663,"product_id":8025533776194,"position":2,"created_at":"2025-06-30T23:44:10-06:00","updated_at":"2025-12-02T00:08:20-07:00","alt":"Small brown bottle with a black cap of Melissa essential oil on a white background, featuring a 'LIMITED TIME ONLY!' banner above.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Melissa_1ml.webp?v=1764659300","variant_ids":[52064234307951]},"available":true,"name":"Melissa Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":2195,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184807","featured_media":{"alt":"Small brown bottle with a black cap of Melissa essential oil on a white background, featuring a 'LIMITED TIME ONLY!' banner above.","id":51984789668207,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Melissa_1ml.webp?v=1764659300"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1537}],"price":1537,"compare_at_price":2195,"per_delivery_price":1537,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1866},{"position":2,"price":1756}],"price":1866,"compare_at_price":2195,"per_delivery_price":1866,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1976},{"position":2,"price":1866}],"price":1976,"compare_at_price":2195,"per_delivery_price":1976,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":2085},{"position":2,"price":1976}],"price":2085,"compare_at_price":2195,"per_delivery_price":2085,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1976},{"position":2,"price":1866}],"price":1976,"compare_at_price":2195,"per_delivery_price":1976,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":2085},{"position":2,"price":1976}],"price":2085,"compare_at_price":2195,"per_delivery_price":2085,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1866},{"position":2,"price":1756}],"price":1866,"compare_at_price":2195,"per_delivery_price":1866,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1976},{"position":2,"price":1866}],"price":1976,"compare_at_price":2195,"per_delivery_price":1976,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":2085},{"position":2,"price":1976}],"price":2085,"compare_at_price":2195,"per_delivery_price":2085,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
11616            </script>
11616<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025533776194" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
11617                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" aria-live="polite" aria-atomic="true">
11618                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" style="display: none;"></span>
11619                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194">$108.95</span>
11620
11621                        
11622                    </div>
11623
11624                    
11625                        <div class="product-option">
11626                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194-0" class="visually-hidden">
11627                                Select Size for Melissa Essential Oil
11628                            </label>
11629                            <select
11630                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194-0"
11631                                class="variant-select"
11632                                name="options[Size]"
11633                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194"
11634                                data-index="option0"
11635                            ><option
11636                                        value="5ml"
11637                                        selected="selected"
11638                                    >
11639                                        5ml
11640                                    </option><option
11641                                        value="1ml"
11642                                        
11643                                    >
11644                                        1ml
11645                                    </option></select>
11646                        </div>
11647                    
11648                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" class="visually-hidden">
11649                Choose variant for Melissa Essential Oil
11650            </label>
11651            <select
11652                name="id"
11653                data-productid="8025533776194"
11654                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194"
11655                class="product-variants-select no-js-only"
11656            ><option
11657                        value="44111294955842"
11658                         selected="selected" 
11659                        
11660                    >
11661                        5ml - $108.95 
11662                    </option><option
11663                        value="52064234307951"
11664                        
11665                        
11666                    >
11667                        1ml - $21.95 
11668                    </option></select>
11669
11670            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194">
11671                <input type="hidden" name="quantity" value="1">
11672                
11673
11674                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" aria-live="assertive"></div>
11675
11676                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194" class="visually-hidden">Adds item to your shopping cart</span>
11677
11678                <button
11679                    class="addtocart-btn add-to-cart"
11680                    type="submit"
11681                    name="add"
11682                    aria-label="Add to Cart - Add Melissa Essential Oil to cart"
11683                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194"
11684                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194"
11685                    
11686                >
11687                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025533776194">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
11688                </button>
11689            </div><input type="hidden" name="product-id" value="8025533776194" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
11689<script type="application/ld+json">
11690    {
11691      "@context": "http://schema.org/",
11692      "@type": "Product",
11693      "name": "Melissa Essential Oil",
11694      "url": "https:\/\/www.rockymountainoils.com\/products\/melissa-essential-oil","image": [
11695          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/melissa-essential-oil-5ml-1.jpg?v=1764659300\u0026width=540"
11696        ],
11697      "description": "Melissa Essential Oil, also known as Lemon Balm, offers a delightful herbaceous aroma with citrusy and sweet notes. This precious oil is steam distilled from the flowers of the Melissa plant, native to the Mediterranean region. Melissa Essential Oil is renowned for its ability to promote a sense of calm and emotional balance. Its soothing properties may help create a peaceful environment, perfect for relaxation and mindfulness practices.\nWhen used in skincare routines, Melissa Essential Oil may support overall skin health and appearance. Its natural properties can help maintain a clear, radiant complexion. Discover the versatile benefits of this luxurious essential oil for your aromatic and self-care needs.","sku": "MELFRA-S5",
11698      "brand": {
11699        "@type": "Brand",
11700        "name": "Rocky Mountain Oils"
11701      },
11702      "offers": {
11703          "@type": "AggregateOffer",
11704          "availability": "http://schema.org/InStock",
11705          "priceCurrency": "USD",
11706          "highPrice": 108.95,
11707          "lowPrice": 21.95,
11708          "offerCount": 2,
11709          "offers": [{
11710              "@type" : "Offer","sku": "MELFRA-S5","gtin12": "053176176185","availability" : "http://schema.org/InStock",
11711              "price" : 108.95,
11712              "priceCurrency" : "USD",
11713              "priceValidUntil": "2026-12-31",
11714              "url" : "https:\/\/www.rockymountainoils.com\/products\/melissa-essential-oil?variant=44111294955842"
11715            },
11716{
11717              "@type" : "Offer","sku": "MELFRA-1ML","gtin12": "053176184807","availability" : "http://schema.org/InStock",
11718              "price" : 21.95,
11719              "priceCurrency" : "USD",
11720              "priceValidUntil": "2026-12-31",
11721              "url" : "https:\/\/www.rockymountainoils.com\/products\/melissa-essential-oil?variant=52064234307951"
11722            }
11723]
11724      }
11725    }
11726    </script>
11726</div>
11727
11728<style>
11729/* Ensure visually-hidden utility exists even if theme lacks it */
11730.visually-hidden {
11731    position: absolute !important;
11732    width: 1px !important;
11733    height: 1px !important;
11734    padding: 0 !important;
11735    margin: -1px !important;
11736    overflow: hidden !important;
11737    clip: rect(0, 0, 0, 0) !important;
11738    white-space: nowrap !important;
11739    border: 0 !important;
11740}
11741
11742/* Ensure the main product image is tappable on iOS */
11743.main-product-image {
11744    cursor: pointer;
11745    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
11746    touch-action: manipulation;
11747}
11748
11749/* ULTIMATE FIX - Override anything that hides select text */
11750.product-variants-select,
11751.product-variants-select.no-js-only,
11752select.product-variants-select,
11753select[id*="ProductSelect-"] {
11754    color: #1a1a1a !important;
11755    opacity: 1 !important;
11756    background-color: #ffffff !important;
11757    -webkit-text-fill-color: #1a1a1a !important;
11758}
11759
11760.product-variants-select option,
11761select[id*="ProductSelect-"] option {
11762    color: #1a1a1a !important;
11763    background-color: #ffffff !important;
11764    -webkit-text-fill-color: #1a1a1a !important;
11765}
11766
11767.product-variants-select option:checked,
11768select[id*="ProductSelect-"] option:checked {
11769    color: #1a1a1a !important;
11770    background-color: #e8f0fe !important;
11771}
11772
11773.product-variants-select option:disabled,
11774select[id*="ProductSelect-"] option:disabled {
11775    color: #6c6c6c !important;
11776    background-color: #f5f5f5 !important;
11777    -webkit-text-fill-color: #6c6c6c !important;
11778    opacity: 1 !important;
11779}
11780
11781.product-variants-select:focus,
11782select[id*="ProductSelect-"]:focus {
11783    color: #1a1a1a !important;
11784    outline: 3px solid #000000ff !important;
11785}
11786</style>
11787                      </div><div class="item">
11788                    	
11788<script>
11789(function() {
11790    class ProductCardVariantSelector {
11791        constructor(container) {
11792            this.container = container;
11793            if (!this.container) return;
11794
11795            this.form = this.container.querySelector('.product-form');
11796            this.variantSelectors = this.container.querySelectorAll('.variant-select');
11797            this.masterSelect = this.container.querySelector('.product-variants-select');
11798            this.productImage = this.container.querySelector('.main-product-image');
11799            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
11800            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
11801            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
11802            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
11803            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
11804            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
11805            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
11806            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
11807            this.saleTag = this.container.querySelector('.hc-sale-tag');
11808            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
11809
11810            if (!this.masterSelect || !this.variantsJsonScript) return;
11811
11812            try {
11813                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
11814            } catch (e) { return; }
11815
11816            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
11817            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
11818
11819            this.init();
11820        }
11821
11822        init() {
11823            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
11824            if (this.productImage) {
11825                let touchStartX = 0, touchStartY = 0, touchMoved = false;
11826                let lastTouchTime = 0;
11827
11828                this.productImage.style.cursor = 'pointer';
11829                this.productImage.setAttribute('role', 'button');
11830                this.productImage.setAttribute('tabindex', '0');
11831
11832                this.productImage.addEventListener('touchstart', (e) => {
11833                    const t = e.touches[0];
11834                    touchStartX = t.clientX;
11835                    touchStartY = t.clientY;
11836                    touchMoved = false;
11837                }, { passive: true });
11838
11839                this.productImage.addEventListener('touchmove', (e) => {
11840                    const t = e.touches[0];
11841                    if (Math.abs(t.clientX - touchStartX) > 10 ||
11842                        Math.abs(t.clientY - touchStartY) > 10) {
11843                        touchMoved = true;
11844                    }
11845                }, { passive: true });
11846
11847                this.productImage.addEventListener('touchend', (e) => {
11848                    if (touchMoved) return;
11849                    lastTouchTime = Date.now();
11850                    e.preventDefault();
11851                    this.onImageTap(e);
11852                }, { passive: false });
11853
11854                // Desktop / non-touch fallback (with double-fire protection after touchend)
11855                this.productImage.addEventListener('click', (e) => {
11856                    if (Date.now() - lastTouchTime < 500) return;
11857                    this.onImageTap(e);
11858                });
11859
11860                this.productImage.addEventListener('keydown', (e) => {
11861                    if (e.key === 'Enter' || e.key === ' ') {
11862                        e.preventDefault();
11863                        this.onImageTap(e);
11864                    }
11865                });
11866            }
11867
11868            // --- Variant select listeners ---
11869            if (this.variantSelectors.length > 0) {
11870                this.variantSelectors.forEach(select => {
11871                    select.addEventListener('change', this.onVariantChange.bind(this));
11872                });
11873                this.updateProductDetails(this.getCurrentVariant());
11874            }
11875        }
11876
11877        // ============================================================
11878        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
11879        // Currently: navigates to the product page.
11880        // ============================================================
11881        onImageTap(e) {
11882            const link = this.container.querySelector('.product-title-link');
11883            if (link && link.href && link.href !== '#') {
11884                window.location.href = link.href;
11885            }
11886        }
11887        // ============================================================
11888
11889        onVariantChange() {
11890            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
11891            const matchedVariant = this.findMatchingVariant(selectedOptions);
11892
11893            if (matchedVariant) {
11894                this.masterSelect.value = matchedVariant.id;
11895                this.updateProductDetails(matchedVariant);
11896                if (this.statusElement) this.statusElement.textContent = '';
11897            } else {
11898                if (this.statusElement) {
11899                    this.statusElement.textContent = 'No available variant matches your selection';
11900                }
11901                this.updateProductDetails(null);
11902            }
11903        }
11904
11905        findMatchingVariant(selectedOptions) {
11906            return this.productVariants.find(variant => {
11907                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
11908                return selectedOptions.every((val, i) => variant.options[i] === val);
11909            });
11910        }
11911
11912        getCurrentVariant() {
11913            if (!this.masterSelect) return null;
11914            const id = this.masterSelect.value;
11915            if (!id) return null;
11916            return this.productVariants.find(v => String(v.id) === String(id)) || null;
11917        }
11918
11919        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
11920        sizedImageUrl(src, width) {
11921            if (!src) return src;
11922            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
11923        }
11924
11925        updateProductDetails(variant) {
11926            this.container.setAttribute('aria-busy', 'true');
11927
11928            if (!variant) {
11929                if (this.addToCartButton) this.addToCartButton.disabled = true;
11930                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
11931                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
11932                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
11933                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
11934                if (this.saleTag) this.saleTag.style.display = 'none';
11935                this.container.setAttribute('aria-busy', 'false');
11936                return;
11937            }
11938
11939            // 1. Image
11940            if (this.productImage) {
11941                if (variant.featured_image && variant.featured_image.src) {
11942                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
11943                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
11944                    this.productImage.src = sized;
11945                    this.productImage.srcset = '';
11946                    this.productImage.alt = variant.featured_image.alt
11947                        ? variant.featured_image.alt
11948                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
11949                } else if (this.mainImageUrl) {
11950                    this.productImage.src = this.mainImageUrl;
11951                    this.productImage.srcset = '';
11952                    this.productImage.alt = this.productTitle;
11953                }
11954            }
11955
11956            // 2. Price
11957            const moneyFormat = "${{amount}}";
11958            const formatMoney = (cents, format) => {
11959                if (typeof cents === 'string') cents = cents.replace('.', '');
11960                let value = '';
11961                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
11962                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
11963
11964                function formatWithDelimiters(number, precision, thousands, decimal) {
11965                    precision = precision ?? 2;
11966                    thousands = thousands ?? ',';
11967                    decimal = decimal ?? '.';
11968                    if (isNaN(number) || number == null) return 0;
11969                    number = (number / 100.0).toFixed(precision);
11970                    const parts = number.split('.');
11971                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
11972                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
11973                    return dollars + centsPart;
11974                }
11975
11976                switch (formatString.match(placeholderRegex)?.[1]) {
11977                    case 'amount': value = formatWithDelimiters(cents, 2); break;
11978                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
11979                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
11980                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
11981                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
11982                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
11983                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
11984                    default: value = formatWithDelimiters(cents, 2);
11985                }
11986                try {
11987                    return formatString.replace(placeholderRegex, value);
11988                } catch (e) {
11989                    const fallback = (cents / 100.0).toFixed(2);
11990                    return formatString.includes('')
11991                        ? formatString.replace(placeholderRegex, fallback)
11992                        : fallback;
11993                }
11994            };
11995
11996            if (this.currentPriceElement) {
11997                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
11998            }
11999            if (this.comparePriceElement && this.priceWrapper) {
12000                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
12001                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
12002                    this.comparePriceElement.style.display = '';
12003                    this.priceWrapper.classList.add('sale');
12004                } else {
12005                    this.comparePriceElement.textContent = '';
12006                    this.comparePriceElement.style.display = 'none';
12007                    this.priceWrapper.classList.remove('sale');
12008                }
12009            }
12010
12011            // 3. Sale tag
12012            if (this.saleTag) {
12013                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
12014                if (isDiscounted && variant.available) {
12015                    this.saleTag.style.display = 'block';
12016                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
12017                    const span = this.saleTag.querySelector('span');
12018                    if (span) span.textContent = discount + '%';
12019                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
12020                    this.saleTag.setAttribute('role', 'status');
12021                } else {
12022                    this.saleTag.style.display = 'none';
12023                }
12024            }
12025
12026            // 4. Add to cart
12027            if (this.addToCartButton && this.addToCartText) {
12028                if (variant.available) {
12029                    this.addToCartButton.disabled = false;
12030                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
12031                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
12032                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
12033                } else {
12034                    this.addToCartButton.disabled = true;
12035                    this.addToCartText.textContent = 'Sold Out';
12036                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
12037                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
12038                }
12039            }
12040            if (this.notifyMeButton) {
12041                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
12042            }
12043
12044            this.container.setAttribute('aria-busy', 'false');
12045        }
12046    }
12047
12048    function initProductCards(root) {
12049        root = root || document;
12050        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
12051            if (cardContainer.dataset.variantSelectorInit === 'true') return;
12052            cardContainer.dataset.variantSelectorInit = 'true';
12053            new ProductCardVariantSelector(cardContainer);
12054        });
12055    }
12056
12057    if (document.readyState === 'loading') {
12058        document.addEventListener('DOMContentLoaded', () => initProductCards());
12059    } else {
12060        initProductCards();
12061    }
12062
12063    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
12064})();
12065</script>
12065<div class="product-card-wrapper" data-product-id="8025539084610" aria-busy="false">
12066
12067    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610"><!-- WISHLIST BUTTON -->
12068        <div class='xb-wishlist__btn-custom'>
12069            <div
12070                class='xb-wishlist__add'
12071                xb-product-id='8025539084610'
12072                xb-product-title='Vitex Berry (Chaste Berry) Essential Oil'
12073                xb-product-variant='44111346794818'
12074                xb-is-in-stock='true'
12075                xb-product-handle='vitex-berry-essential-oil'
12076            >
12077                <button aria-label="Add Vitex Berry (Chaste Berry) Essential Oil to wishlist" aria-pressed="false">
12078                    <svg
12079                        xmlns='http://www.w3.org/2000/svg'
12080                        width='20'
12081                        height='20'
12082                        viewBox='0 0 24 24'
12083                        fill='none'
12084                        stroke='#FF4A71'
12085                        stroke-width='2'
12086                        stroke-linecap='round'
12087                        stroke-linejoin='round'
12088                        aria-hidden='true'
12089                        focusable='false'
12090                    >
12091                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
12092                    </svg>
12093                </button>
12094            </div>
12095
12096            <div class="xb-wishlist__loading" xb-product-id="8025539084610">
12097                <span class="loading-spinner"></span>
12098            </div>
12099
12100            <div class='xb-wishlist__remove' xb-product-id='8025539084610' xb-is-in-stock='true'>
12101                <button aria-label="Remove Vitex Berry (Chaste Berry) Essential Oil from wishlist" aria-pressed="true">
12102                    <svg
12103                        xmlns='http://www.w3.org/2000/svg'
12104                        width='20'
12105                        height='20'
12106                        viewBox='0 0 24 24'
12107                        fill='#FF4A71'
12108                        stroke='#FF4A71'
12109                        stroke-width='2'
12110                        stroke-linecap='round'
12111                        stroke-linejoin='round'
12112                        aria-hidden='true'
12113                        focusable='false'
12114                    >
12115                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
12116                    </svg>
12117                </button>
12118            </div>
12119        </div><img
12120              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610"
12121              class="main-product-image"
12122              src="//www.rockymountainoils.com/cdn/shop/files/vitex-berry-essential-oil-5ml-1.jpg?crop=center&height=300&v=1765697381&width=300"
12123              alt="Vitex Berry Essential Oil - 5ml - Rocky Mountain Oils"
12124              width="300"
12125              height="300"
12126              loading="lazy"
12127            /></div>
12128
12129    <div class="product-content">
12130        <div class="product-title">
12131            <a href="/products/vitex-berry-essential-oil" class="product-title-link" aria-label="View Vitex Berry (Chaste Berry) Essential Oil">
12132                <h2>Vitex Berry (Chaste Berry) Essential Oil</h2>
12133            </a>
12134        </div><div>
12135                <div class="product-subtitle">
12136                    Floral, herbal, earthy; for a more relaxed & peaceful state of mind. 
12137                </div>
12138            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="8025539084610" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
12139            <div class="product-data-store" style="display:none;"
12140                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/vitex-berry-essential-oil-5ml-1.jpg?v=1765697381&width=300"
12141                 data-product-title="Vitex Berry (Chaste Berry) Essential Oil"
12142                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610">
12143            </div>
12144
12145            
12145<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" type="application/json">
12146                [{"id":44111346794818,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"VITISL-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":44621548650818,"product_id":8025539084610,"position":1,"created_at":"2024-03-27T10:42:21-06:00","updated_at":"2025-12-14T00:29:41-07:00","alt":"Vitex Berry Essential Oil - 5ml - Rocky Mountain Oils","width":584,"height":584,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/vitex-berry-essential-oil-5ml-1.jpg?v=1765697381","variant_ids":[44111346794818]},"available":true,"name":"Vitex Berry (Chaste Berry) Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":6995,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176176871","featured_media":{"alt":"Vitex Berry Essential Oil - 5ml - Rocky Mountain Oils","id":37105490362690,"position":1,"preview_image":{"aspect_ratio":1.0,"height":584,"width":584,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/vitex-berry-essential-oil-5ml-1.jpg?v=1765697381"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":4897}],"price":4897,"compare_at_price":6995,"per_delivery_price":4897,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":5946},{"position":2,"price":5596}],"price":5946,"compare_at_price":6995,"per_delivery_price":5946,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6296},{"position":2,"price":5946}],"price":6296,"compare_at_price":6995,"per_delivery_price":6296,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6645},{"position":2,"price":6296}],"price":6645,"compare_at_price":6995,"per_delivery_price":6645,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":6296},{"position":2,"price":5946}],"price":6296,"compare_at_price":6995,"per_delivery_price":6296,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":6645},{"position":2,"price":6296}],"price":6645,"compare_at_price":6995,"per_delivery_price":6645,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":5946},{"position":2,"price":5596}],"price":5946,"compare_at_price":6995,"per_delivery_price":5946,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":6296},{"position":2,"price":5946}],"price":6296,"compare_at_price":6995,"per_delivery_price":6296,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":6645},{"position":2,"price":6296}],"price":6645,"compare_at_price":6995,"per_delivery_price":6645,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52064239780207,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"VITISL-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328912290159,"product_id":8025539084610,"position":5,"created_at":"2025-06-30T23:45:40-06:00","updated_at":"2025-12-14T00:29:41-07:00","alt":"Small brown bottle with a black cap of Vitex Berry essential oil on a white background, featuring a 'Limited Time Only!' banner.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Vitex_Berry_1ml.webp?v=1765697381","variant_ids":[52064239780207]},"available":true,"name":"Vitex Berry (Chaste Berry) Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1495,"weight":28,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184838","featured_media":{"alt":"Small brown bottle with a black cap of Vitex Berry essential oil on a white background, featuring a 'Limited Time Only!' banner.","id":51984792748399,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Vitex_Berry_1ml.webp?v=1765697381"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":1047}],"price":1047,"compare_at_price":1495,"per_delivery_price":1047,"selling_plan_id":691785924975,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1271},{"position":2,"price":1196}],"price":1271,"compare_at_price":1495,"per_delivery_price":1271,"selling_plan_id":691785957743,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1346},{"position":2,"price":1271}],"price":1346,"compare_at_price":1495,"per_delivery_price":1346,"selling_plan_id":691785990511,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1420},{"position":2,"price":1346}],"price":1420,"compare_at_price":1495,"per_delivery_price":1420,"selling_plan_id":691786023279,"selling_plan_group_id":"8c25b6d0c0826f628094dd16cf1174b8726e84be"},{"price_adjustments":[{"position":1,"price":1346},{"position":2,"price":1271}],"price":1346,"compare_at_price":1495,"per_delivery_price":1346,"selling_plan_id":691786088815,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1420},{"position":2,"price":1346}],"price":1420,"compare_at_price":1495,"per_delivery_price":1420,"selling_plan_id":691786121583,"selling_plan_group_id":"2e18bf0a80c495d1b47281e6c0d9c37bcd01d20e"},{"price_adjustments":[{"position":1,"price":1271},{"position":2,"price":1196}],"price":1271,"compare_at_price":1495,"per_delivery_price":1271,"selling_plan_id":691795362159,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1346},{"position":2,"price":1271}],"price":1346,"compare_at_price":1495,"per_delivery_price":1346,"selling_plan_id":691795394927,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"},{"price_adjustments":[{"position":1,"price":1420},{"position":2,"price":1346}],"price":1420,"compare_at_price":1495,"per_delivery_price":1420,"selling_plan_id":691795427695,"selling_plan_group_id":"e6b92494180d03273214edfc475ceef2a8ea3d0b"}],"quantity_rule":{"min":1,"max":null,"increment":1}}]
12147            </script>
12147<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="8025539084610" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
12148                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" aria-live="polite" aria-atomic="true">
12149                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" style="display: none;"></span>
12150                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610">$69.95</span>
12151
12152                        
12153                    </div>
12154
12155                    
12156                        <div class="product-option">
12157                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610-0" class="visually-hidden">
12158                                Select Size for Vitex Berry (Chaste Berry) Essential Oil
12159                            </label>
12160                            <select
12161                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610-0"
12162                                class="variant-select"
12163                                name="options[Size]"
12164                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610"
12165                                data-index="option0"
12166                            ><option
12167                                        value="5ml"
12168                                        selected="selected"
12169                                    >
12170                                        5ml
12171                                    </option><option
12172                                        value="1ml"
12173                                        
12174                                    >
12175                                        1ml
12176                                    </option></select>
12177                        </div>
12178                    
12179                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" class="visually-hidden">
12180                Choose variant for Vitex Berry (Chaste Berry) Essential Oil
12181            </label>
12182            <select
12183                name="id"
12184                data-productid="8025539084610"
12185                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610"
12186                class="product-variants-select no-js-only"
12187            ><option
12188                        value="44111346794818"
12189                         selected="selected" 
12190                        
12191                    >
12192                        5ml - $69.95 
12193                    </option><option
12194                        value="52064239780207"
12195                        
12196                        
12197                    >
12198                        1ml - $14.95 
12199                    </option></select>
12200
12201            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610">
12202                <input type="hidden" name="quantity" value="1">
12203                
12204
12205                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" aria-live="assertive"></div>
12206
12207                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610" class="visually-hidden">Adds item to your shopping cart</span>
12208
12209                <button
12210                    class="addtocart-btn add-to-cart"
12211                    type="submit"
12212                    name="add"
12213                    aria-label="Add to Cart - Add Vitex Berry (Chaste Berr
12213y) Essential Oil to cart"
12214                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610"
12215                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610"
12216                    
12217                >
12218                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-8025539084610">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
12219                </button>
12220            </div><input type="hidden" name="product-id" value="8025539084610" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
12220<script type="application/ld+json">
12221    {
12222      "@context": "http://schema.org/",
12223      "@type": "Product",
12224      "name": "Vitex Berry (Chaste Berry) Essential Oil",
12225      "url": "https:\/\/www.rockymountainoils.com\/products\/vitex-berry-essential-oil","image": [
12226          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/vitex-berry-essential-oil-5ml-1.jpg?v=1765697381\u0026width=584"
12227        ],
12228      "description": "Vitex Berry Essential Oil offers a unique blend of floral, herbal, and earthy aromas with a hint of mint. This versatile oil is known for its ability to support emotional well-being and promote a sense of calm. Vitex Berry Essential Oil may help balance mood and encourage restful sleep, making it a valuable addition to your essential oil collection.","sku": "VITISL-S5",
12229      "brand": {
12230        "@type": "Brand",
12231        "name": "Rocky Mountain Oils"
12232      },
12233      "offers": {
12234          "@type": "AggregateOffer",
12235          "availability": "http://schema.org/InStock",
12236          "priceCurrency": "USD",
12237          "highPrice": 69.95,
12238          "lowPrice": 14.95,
12239          "offerCount": 2,
12240          "offers": [{
12241              "@type" : "Offer","sku": "VITISL-S5","gtin12": "053176176871","availability" : "http://schema.org/InStock",
12242              "price" : 69.95,
12243              "priceCurrency" : "USD",
12244              "priceValidUntil": "2026-12-31",
12245              "url" : "https:\/\/www.rockymountainoils.com\/products\/vitex-berry-essential-oil?variant=44111346794818"
12246            },
12247{
12248              "@type" : "Offer","sku": "VITISL-1ML","gtin12": "053176184838","availability" : "http://schema.org/InStock",
12249              "price" : 14.95,
12250              "priceCurrency" : "USD",
12251              "priceValidUntil": "2026-12-31",
12252              "url" : "https:\/\/www.rockymountainoils.com\/products\/vitex-berry-essential-oil?variant=52064239780207"
12253            }
12254]
12255      }
12256    }
12257    </script>
12257</div>
12258
12259<style>
12260/* Ensure visually-hidden utility exists even if theme lacks it */
12261.visually-hidden {
12262    position: absolute !important;
12263    width: 1px !important;
12264    height: 1px !important;
12265    padding: 0 !important;
12266    margin: -1px !important;
12267    overflow: hidden !important;
12268    clip: rect(0, 0, 0, 0) !important;
12269    white-space: nowrap !important;
12270    border: 0 !important;
12271}
12272
12273/* Ensure the main product image is tappable on iOS */
12274.main-product-image {
12275    cursor: pointer;
12276    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
12277    touch-action: manipulation;
12278}
12279
12280/* ULTIMATE FIX - Override anything that hides select text */
12281.product-variants-select,
12282.product-variants-select.no-js-only,
12283select.product-variants-select,
12284select[id*="ProductSelect-"] {
12285    color: #1a1a1a !important;
12286    opacity: 1 !important;
12287    background-color: #ffffff !important;
12288    -webkit-text-fill-color: #1a1a1a !important;
12289}
12290
12291.product-variants-select option,
12292select[id*="ProductSelect-"] option {
12293    color: #1a1a1a !important;
12294    background-color: #ffffff !important;
12295    -webkit-text-fill-color: #1a1a1a !important;
12296}
12297
12298.product-variants-select option:checked,
12299select[id*="ProductSelect-"] option:checked {
12300    color: #1a1a1a !important;
12301    background-color: #e8f0fe !important;
12302}
12303
12304.product-variants-select option:disabled,
12305select[id*="ProductSelect-"] option:disabled {
12306    color: #6c6c6c !important;
12307    background-color: #f5f5f5 !important;
12308    -webkit-text-fill-color: #6c6c6c !important;
12309    opacity: 1 !important;
12310}
12311
12312.product-variants-select:focus,
12313select[id*="ProductSelect-"]:focus {
12314    color: #1a1a1a !important;
12315    outline: 3px solid #000000ff !important;
12316}
12317</style>
12318                      </div><div class="item">
12319                    	
12319<script>
12320(function() {
12321    class ProductCardVariantSelector {
12322        constructor(container) {
12323            this.container = container;
12324            if (!this.container) return;
12325
12326            this.form = this.container.querySelector('.product-form');
12327            this.variantSelectors = this.container.querySelectorAll('.variant-select');
12328            this.masterSelect = this.container.querySelector('.product-variants-select');
12329            this.productImage = this.container.querySelector('.main-product-image');
12330            this.priceWrapper = this.container.querySelector('[id^="ProductPrice-"]');
12331            this.currentPriceElement = this.container.querySelector('[id^="CurrentPrice-"]');
12332            this.comparePriceElement = this.container.querySelector('[id^="ComparePrice-"]');
12333            this.addToCartButton = this.container.querySelector('[id^="AddToCart-"]');
12334            this.addToCartText = this.container.querySelector('[id^="AddToCartText-"]');
12335            this.notifyMeButton = this.container.querySelector('[id^="NotifyMe-"]');
12336            this.variantsJsonScript = this.container.querySelector('[id^="VariantsJson-"]');
12337            this.dataStore = this.container.querySelector('[id^="DataStore-"]');
12338            this.saleTag = this.container.querySelector('.hc-sale-tag');
12339            this.statusElement = this.container.querySelector('[id^="variant-status-"]');
12340
12341            if (!this.masterSelect || !this.variantsJsonScript) return;
12342
12343            try {
12344                this.productVariants = JSON.parse(this.variantsJsonScript.textContent);
12345            } catch (e) { return; }
12346
12347            this.mainImageUrl = this.dataStore ? this.dataStore.dataset.mainImageUrl : null;
12348            this.productTitle = this.dataStore ? this.dataStore.dataset.productTitle : '';
12349
12350            this.init();
12351        }
12352
12353        init() {
12354            // --- iOS-safe image tap handling (works on iPhone 16, 17 Pro Max, etc.) ---
12355            if (this.productImage) {
12356                let touchStartX = 0, touchStartY = 0, touchMoved = false;
12357                let lastTouchTime = 0;
12358
12359                this.productImage.style.cursor = 'pointer';
12360                this.productImage.setAttribute('role', 'button');
12361                this.productImage.setAttribute('tabindex', '0');
12362
12363                this.productImage.addEventListener('touchstart', (e) => {
12364                    const t = e.touches[0];
12365                    touchStartX = t.clientX;
12366                    touchStartY = t.clientY;
12367                    touchMoved = false;
12368                }, { passive: true });
12369
12370                this.productImage.addEventListener('touchmove', (e) => {
12371                    const t = e.touches[0];
12372                    if (Math.abs(t.clientX - touchStartX) > 10 ||
12373                        Math.abs(t.clientY - touchStartY) > 10) {
12374                        touchMoved = true;
12375                    }
12376                }, { passive: true });
12377
12378                this.productImage.addEventListener('touchend', (e) => {
12379                    if (touchMoved) return;
12380                    lastTouchTime = Date.now();
12381                    e.preventDefault();
12382                    this.onImageTap(e);
12383                }, { passive: false });
12384
12385                // Desktop / non-touch fallback (with double-fire protection after touchend)
12386                this.productImage.addEventListener('click', (e) => {
12387                    if (Date.now() - lastTouchTime < 500) return;
12388                    this.onImageTap(e);
12389                });
12390
12391                this.productImage.addEventListener('keydown', (e) => {
12392                    if (e.key === 'Enter' || e.key === ' ') {
12393                        e.preventDefault();
12394                        this.onImageTap(e);
12395                    }
12396                });
12397            }
12398
12399            // --- Variant select listeners ---
12400            if (this.variantSelectors.length > 0) {
12401                this.variantSelectors.forEach(select => {
12402                    select.addEventListener('change', this.onVariantChange.bind(this));
12403                });
12404                this.updateProductDetails(this.getCurrentVariant());
12405            }
12406        }
12407
12408        // ============================================================
12409        // CHANGE THIS IF YOU WANT DIFFERENT TAP BEHAVIOR
12410        // Currently: navigates to the product page.
12411        // ============================================================
12412        onImageTap(e) {
12413            const link = this.container.querySelector('.product-title-link');
12414            if (link && link.href && link.href !== '#') {
12415                window.location.href = link.href;
12416            }
12417        }
12418        // ============================================================
12419
12420        onVariantChange() {
12421            const selectedOptions = Array.from(this.variantSelectors).map(s => s.value);
12422            const matchedVariant = this.findMatchingVariant(selectedOptions);
12423
12424            if (matchedVariant) {
12425                this.masterSelect.value = matchedVariant.id;
12426                this.updateProductDetails(matchedVariant);
12427                if (this.statusElement) this.statusElement.textContent = '';
12428            } else {
12429                if (this.statusElement) {
12430                    this.statusElement.textContent = 'No available variant matches your selection';
12431                }
12432                this.updateProductDetails(null);
12433            }
12434        }
12435
12436        findMatchingVariant(selectedOptions) {
12437            return this.productVariants.find(variant => {
12438                if (!variant.options || variant.options.length !== selectedOptions.length) return false;
12439                return selectedOptions.every((val, i) => variant.options[i] === val);
12440            });
12441        }
12442
12443        getCurrentVariant() {
12444            if (!this.masterSelect) return null;
12445            const id = this.masterSelect.value;
12446            if (!id) return null;
12447            return this.productVariants.find(v => String(v.id) === String(id)) || null;
12448        }
12449
12450        // Shopify CDN: insert _WIDTHx before extension for a properly sized image
12451        sizedImageUrl(src, width) {
12452            if (!src) return src;
12453            return src.replace(/(\.[a-z]{3,4})(\?|$)/i, `_${width}x$1$2`);
12454        }
12455
12456        updateProductDetails(variant) {
12457            this.container.setAttribute('aria-busy', 'true');
12458
12459            if (!variant) {
12460                if (this.addToCartButton) this.addToCartButton.disabled = true;
12461                if (this.addToCartText) this.addToCartText.textContent = 'Unavailable';
12462                if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
12463                if (this.priceWrapper) this.priceWrapper.classList.remove('sale');
12464                if (this.comparePriceElement) this.comparePriceElement.style.display = 'none';
12465                if (this.saleTag) this.saleTag.style.display = 'none';
12466                this.container.setAttribute('aria-busy', 'false');
12467                return;
12468            }
12469
12470            // 1. Image
12471            if (this.productImage) {
12472                if (variant.featured_image && variant.featured_image.src) {
12473                    const sized = this.sizedImageUrl(variant.featured_image.src, 300);
12474                    const variantOptions = variant.options ? variant.options.join(' - ') : '';
12475                    this.productImage.src = sized;
12476                    this.productImage.srcset = '';
12477                    this.productImage.alt = variant.featured_image.alt
12478                        ? variant.featured_image.alt
12479                        : (this.productTitle + (variantOptions ? ' - ' + variantOptions : ''));
12480                } else if (this.mainImageUrl) {
12481                    this.productImage.src = this.mainImageUrl;
12482                    this.productImage.srcset = '';
12483                    this.productImage.alt = this.productTitle;
12484                }
12485            }
12486
12487            // 2. Price
12488            const moneyFormat = "${{amount}}";
12489            const formatMoney = (cents, format) => {
12490                if (typeof cents === 'string') cents = cents.replace('.', '');
12491                let value = '';
12492                const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/;
12493                const formatString = (format || moneyFormat).replace(/<[^>]*>/g, '');
12494
12495                function formatWithDelimiters(number, precision, thousands, decimal) {
12496                    precision = precision ?? 2;
12497                    thousands = thousands ?? ',';
12498                    decimal = decimal ?? '.';
12499                    if (isNaN(number) || number == null) return 0;
12500                    number = (number / 100.0).toFixed(precision);
12501                    const parts = number.split('.');
12502                    const dollars = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + thousands);
12503                    const centsPart = parts[1] ? (decimal + parts[1]) : '';
12504                    return dollars + centsPart;
12505                }
12506
12507                switch (formatString.match(placeholderRegex)?.[1]) {
12508                    case 'amount': value = formatWithDelimiters(cents, 2); break;
12509                    case 'amount_no_decimals': value = formatWithDelimiters(cents, 0); break;
12510                    case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break;
12511                    case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break;
12512                    case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", "."); break;
12513                    case 'amount_no_decimals_with_space_separator': value = formatWithDelimiters(cents, 0, " ", ","); break;
12514                    case 'amount_with_space_separator': value = formatWithDelimiters(cents, 2, " ", ","); break;
12515                    default: value = formatWithDelimiters(cents, 2);
12516                }
12517                try {
12518                    return formatString.replace(placeholderRegex, value);
12519                } catch (e) {
12520                    const fallback = (cents / 100.0).toFixed(2);
12521                    return formatString.includes('')
12522                        ? formatString.replace(placeholderRegex, fallback)
12523                        : fallback;
12524                }
12525            };
12526
12527            if (this.currentPriceElement) {
12528                this.currentPriceElement.textContent = formatMoney(variant.price, moneyFormat);
12529            }
12530            if (this.comparePriceElement && this.priceWrapper) {
12531                if (variant.compare_at_price && variant.compare_at_price > variant.price) {
12532                    this.comparePriceElement.textContent = formatMoney(variant.compare_at_price, moneyFormat);
12533                    this.comparePriceElement.style.display = '';
12534                    this.priceWrapper.classList.add('sale');
12535                } else {
12536                    this.comparePriceElement.textContent = '';
12537                    this.comparePriceElement.style.display = 'none';
12538                    this.priceWrapper.classList.remove('sale');
12539                }
12540            }
12541
12542            // 3. Sale tag
12543            if (this.saleTag) {
12544                const isDiscounted = variant.compare_at_price && variant.compare_at_price > variant.price;
12545                if (isDiscounted && variant.available) {
12546                    this.saleTag.style.display = 'block';
12547                    const discount = Math.round((variant.compare_at_price - variant.price) * 100.0 / variant.compare_at_price);
12548                    const span = this.saleTag.querySelector('span');
12549                    if (span) span.textContent = discount + '%';
12550                    this.saleTag.setAttribute('aria-label', 'Save ' + discount + '%');
12551                    this.saleTag.setAttribute('role', 'status');
12552                } else {
12553                    this.saleTag.style.display = 'none';
12554                }
12555            }
12556
12557            // 4. Add to cart
12558            if (this.addToCartButton && this.addToCartText) {
12559                if (variant.available) {
12560                    this.addToCartButton.disabled = false;
12561                    this.addToCartText.innerHTML = 'Add to Cart <i class="cart-icon"></i>';
12562                    this.addToCartButton.setAttribute('aria-label', 'Add to Cart - Add ' + this.productTitle + ' to cart');
12563                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'none';
12564                } else {
12565                    this.addToCartButton.disabled = true;
12566                    this.addToCartText.textContent = 'Sold Out';
12567                    this.addToCartButton.setAttribute('aria-label', 'Sold Out - ' + this.productTitle + ' is sold out');
12568                    if (this.notifyMeButton) this.notifyMeButton.style.display = 'block';
12569                }
12570            }
12571            if (this.notifyMeButton) {
12572                this.notifyMeButton.setAttribute('data-variant-id', variant.id);
12573            }
12574
12575            this.container.setAttribute('aria-busy', 'false');
12576        }
12577    }
12578
12579    function initProductCards(root) {
12580        root = root || document;
12581        root.querySelectorAll('.product-card-wrapper[data-product-id]').forEach(cardContainer => {
12582            if (cardContainer.dataset.variantSelectorInit === 'true') return;
12583            cardContainer.dataset.variantSelectorInit = 'true';
12584            new ProductCardVariantSelector(cardContainer);
12585        });
12586    }
12587
12588    if (document.readyState === 'loading') {
12589        document.addEventListener('DOMContentLoaded', () => initProductCards());
12590    } else {
12591        initProductCards();
12592    }
12593
12594    document.addEventListener('shopify:section:load', (e) => initProductCards(e.target));
12595})();
12596</script>
12596<div class="product-card-wrapper" data-product-id="14725145461103" aria-busy="false">
12597
12598    <div class="product-image" id="ProductImageWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103"><!-- WISHLIST BUTTON -->
12599        <div class='xb-wishlist__btn-custom'>
12600            <div
12601                class='xb-wishlist__add'
12602                xb-product-id='14725145461103'
12603                xb-product-title='Moldavian Dragonhead Essential Oil'
12604                xb-product-variant='52681248309615'
12605                xb-is-in-stock='true'
12606                xb-product-handle='moldavian-dragonhead-essential-oil'
12607            >
12608                <button aria-label="Add Moldavian Dragonhead Essential Oil to wishlist" aria-pressed="false">
12609                    <svg
12610                        xmlns='http://www.w3.org/2000/svg'
12611                        width='20'
12612                        height='20'
12613                        viewBox='0 0 24 24'
12614                        fill='none'
12615                        stroke='#FF4A71'
12616                        stroke-width='2'
12617                        stroke-linecap='round'
12618                        stroke-linejoin='round'
12619                        aria-hidden='true'
12620                        focusable='false'
12621                    >
12622                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
12623                    </svg>
12624                </button>
12625            </div>
12626
12627            <div class="xb-wishlist__loading" xb-product-id="14725145461103">
12628                <span class="loading-spinner"></span>
12629            </div>
12630
12631            <div class='xb-wishlist__remove' xb-product-id='14725145461103' xb-is-in-stock='true'>
12632                <button aria-label="Remove Moldavian Dragonhead Essential Oil from wishlist" aria-pressed="true">
12633                    <svg
12634                        xmlns='http://www.w3.org/2000/svg'
12635                        width='20'
12636                        height='20'
12637                        viewBox='0 0 24 24'
12638                        fill='#FF4A71'
12639                        stroke='#FF4A71'
12640                        stroke-width='2'
12641                        stroke-linecap='round'
12642                        stroke-linejoin='round'
12643                        aria-hidden='true'
12644                        focusable='false'
12645                    >
12646                        <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
12647                    </svg>
12648                </button>
12649            </div>
12650        </div><img
12651              id="ProductImage-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103"
12652              class="main-product-image"
12653              src="//www.rockymountainoils.com/cdn/shop/files/Moldavian_Dragonhead_5ml_Neutral_2.webp?crop=center&height=300&v=1771434762&width=300"
12654              alt="Moldavian Dragonhead Essential Oil"
12655              width="300"
12656              height="300"
12657              loading="lazy"
12658            /></div>
12659
12660    <div class="product-content">
12661        <div class="product-title">
12662            <a href="/products/moldavian-dragonhead-essential-oil" class="product-title-link" aria-label="View Moldavian Dragonhead Essential Oil">
12663                <h2>Moldavian Dragonhead Essential Oil</h2>
12664            </a>
12665        </div><div>
12666                <div class="product-subtitle">
12667                    Supports emotional balance and helps manage stress response.
12668                </div>
12669            </div><div class="yotpo-widget-instance" data-yotpo-instance-id="503375" data-yotpo-product-id="14725145461103" data-yotpo-cart-product-id="" data-yotpo-section-id="index"></div><!-- START Variant Selection Form -->
12670            <div class="product-data-store" style="display:none;"
12671                 data-main-image-url="//www.rockymountainoils.com/cdn/shop/files/Moldavian_Dragonhead_5ml_Neutral_2.webp?v=1771434762&width=300"
12672                 data-product-title="Moldavian Dragonhead Essential Oil"
12673                 id="DataStore-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103">
12674            </div>
12675
12676            
12676<script id="VariantsJson-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" type="application/json">
12677                [{"id":52681248309615,"title":"5ml","option1":"5ml","option2":null,"option3":null,"sku":"MOLDRA-S5","requires_shipping":true,"taxable":true,"featured_image":{"id":61756657500527,"product_id":14725145461103,"position":1,"created_at":"2026-02-18T10:11:13-07:00","updated_at":"2026-02-18T10:12:42-07:00","alt":null,"width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Moldavian_Dragonhead_5ml_Neutral_2.webp?v=1771434762","variant_ids":[52681248309615]},"available":true,"name":"Moldavian Dragonhead Essential Oil - 5ml","public_title":"5ml","options":["5ml"],"price":3995,"weight":25,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184999","featured_media":{"alt":null,"id":53152889536879,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Moldavian_Dragonhead_5ml_Neutral_2.webp?v=1771434762"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":52681213509999,"title":"1ml","option1":"1ml","option2":null,"option3":null,"sku":"MOLDRA-1ML","requires_shipping":true,"taxable":true,"featured_image":{"id":60328950006127,"product_id":14725145461103,"position":5,"created_at":"2025-07-01T00:01:51-06:00","updated_at":"2026-02-18T10:12:42-07:00","alt":"A 1ml amber glass bottle of Moldavian Dragonhead essential oil with a label.","width":1080,"height":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Moldavian_Dragonhead_1ml.webp?v=1771434762","variant_ids":[52681213509999]},"available":true,"name":"Moldavian Dragonhead Essential Oil - 1ml","public_title":"1ml","options":["1ml"],"price":1395,"weight":25,"compare_at_price":null,"inventory_management":"shopify","barcode":"053176184845","featured_media":{"alt":"A 1ml amber glass bottle of Moldavian Dragonhead essential oil with a label.","id":51984828432751,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1080,"width":1080,"src":"\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Moldavian_Dragonhead_1ml.webp?v=1771434762"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}]
12678            </script>
12678<form method="post" action="/cart/add" id="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" accept-charset="UTF-8" class="product-variants product-form" enctype="multipart/form-data" data-productid="14725145461103" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><div class="product-price-option">
12679                    <div class="product-price" id="ProductPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" aria-live="polite" aria-atomic="true">
12680                        <span class="compare-at-price" id="ComparePrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" style="display: none;"></span>
12681                        <span class="current-price" id="CurrentPrice-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103">$39.95</span>
12682
12683                        
12684                    </div>
12685
12686                    
12687                        <div class="product-option">
12688                            <label for="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103-0" class="visually-hidden">
12689                                Select Size for Moldavian Dragonhead Essential Oil
12690                            </label>
12691                            <select
12692                                id="Option-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103-0"
12693                                class="variant-select"
12694                                name="options[Size]"
12695                                form="product-form-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103"
12696                                data-index="option0"
12697                            ><option
12698                                        value="5ml"
12699                                        selected="selected"
12700                                    >
12701                                        5ml
12702                                    </option><option
12703                                        value="1ml"
12704                                        
12705                                    >
12706                                        1ml
12707                                    </option></select>
12708                        </div>
12709                    
12710                </div><label for="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" class="visually-hidden">
12711                Choose variant for Moldavian Dragonhead Essential Oil
12712            </label>
12713            <select
12714                name="id"
12715                data-productid="14725145461103"
12716                id="ProductSelect-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103"
12717                class="product-variants-select no-js-only"
12718            ><option
12719                        value="52681248309615"
12720                         selected="selected" 
12721                        
12722                    >
12723                        5ml - $39.95 
12724                    </option><option
12725                        value="52681213509999"
12726                        
12727                        
12728                    >
12729                        1ml - $13.95 
12730                    </option></select>
12731
12732            <div class="product-addtocart" id="AddToCartWrapper-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103">
12733                <input type="hidden" name="quantity" value="1">
12734                
12735
12736                <div class="visually-hidden" role="status" id="variant-status-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" aria-live="assertive"></div>
12737
12738                <span id="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103" class="visually-hidden">Adds item to your shopping cart</span>
12739
12740                <button
12741                    class="addtocart-btn add-to-cart"
12742                    type="submit"
12743                    name="add"
12744                    aria-label="Add to Cart - Add Moldavian Dragonhead Essential Oil to cart"
12745                    aria-describedby="cart-action-desc-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103"
12746                    id="AddToCart-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103"
12747                    
12748                >
12749                    <span id="AddToCartText-template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040-14725145461103">Add to Cart <i class="cart-icon" aria-hidden="true"></i></span>
12750                </button>
12751            </div><input type="hidden" name="product-id" value="14725145461103" /><input type="hidden" name="section-id" value="template--27595751620975__484c91a6-5d74-4a29-84b5-f31c4cd78040" /></form><!-- END Variant Selection Form --></div>
12751<script type="application/ld+json">
12752    {
12753      "@context": "http://schema.org/",
12754      "@type": "Product",
12755      "name": "Moldavian Dragonhead Essential Oil",
12756      "url": "https:\/\/www.rockymountainoils.com\/products\/moldavian-dragonhead-essential-oil","image": [
12757          "https:\/\/www.rockymountainoils.com\/cdn\/shop\/files\/Moldavian_Dragonhead_5ml_Neutral_2.webp?v=1771434762\u0026width=1080"
12758        ],
12759      "description": "Moldavian Dragonhead essential oil is a rare and precious oil steam-distilled from the leaves and flowering tops of Dracocephalum moldavica. Similar to Melissa (Lemon Balm), this Bulgarian-sourced oil offers a sweet, lemony aroma that creates an uplifting atmosphere while helping to ease tension and promote emotional well-being.\nThis multipurpose oil supports the body's natural response to stress and helps create a sense of calm. Moldavian Dragonhead has been traditionally valued for its digestive support properties and ability to promote a positive mindset. Its thin consistency blends beautifully with citrus and floral oils for creating personalized aromatherapy experiences.","sku": "MOLDRA-S5",
12760      "brand": {
12761        "@type": "Brand",
12762        "name": "Rocky Mountain Oils"
12763      },
12764      "offers": {
12765          "@type": "AggregateOffer",
12766          "availability": "http://schema.org/InStock",
12767          "priceCurrency": "USD",
12768          "highPrice": 39.95,
12769          "lowPrice": 13.95,
12770          "offerCount": 2,
12771          "offers": [{
12772              "@type" : "Offer","sku": "MOLDRA-S5","gtin12": "053176184999","availability" : "http://schema.org/InStock",
12773              "price" : 39.95,
12774              "priceCurrency" : "USD",
12775              "priceValidUntil": "2026-12-31",
12776              "url" : "https:\/\/www.rockymountainoils.com\/products\/moldavian-dragonhead-essential-oil?variant=52681248309615"
12777            },
12778{
12779              "@type" : "Offer","sku": "MOLDRA-1ML","gtin12": "053176184845","availability" : "http://schema.org/InStock",
12780              "price" : 13.95,
12781              "priceCurrency" : "USD",
12782              "priceValidUntil": "2026-12-31",
12783              "url" : "https:\/\/www.rockymountainoils.com\/products\/moldavian-dragonhead-essential-oil?variant=52681213509999"
12784            }
12785]
12786      }
12787    }
12788    </script>
12788</div>
12789
12790<style>
12791/* Ensure visually-hidden utility exists even if theme lacks it */
12792.visually-hidden {
12793    position: absolute !important;
12794    width: 1px !important;
12795    height: 1px !important;
12796    padding: 0 !important;
12797    margin: -1px !important;
12798    overflow: hidden !important;
12799    clip: rect(0, 0, 0, 0) !important;
12800    white-space: nowrap !important;
12801    border: 0 !important;
12802}
12803
12804/* Ensure the main product image is tappable on iOS */
12805.main-product-image {
12806    cursor: pointer;
12807    -webkit-tap-highlight-color: rgba(0,0,0,0.05);
12808    touch-action: manipulation;
12809}
12810
12811/* ULTIMATE FIX - Override anything that hides select text */
12812.product-variants-select,
12813.product-variants-select.no-js-only,
12814select.product-variants-select,
12815select[id*="ProductSelect-"] {
12816    color: #1a1a1a !important;
12817    opacity: 1 !important;
12818    background-color: #ffffff !important;
12819    -webkit-text-fill-color: #1a1a1a !important;
12820}
12821
12822.product-variants-select option,
12823select[id*="ProductSelect-"] option {
12824    color: #1a1a1a !important;
12825    background-color: #ffffff !important;
12826    -webkit-text-fill-color: #1a1a1a !important;
12827}
12828
12829.product-variants-select option:checked,
12830select[id*="ProductSelect-"] option:checked {
12831    color: #1a1a1a !important;
12832    background-color: #e8f0fe !important;
12833}
12834
12835.product-variants-select option:disabled,
12836select[id*="ProductSelect-"] option:disabled {
12837    color: #6c6c6c !important;
12838    background-color: #f5f5f5 !important;
12839    -webkit-text-fill-color: #6c6c6c !important;
12840    opacity: 1 !important;
12841}
12842
12843.product-variants-select:focus,
12844select[id*="ProductSelect-"]:focus {
12845    color: #1a1a1a !important;
12846    outline: 3px solid #000000ff !important;
12847}
12848</style>
12849                      </div></div>
12850              </div>
12851          </div>
12852</section>
12853
12854</section><section id="shopify-section-template--27595751620975__4d8ca35c-1b82-4b7d-b459-c4dd417fa684" class="shopify-section section"><section class="AsSeenIn sec_pad">
12855  <div class="AsSeenIn_logo_wrapper">
12856     
12857      <div class="sec-heading text-center">
12858          <h3>As Seen In</h3>
12859      </div>
12860     
12861      <div class="owl-carousel carousel-fade owl-theme slider-section" id="logosSlider"><div class="item">
12862             
12863              <img src="//www.rockymountainoils.com/cdn/shop/files/vogue_200x.webp?v=1720725519" width="179" height="47" alt="Vogue">
12864             
12865          </div><div class="item">
12866             
12867              <img src="//www.rockymountainoils.com/cdn/shop/files/women_200x.webp?v=1720725533" width="229" height="47" alt="Women's Health">
12868             
12869          </div><div class="item">
12870             
12871              <img src="//www.rockymountainoils.com/cdn/shop/files/Chicago_200x.webp?v=1720725548" width="303" height="47" alt="Chicago Tribune">
12872             
12873          </div><div class="item">
12874             
12875              <img src="//www.rockymountainoils.com/cdn/shop/files/the-new-york_200x.webp?v=1720725562" width="187" height="44" alt="The New York">
12876             
12877          </div><div class="item">
12878             
12879              <img src="//www.rockymountainoils.com/cdn/shop/files/outside_200x.webp?v=1720725575" width="180" height="47" alt="Outside">
12880             
12881          </div><div class="item">
12882             
12883              <img src="//www.rockymountainoils.com/cdn/shop/files/bustle_200x.webp?v=1720725588" width="132" height="37" alt="Bustle">
12884             
12885          </div><div class="item">
12886             
12887              <img src="//www.rockymountainoils.com/cdn/shop/files/spruce_200x.webp?v=1720725602" width="126" height="61" alt="The Spruce">
12888             
12889          </div></div>
12890  </div>
12891</section>
12892
12893  
12894</section><section id="shopify-section-template--27595751620975__8e29f252-b649-4ab5-b0a5-9ff447a9346c" class="shopify-section section"><section class="mountainOils sec_pad">
12895  <div class="SectionWrapper">
12896    
12897        <div class="sec-heading text-center">
12898            <h3>Why Rocky Mountain Oils</h3>
12899        </div>
12900    
12901    <div class="row"><div class="col-xl-3 col-lg-6">
12902            <div class="oilsWrap">
12903                <img src="//www.rockymountainoils.com/cdn/shop/files/saafe_192x192.webp?v=1720725642" width="199" height="193" alt="SAFE Promise">
12904                <h4>SAFE Promise</h4>
12905                <p>Our S.A.A.F.E Promise is our guarantee to you that <strong><a href="https://www.rockymountainoils.com/collections/essential-oils">our essential oils</a></strong> are what we say they are: 100% pure, natural, and authentic. To verify the purity and quality of our oils, we provide you with the independent lab <strong><a href="/pages/get-gcms-test-results">GC/MS test</a></strong> results for each oil. We are passionate about providing you and your family with safe and effective natural resources to revitalize your health.</p>
12906            </div>
12907        </div>
12907<div class="col-xl-3 col-lg-6">
12908            <div class="oilsWrap">
12909                <img src="//www.rockymountainoils.com/cdn/shop/files/satisfaction_192x192.webp?v=1720725658" width="191" height="192" alt="Satisfaction Guarantee">
12910                <h4>Satisfaction Guarantee</h4>
12911                <p>We are committed to providing you with 100% natural and pure essential oils and natural products that work for your health and wellness needs. Shop risk-free and discover the healing powers of nature with our <strong><a href="/pages/return-policy">90-Day Satisfaction Guarantee</a></strong> and free return.</p>
12912            </div>
12913        </div><div class="col-xl-3 col-lg-6">
12914            <div class="oilsWrap">
12915                <img src="//www.rockymountainoils.com/cdn/shop/files/vision_192x192.webp?v=1720725692" width="216" height="192" alt="Rocky Mountain Vision">
12916                <h4>Rocky Mountain Vision</h4>
12917                <p>From the air you breathe to the oils you use, the Earth provides a whole pharmacy full of natural remedies essential to your wellbeing. Experience the healing powers of nature with essential oils that are <strong><a href="/pages/environmental-sustainability">sustainably</a></strong> sourced and 100% pure and authentic, just as Mother Nature intended.</p>
12918            </div>
12919        </div><div class="col-xl-3 col-lg-6">
12920            <div class="oilsWrap">
12921                <img src="//www.rockymountainoils.com/cdn/shop/files/quality_192x192.webp?v=1720725707" width="190" height="190" alt="Our Commitment To Quality">
12922                <h4>Our Commitment To Quality</h4>
12923                <p>Our commitment to quality starts right from the beginning. All of our oils are sourced from farms around the globe that practice sustainable farming methods to ensure the quality and efficacy of the oil. Each oil is rigorously and independently tested before it reaches your hands.</p>
12924            </div>
12925        </div></div>
12926
12927      <div class="view-all-review">
12928        <a href="/pages/quality" aria-label="Learn more about our quality standards">Learn More</a>
12929      </div>
12930  </div>
12931</section>
12932
12933  
12934</section><div id="shopify-section-template--27595751620975__0e53a1d4-a07b-46d1-b116-e9b8d01fda20" class="shopify-section"><section class="Blogs sec_pad">
12935      
12936        <div class="sec-heading">
12937            <h3>The Blend: A Blog by Rocky Mountain Oils</h3>
12938        </div>
12939      
12940      <div class="owl-carousel carousel-fade owl-theme slider-section" id="BlogsSlider">
12941          
12942          <div class="blog_wrap">
12943              <div class="blog_thumb">
12944                  <a href="/blogs/wellness/the-ultimate-diy-guide-crafting-wellness-rmos-most-popular-recipes" aria-label="The Ultimate DIY Guide: Crafting Wellness with Rocky Mountain Oils’ Most Popular Recipes">
12945                    <img src="//www.rockymountainoils.com/cdn/shop/articles/Lead_gen_ads_eb4e2001-e9cf-40f4-a316-edcfea358215_350x250_crop_center.png?v=1781189576" alt="The Ultimate DIY Guide: Crafting Wellness with Rocky Mountain Oils’ Most Popular Recipes" height="250" width="350"/></a>
12946              </div>
12947              <div class="blog_detail">
12948                  <a href="/blogs/wellness/the-ultimate-diy-guide-crafting-wellness-rmos-most-popular-recipes"  aria-label="The Ultimate DIY Guide: Crafting Wellness with Rocky Mountain Oils’ Most Popular Recipes"><h5>The Ultimate DIY Guide: Crafting Wellness with Rocky Mountain Oils’ Most Popular Recipes</h5></a>
12949                  <p>CLICK HERE TO DOWNLOAD Welcome to the aromatic realm of Rocky Mountain Oils, where nature meets self-care in our curated collection of DIY recipes! Dive deep into a world...</p>
12950                  <a class="read_more" href="/blogs/wellness/the-ultimate-diy-guide-crafting-wellness-rmos-most-popular-recipes" aria-label="Read more about The Ultimate DIY Guide: Crafting Wellness with Rocky Mountain Oils’ Most Popular Recipes">Read more</a>
12951              </div>
12952          </div>
12953          
12954          <div class="blog_wrap">
12955              <div class="blog_thumb">
12956                  <a href="/blogs/essential-oil-basics/frankincense-benefits" aria-label="Frankincense Benefits, Uses, and Myths: Unlocking Nature's Miracle">
12957                    <img src="//www.rockymountainoils.com/cdn/shop/articles/Blog_Post_Images_7_350x250_crop_center.webp?v=1774382466" alt="Frankincense Benefits, Uses, and Myths: Unlocking Nature's Miracle" height="250" width="350"/></a>
12958              </div>
12959              <div class="blog_detail">
12960                  <a href="/blogs/essential-oil-basics/frankincense-benefits"  aria-label="Frankincense Benefits, Uses, and Myths: Unlocking Nature's Miracle"><h5>Frankincense Benefits, Uses, and Myths: Unlocking Nature's Miracle</h5></a>
12961                  <p>Frankincense, often hailed as the "king of oils," has a rich history dating back thous
12961ands of years. Known for its distinctive aroma and profound healing properties, this resin has...</p>
12962                  <a class="read_more" href="/blogs/essential-oil-basics/frankincense-benefits" aria-label="Read more about Frankincense Benefits, Uses, and Myths: Unlocking Nature&#39;s Miracle">Read more</a>
12963              </div>
12964          </div>
12965          
12966          <div class="blog_wrap">
12967              <div class="blog_thumb">
12968                  <a href="/blogs/essential-oil-basics/rosemary-essential-oil-for-hair" aria-label="Rosemary Essential Oil for Hair: Unlock 7 Transformative Tips">
12969                    <img src="//www.rockymountainoils.com/cdn/shop/articles/Blog_Post_Images_1_30b86c3a-f853-4515-a3c7-ad1ad25b0817_350x250_crop_center.webp?v=1776955509" alt="Rosemary Essential Oil for Hair: Unlock 7 Transformative Tips" height="250" width="350"/></a>
12970              </div>
12971              <div class="blog_detail">
12972                  <a href="/blogs/essential-oil-basics/rosemary-essential-oil-for-hair"  aria-label="Rosemary Essential Oil for Hair: Unlock 7 Transformative Tips"><h5>Rosemary Essential Oil for Hair: Unlock 7 Transformative Tips</h5></a>
12973                  <p>Introduction to Rosemary Oil Background and Benefits Rosemary oil is not just a kitchen staple; it's a powerhouse in hair care. This aromatic oil has been cherished for centuries,...</p>
12974                  <a class="read_more" href="/blogs/essential-oil-basics/rosemary-essential-oil-for-hair" aria-label="Read more about Rosemary Essential Oil for Hair: Unlock 7 Transformative Tips">Read more</a>
12975              </div>
12976          </div>
12977          
12978          <div class="blog_wrap">
12979              <div class="blog_thumb">
12980                  <a href="/blogs/essential-oil-basics/myrrh-benefits" aria-label="Myrrh Benefits: 6 Surprising Health Benefits Unveiled">
12981                    <img src="//www.rockymountainoils.com/cdn/shop/articles/8_3ea1372b-e60d-4e0c-83e9-f0c79e78dcdc_350x250_crop_center.png?v=1774380135" alt="Myrrh Benefits: 6 Surprising Health Benefits Unveiled" height="250" width="350"/></a>
12982              </div>
12983              <div class="blog_detail">
12984                  <a href="/blogs/essential-oil-basics/myrrh-benefits"  aria-label="Myrrh Benefits: 6 Surprising Health Benefits Unveiled"><h5>Myrrh Benefits: 6 Surprising Health Benefits Unveiled</h5></a>
12985                  <p>Myrrh has been a symbol of health, spirituality, and protection for thousands of years. Originating from the resin of the Commiphora myrrha tree, myrrh's rich history intertwines with various...</p>
12986                  <a class="read_more" href="/blogs/essential-oil-basics/myrrh-benefits" aria-label="Read more about Myrrh Benefits: 6 Surprising Health Benefits Unveiled">Read more</a>
12987              </div>
12988          </div>
12989          
12990          <div class="blog_wrap">
12991              <div class="blog_thumb">
12992                  <a href="/blogs/essential-oil-basics/what-oil-best-for-massage" aria-label="What Oil Is Best for Massage: Unforgettable Massage Experience">
12993                    <img src="//www.rockymountainoils.com/cdn/shop/articles/Blog_Post_Images_8_350x250_crop_center.webp?v=1776092784" alt="What Oil Is Best for Massage: Unforgettable Massage Experience" height="250" width="350"/></a>
12994              </div>
12995              <div class="blog_detail">
12996                  <a href="/blogs/essential-oil-basics/what-oil-best-for-massage"  aria-label="What Oil Is Best for Massage: Unforgettable Massage Experience"><h5>What Oil Is Best for Massage: Unforgettable Massage Experience</h5></a>
12997                  <p>Massages are not just about the techniques; they're about creating an experience that soothes the mind, body, and soul. One pivotal element that transforms a good massage into a...</p>
12998                  <a class="read_more" href="/blogs/essential-oil-basics/what-oil-best-for-massage" aria-label="Read more about What Oil Is Best for Massage: Unforgettable Massage Experience">Read more</a>
12999              </div>
13000          </div>
13001          
13002          <div class="blog_wrap">
13003              <div class="blog_thumb">
13004                  <a href="/blogs/essential-oil-basics/how-to-make-oregano-oil" aria-label="How to Make Oregano Oil: Discover the Process in 6 Steps">
13005                    <img src="//www.rockymountainoils.com/cdn/shop/articles/Blog_Post_Images_12_bb2a5785-7e85-4580-a194-6c408264b3d5_350x250_crop_center.webp?v=1776967309" alt="How to Make Oregano Oil: Discover the Process in 6 Steps" height="250" width="350"/></a>
13006              </div>
13007              <div class="blog_detail">
13008                  <a href="/blogs/essential-oil-basics/how-to-make-oregano-oil"  aria-label="How to Make Oregano Oil: Discover the Process in 6 Steps"><h5>How to Make Oregano Oil: Discover the Process in 6 Steps</h5></a>
13009                  <p>Oregano oil is a powerhouse of wellness, revered for its antimicrobial and anti-inflammatory properties. Originating from the hills of the Mediterranean, this herbal oil has been a staple in...</p>
13010                  <a class="read_more" href="/blogs/essential-oil-basics/how-to-make-oregano-oil" aria-label="Read more about How to Make Oregano Oil: Discover the Process in 6 Steps">Read more</a>
13011              </div>
13012          </div></div>
13013</section>
13014
13015
13016 
13017</div><section id="shopify-section-template--27595751620975__1716229956fa6f0f11" class="shopify-section section"><div class="page-width"><div id="shopify-block-AbE0zaUJkelRDYkFQK__yotpo_product_reviews_ugc_reviews_carousel_ai79aY" class="shopify-block shopify-app-block">
13018
13019<div
13020    class="yotpo-widget-instance"
13021    data-yotpo-instance-id="614364"
13022    data-yotpo-product-id="">
13023</div>
13024
13025
13026
13027</div>
13028</div>
13029
13030
13031</section>
13032      </main>
13033
13034      <div id="shopify-section-footer" class="shopify-section"><footer class="site-footer"> 
13035  <div class="footer-widgets-wrap sec_pad">
13036        <div class="footer-widget footer-widget-logo">
13037            <div class="footer-logo"><a href="https://www.rockymountainoils.com">
13038                    <img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/rmo-logo.svg?v=119252189530219791611785434280" width="" class="img-fluid" width="120" height="44" alt="Rocky Mountain Oils"/>
13039                  </a></div>
13040            <div class="footer-contact-detail">
13041                <p>Rocky Mountain Oils provides 100% pure essential oils and essential oil products for home, health and beauty so that you can confidently care for yourself.</p>
13042                <p>Customer service hours: M-F 7:00am-4:00pm MST</p>
13043                <div class="flex-inline">
13044                    <p>
13044Send us an email:&nbsp;</p>
13045                    <a href="mailto:[email protected]">[email protected]</a>
13046                </div>
13047                <div class="flex-inline">
13048                    <p>Call us:&nbsp;</p>
13049                    <a href="tel:+18664938159">1 (866) 493-8159</a>
13050                </div>
13051            </div>
13052        </div>
13053        <div class="footer-widget footer-our-promise">
13054            <div class="footer-widget-menu">
13055                <h3>Our Promise To You</h3>
13056                <div class="p-images">
13057                  <a href="/pages/quality"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/guarentee.svg?v=94899447874009353951785434197" alt="Guarentee S.A.A.F.E" width="110" height="110" /></a>
13058                  <a href="/pages/return-policy"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/90-day.svg?v=66437266506578418101785434120" alt="90 Day Risk Free Guarentee" width="110" height="115" /></a>
13059                </div>
13060            </div>
13061        </div><div class="footer-widget footer-widget-second">
13062            <div class="footer-RMO-menu footer-widget-menu">
13063                <h3>RMO</h3>
13064                <ul class="footer-menu"><li><a href="/pages/rewards"  >Club Oil'ty Rewards</a></li><li><a href="https://www.rockymountainoils.com/products/membership"  >Oil'ty Plus Membership</a></li><li><a href="/pages/rocky-mountain-impact-partners"  >Rocky Mountain Impact Partners</a></li><li><a href="/pages/wholesale"  >Wholesale Program</a></li><li><a href="/pages/subscribe-save"  >Subscribe & Save</a></li><li><a href="/pages/get-gcms-test-results"  >Your GC/MS Lookup</a></li></ul>
13065            </div>
13066        </div><div class="footer-widget footer-widget-third">
13067            <div class="footer-RMO-menu footer-widget-menu">
13068                <h3>Legal</h3>
13069                <ul class="footer-menu"><li><a href="/pages/accessibility-statement"  >Accessibility Statement</a></li><li><a href="/pages/shipping-policy"  >Shipping Policy</a></li><li><a href="/pages/return-policy"  >Return Policy</a></li><li><a href="/pages/privacy-policy"  >Privacy Policy</a></li><li><a href="/pages/oilty-tos"  >Terms & conditions</a></li><li><a href="/pages/terms-of-service"  >Terms of Service</a></li></ul>
13070            </div>
13071        </div><div class="footer-widget footer-widget-fourth">
13072            <div class="footer-RMO-menu footer-widget-menu">
13073                <p style="font-size: 18px">About</p>
13074                <ul class="footer-menu"><li><a href="/pages/our-story"  >Our Story</a></li><li><a href="/pages/environmental-sustainability"  >Sustainability</a></li><li><a href="/pages/we-promise"  >We Promise</a></li></ul>
13075            </div>
13076        </div><div class="footer-widget footer-widget-last">
13077            <p style="font-size: 18px">Sign up for our newsletter</p>
13078            <div class="newsletter-subscription">
13079              <div style="overflow: hidden;">
13080                  <iframe src="https://rockymountainoils.attn.tv/p/Wdu/newsletter-signup" style="min-height: 340px;" width="380" height="340" title="Newsletter Signup"></iframe>
13081              </div>
13082            </div>
13083        </div></div>
13084    <div class="desclimer sec_pad">
13085        <div class="footer-widgets-wrap">
13086            <div class="copyright">
13087                <p>© 2026. Rocky Mountain Oils, LLC All Rights Reserved</p>
13088            </div>
13089            <div class="desclimer-contect">
13090                <p>The statements contained herein have not been evaluated by the Food and Drug Administration. Neither Rocky Mountain Oils nor its products are intended for the purpose of diagnosing, treating, curing, or preventing any disease. If you are pregnant, nursing, taking medication, or have a medical condition, consult your physician before using these products.</p>
13091            </div><div class="social-icons">
13092                <ul class="social-icons-list"><li><a href="https://facebook.com/RockyMountainOils/" target="_blank" rel="noopener noreferrer" aria-label="Facebook (opens in new window)"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/facebook.svg?v=21693137240248599311785434188" alt="Facebook" width="22" height="24"/></a></li><li><a href="https://pinterest.com/rmoessentialoil/" target="_blank" rel="noopener noreferrer" aria-label="Pinteres (opens in new window)"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/pinterest.svg?v=114049474308600356991785434246" alt="Pinterest" width="22" height="24"/></a></li><li><a href="https://instagram.com/rockymountainoils/" target="_blank" rel="noopener noreferrer" aria-label="Instagram (opens in new window)"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/instagram.svg?v=72458598320040896551785434205" alt="Instagram" width="22" height="24"/></a></li><li><a href="https://www.youtube.com/channel/UChhqiDDsyWcABEbZ0_Pk3og" target="_blank" rel="noopener noreferrer" aria-label="YouTube (opens in new window)"><img src="//www.rockymountainoils.com/cdn/shop/t/383/assets/youtube.svg?v=142282516816672010331785434334" alt="Youtube" width="22" height="24"/></a></li></ul>
13093            </div></div>
13094    </div>
13095 </footer>    
13096
13097<style> #shopify-section-footer .footer-contact-detail a {font-weight: bold;} </style></div>
13098      <div class="overlay"></div>
13099
13100      
13100<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous" defer></script>
vendor: 1 bytes, line 13100
13100
13101<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/owl.carousel.min.js?v=131092467645937852031785434232" defer></script>
vendor: 1 bytes, line 13101
13101
13102<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/isotope.pkgd.min.js?v=181507024733179475121785434206" defer></script>
vendor: 1 bytes, line 13102
13102
13103<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/slick.min.js?v=180526013488596283431785434294" defer></script>
vendor: 1 bytes, line 13103
13103
13104<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/shopify-money.js?v=82255594563314818281785434292" defer></script>
vendor: 1 bytes, line 13104
13104
13105<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/script.js?v=28020244124196500251785944811" defer></script>
vendor: 1 bytes, line 13105
13105
13106<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/cart-sidebar.js?v=170066356698547187711790969353?v=1791062567" defer></script>
13106
13107
13108  
13108<script>
13109      window.shopUrl = 'https://www.rockymountainoils.com';
13110      window.routes = {
13111        cart_add_url: '/cart/add',
13112        cart_change_url: '/cart/change',
13113        cart_update_url: '/cart/update',
13114        cart_url: '/cart'
13115      };
13116
13117      window.cartStrings = {
13118        error: `There was an error while updating your cart. Please try again.`,
13119        quantityError: `You can only add [quantity] of this item to your cart.`
13120      }
13121
13122      window.variantStrings = {
13123        addToCart: `Add to cart`,
13124        soldOut: `Sold out`,
13125        unavailable: `Unavailable`,
13126      }
13127
13128      window.accessibilityStrings = {
13129        imageAvailable: `Image [index] is now available in gallery view`,
13130        shareSuccess: `Link copied to clipboard`,
13131        pauseSlideshow: `Pause slideshow`,
13132        playSlideshow: `Play slideshow`,
13133      }
13134
13135
13136      yearly_free_status = 'false',
13137      yearly_free_product = '48170965172546'
13138    </script>
13138
13139      
13140      
13141      
13141<script async src="https://cdn-widgetsrepository.yotpo.com/v1/loader/1mzqlpuEeK12ZA7oqhI7dA"></script>
13141
13142      
13143      
13143<script>
13144        var check_edd_data_from_liquid = '1';
13145      </script>
13145
13146      
13146<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_specific_product_msg.js?v=136012229591074505521785434403" type="text/javascript"></script>
vendor: 2 bytes, line 13146
13146
13147<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_collection_msg.js?v=130879527554976694821785434403" type="text/javascript"></script>
vendor: 2 bytes, line 13147
13147
13148<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_product_tag_msg.js?v=8380619751686092641785434403" type="text/javascript"></script>
vendor: 2 bytes, line 13148
13148
13149<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_product_vendor_msg.js?v=52388043027845322851785434402" type="text/javascript"></script>
vendor: 2 bytes, line 13149
13149
13150<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_all_product_msg.js?v=108840368777819333221785434403" type="text/javascript"></script>
vendor: 2 bytes, line 13150
13150
13151<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_exclude_product.js?v=50353361297173646151785434403" type="text/javascript"></script>
vendor: 2 bytes, line 13151
13151
13152<script src="//www.rockymountainoils.com/cdn/shop/t/383/assets/edd_general_settings.js?v=33170465555808707961785434403" type="text/javascript"></script>
13152
13153
13154  ��
13155
13156<script>
13157
13158  var edd_is_homepage = `1`;
13159
13160  if(edd_is_homepage == '1' ){
13161   
13162    
13163    
13164  }else{
13165
13166    var edd_product_id = ``;
13167    var edd_product_title = ``;
13168    var edd_product_handle = ``;
13169    var edd_product_type = ``;
13170    var edd_product_vendor = ``;
13171    var edd_check_collection_id = ``;
13172    var edd_product_qty = ``;
13173    var edd_product_weight = ``;
13174    var product_avaiable = ``;
13175    var edd_product_tag = new Array();
13176    var edd_collection_id = new Array();
13177            
13178      for (i = 0; i < document.getElementsByClassName("edd_product_tag").length; i++) {
13179          edd_product_tag.push(document.querySelector(".product_tag_"+i).innerText);
13180      }
13181
13182      
13183      for (i = 0; i < document.getElementsByClassName("edd_product_collection").length; i++) {
13184          edd_collection_id.push(document.querySelector(".product_collection_"+i).innerText);
13185      }
13186      
13187  }
13188  
13189  var edd_zipcode_enable = '0';
13190  var edd_zipcode_list = 'not_set';
13191  
13192  var product_have_qty = 0;
13193  var edd_message = 'not_set';
13194  var edd_preview_design = 'not_set';
13195  var set_specific_msg = 0;
13196  var is_exclude_product = '0';
13197  var edd_data;
13198  var edd_store_country,edd_store_country_code ,edd_user_country ,edd_user_country_code,edd_app_plan,edd_country_name,edd_country_code,edd_store_id;
13199  //var edd_shop = delivery_shop = Shopify.shop;
13200  if(typeof delivery_shop !== 'undefined'){
13201        edd_shop = delivery_shop;          
13202      }else{           
13203        edd_shop = Shopify.shop;
13204      } 
13205
13206  var is_set_msg_for_product = '0';
13207  var is_set_msg_for_product_type = '0';
13208  var is_set_msg_for_product_tag = '0';
13209  var is_set_msg_for_product_vendor = '0';
13210  var is_set_msg_for_all_product = '0';
13211  var is_set_msg_for_collection = '0';
13212  
13213function setEDDCookie(cname, cvalue){
13214      const d = new Date();
13215      d.setTime(d.getTime() + (24 * 60 * 60 * 1000));
13216      let expires = "expires="+d.toUTCString();
13217      document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
13218}
13219function getEDDCookie(cname){
13220//console.log('***** get EDD cookie')
13221      let name = cname + "=";
13222      let decodedCookie = decodeURIComponent(document.cookie);
13223      let ca = decodedCookie.split(';');
13224      for(let i = 0; i <ca.length; i++) {
13225        let c = ca[i];
13226        while (c.charAt(0) == ' ') {
13227          c = c.substring(1);
13228        }
13229        if (c.indexOf(name) == 0) {
13230          return c.substring(name.length, c.length);
13231        }
13232      }
13233      return "";
13234    }
13235  
13236function checkEDDCookie($){
13237        var check_edd_data = getEDDCookie("edd_data");
13238 
13239        if (check_edd_data != ""){
13240          check_edd_data = JSON.parse(check_edd_data);
13241          //console.log('=> Cokkie set ')
13242          setEDDCountry(check_edd_data)
13243  
13244        }else {
13245          //useedd_datarname = prompt("Please enter your name:", "");
13246            checkUserCountry($);
13247            //console.log('=> cookie not set');  
13248        }
13249}
13250  
13251function setEDDCountry(check_edd_data){
13252 edd_store_country_name = check_edd_data.store_country_name;
13253 edd_store_country_code = check_edd_data.store_country_code;
13254 edd_user_country_name = check_edd_data.user_country_name;
13255 edd_user_country_code = check_edd_data.user_country_code;
13256 //edd_app_plan = edd_plan_info.plan;  /* 06-10-2022 */
13257 edd_app_plan = check_edd_data.plan;
13258 edd_store_id = check_edd_data.store_id;
13259 edd_trial_store = check_edd_data.trial_store;
13260 edd_allowed_store = check_edd_data.allowed_store;
13261 // console.log('edd_store_country '+edd_store_country_name)
13262 // console.log('edd_store_country_code '+edd_store_country_code)
13263 // console.log('edd_user_country '+edd_user_country_name)
13264 // console.log('edd_user_country_code '+edd_user_country_code)
13265 // console.log('edd_app_plan '+edd_app_plan)
13266 //  console.log('edd_store_id '+edd_store_id)
13267  
13268  if(edd_store_id > 2614 || edd_shop == 'purrfetto.myshopify.com' ||  edd_shop == 'estimated-delivery-date-time.myshopify.com'){
13269     <!-- check product quantity  -->
13270    console.log('Qty => based on product qty')
13271    if(edd_product_qty > 0){product_have_qty = 1;}
13272  }else{
13273     <!-- check product avaiable  -->
13274       console.log('Qty => based on product avaiable')
13275    if(product_avaiable == 'true'){product_have_qty = 1;}
13276  }
13277
13278  getSpecificEDDMsg();
13279
13280  if(set_specific_msg == 1){
13281      edd_country_name = edd_user_country_name;
13282      edd_country_code = edd_user_country_code;
13283    }else{
13284      edd_country_name = edd_store_country_name;
13285      edd_country_code = edd_store_country_code;
13286    }
13287  
13288  //console.log('product_avaiable '+product_avaiable+' product_have_qty '+product_have_qty)
13289  
13290  
13291}
13292  
13293/* changelog */
13294  function checkUserCountry($){
13295    //console.log('=> get user country ajax ')
13296   $.ajax({
13297           url: "//estimated-delivery-days.setubridgeapps.com/estimated-delivery-days/app/src/public/checkEDDPayment",
13298           data : {shop:edd_shop},
13299           type:"POST",
13300           success: function(response){ 
13301             edd_data = response;
13302             check_edd_data = JSON.parse(edd_data);
13303             
13304             //console.log(typeof(edd_data))
13305             
13306             //console.log(edd_data)
13307             setEDDCountry(check_edd_data);
13308
13309             checkEddDataInterval = setInterval(function(){
13310                var check_edd_data = getEDDCookie("edd_data");
13311 
13312                if (check_edd_data == ""){
13313                 setEDDCookie("edd_data", edd_data);
13314                 clearInterval(checkEddDataInterval);
13315                }
13316
13317             },700);
13318             
13319             
13320             
13321             
13322           }
13323         })
13324  }
13325/* changelog */
13326
13327
13328var loadScriptInLiquidData = function (url, callback) {
13329    var script = document.createElement('script');
13330    script.type = 'text/javascript';
13331    if (script.readyState) {
13332      script.onreadystatechange = function () {
13333        if (script.readyState == 'loaded' || script.readyState == 'complete') {
13334          script.onreadystatechange = null;
13335          callback();
13336        }
13337      };
13338    } else {
13339      script.onload = function () {
13340        callback();
13341      };
13342    }
13343    script.src = url;
13344    document.getElementsByTagName('head') [0].appendChild(script);
13345  };
13346
13347  /* check Jquery loaded in theme or not */
13348  if((typeof jQuery === 'undefined') || (parseFloat(jQuery.fn.jquery) < 1.7)){
13349    //console.log(' ***** add jquery ******')
13350    loadScriptInLiquidData('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function () {
13351      jQuery191 = jQuery.noConflict(true);
13352      checkEDDCookie(jQuery191);
13353    });
13354
13355  }else{
13356    //console.log(' ***** jquery added ******')
13357    checkEDDCookie(jQuery);
13358  }
13359
13360  function getSpecificEDDMsg(){
13361  //check exclude product
13362  if(typeof edd_exclude_product != 'undefined' && edd_exclude_product != 'not_set' && edd_exclude_product.filter(e => e.check_rule_for  == edd_product_id).length > 0){
13363    is_exclude_product = '1';
13364    console.log('=> exclude product')
13365  }
13366  
13367  else {
13368    // check edd message for product 
13369    if(typeof edd_specific_product_msg != 'undefined' && edd_specific_product_msg != 'not_set' && edd_specific_product_msg.filter(e => e.check_rule_for  == edd_product_id).length > 0){
13370      console.log('Specific Mesage type => Product ')
13371       setEddMessageFromLiquid(edd_specific_product_msg,edd_product_id,'product');
13372      //console.log('is_set_msg_for_product '+is_set_msg_for_product)
13373    }
13374  
13375     // check edd message for collection 
13376    if(set_specific_msg == 0 && typeof edd_collection_msg != 'undefined' && edd_collection_msg != 'not_set' ){
13377      console.log('Specific Mesage type => Collection ')
13378       //setEddMessageFromLiquid(edd_collection_msg,edd_collection_id)
13379       for(i=0; i<edd_collection_id.length; i++){
13380         setEddMessageFromLiquid(edd_collection_msg,edd_collection_id[i],'collection');
13381         if(is_set_msg_for_collection == '1'){
13382          break;
13383        }
13384        }
13385    }
13386   
13387     // check edd message for product vendor
13388    if(set_specific_msg == 0 && typeof edd_product_vendor_msg != 'undefined' && edd_product_vendor_msg != 'not_set'  && edd_product_vendor_msg.filter(e => e.check_rule_for  == edd_product_vendor).length > 0){
13389      console.log('Specific Mesage type => Product Vendor')
13390      setEddMessageFromLiquid(edd_product_vendor_msg,edd_product_vendor,'vendor')
13391    }
13392       
13393     // check edd message for product tag
13394     if(set_specific_msg == 0 && typeof edd_product_tag_msg != 'undefined' && edd_product_tag_msg != 'not_set'){
13395        console.log('Specific Mesage type => Product Tag')
13396       for(i=0; i<edd_product_tag.length; i++){
13397         setEddMessageFromLiquid(edd_product_tag_msg,edd_product_tag[i],'tag');
13398        if(is_set_msg_for_product_tag == '1'){
13399          break;
13400        }
13401       }        
13402      }
13403
13404    // check edd message for All product 
13405    if(set_specific_msg == 0 && typeof edd_all_product_msg != 'undefined' && edd_all_product_msg != 'not_set'  && edd_all_product_msg.filter(e => e.check_rule_for  == 'all_product').length > 0){
13406        console.log('Specific Mesage type => All Product')
13407        setEddMessageFromLiquid(edd_all_product_msg,'all_product','all_product')
13408      }    
13409    }  
13410  }
13411
13412  function setEddMessageFromLiquid(edd_msg_list,check_with,edd_rule_type){
13413    
13414    check_edd__in_out_stock_spe_c = edd_msg_list.filter(e => e.check_rule_for  == check_with && e.is_instock == product_have_qty && e.country_code == edd_user_country_code)  
13415    check_edd_both_edd_spe_c = edd_msg_list.filter(e => e.check_rule_for  == check_with && e.is_instock == 2 && e.country_code == edd_user_country_code ) 
13416    check_edd__in_out_stock_all_c = edd_msg_list.filter(e => e.check_rule_for  == check_with && e.is_instock == product_have_qty && e.country_code == 'all_country')  
13417    check_edd_both_edd_all_c = edd_msg_list.filter(e => e.check_rule_for  == check_with && e.is_instock == 2 && e.country_code == 'all_country' ) 
13418
13419    if(check_edd__in_out_stock_spe_c.length > 0){
13420        if(typeof(check_edd__in_out_stock_spe_c[0].zipcode_enable) != "undefined"){
13421         if(check_edd__in_out_stock_spe_c[0].zipcode_enable == "1"){
13422             edd_zipcode_enable = check_edd__in_out_stock_spe_c[0].zipcode_enable;
13423             edd_zipcode_list = check_edd__in_out_stock_spe_c[0].zipcode_list;
13424         }
13425      }
13426      edd_preview_design = check_edd__in_out_stock_spe_c[0].preview_design;
13427      edd_message = check_edd__in_out_stock_spe_c[0].message;
13428      set_specific_msg = 1;
13429      checkSpecificMsgFor(edd_rule_type);
13430      //console.log('message => '+edd_message)
13431      //console.log('edd_preview_design => '+edd_preview_design)
13432    }
13433    else if(check_edd_both_edd_spe_c.length > 0){
13434      if(typeof(check_edd_both_edd_spe_c[0].zipcode_enable) != "undefined"){
13435         if(check_edd_both_edd_spe_c[0].zipcode_enable == "1"){
13436            // console.log("(check_edd_both_edd_spe_c[0].zipcode_enable",check_edd_both_edd_spe_c[0].zipcode_enable)
13437           
13438             edd_zipcode_enable = check_edd_both_edd_spe_c[0].zipcode_enable;
13439             edd_zipcode_list = check_edd_both_edd_spe_c[0].zipcode_list;
13440           
13441            // $(".deliverydate.sb_delivery").before(zipcode_widget);
13442            // $("body").append(zipcode_widget_css);
13443            // $(".deliverydate.sb_delivery").hide();
13444         }
13445      }
13446
13447      edd_preview_design = check_edd_both_edd_spe_c[0].preview_design;
13448      edd_message = check_edd_both_edd_spe_c[0].message;
13449      set_specific_msg = 1;
13450      checkSpecificMsgFor(edd_rule_type);
13451      //console.log('message => '+edd_message)
13452      //console.log('edd_preview_design => '+edd_preview_design)
13453    }
13454    else if(check_edd__in_out_stock_all_c.length > 0){
13455        if(typeof(check_edd__in_out_stock_all_c[0].zipcode_enable) != "undefined"){
13456         if(check_edd__in_out_stock_all_c[0].zipcode_enable == "1"){
13457             edd_zipcode_enable = check_edd__in_out_stock_all_c[0].zipcode_enable;
13458             edd_zipcode_list = check_edd__in_out_stock_all_c[0].zipcode_list;
13459         }
13460      }
13461      edd_preview_design = check_edd__in_out_stock_all_c[0].preview_design;
13462      edd_message = check_edd__in_out_stock_all_c[0].message;
13463      set_specific_msg = 1;
13464      checkSpecificMsgFor(edd_rule_type);
13465      //console.log('message => '+edd_message)
13466      //console.log('edd_preview_design => '+edd_preview_design)
13467    }
13468    else if(check_edd_both_edd_all_c.length > 0){
13469       if(typeof(check_edd_both_edd_all_c[0].zipcode_enable) != "undefined"){
13470         if(check_edd_both_edd_all_c[0].zipcode_enable == "1"){
13471             edd_zipcode_enable = check_edd_both_edd_all_c[0].zipcode_enable;
13472             edd_zipcode_list = check_edd_both_edd_all_c[0].zipcode_list;
13473         }
13474      }
13475      edd_preview_design = check_edd_both_edd_all_c[0].preview_design;
13476      edd_message = check_edd_both_edd_all_c[0].message;
13477      set_specific_msg = 1;
13478      checkSpecificMsgFor(edd_rule_type);
13479      //console.log('message => '+edd_message)
13480      //console.log('edd_preview_design => '+edd_preview_design)
13481    }
13482
13483    
13484  
13485  }
13486
13487   function checkSpecificMsgFor(edd_rule_type){
13488    if(edd_rule_type == 'product'){
13489      is_set_msg_for_product = '1';
13490    }
13491    if(edd_rule_type == 'collection'){
13492      is_set_msg_for_collection = '1';
13493    }
13494    if(edd_rule_type == 'tag'){
13495      is_set_msg_for_product_tag = '1';
13496    }
13497    if(edd_rule_type == 'vendor'){
13498      is_set_msg_for_product_vendor = '1';
13499    }
13500    if(edd_rule_type == 'all_product'){
13501      is_set_msg_for_all_product = '1';
13502    }
13503  }
13504</script>
13504
13505
13506      
13506<script 
13507  src="https://widgets.leadconnectorhq.com/loader.js"  
13508  data-resources-url="https://widgets.leadconnectorhq.com/chat-widget/loader.js" 
13509 data-widget-id="691c75f7540320b6d60c3355"   > 
13510</script>
13510
13511
13512<script>
13513  (function () {
13514    function apply(img) {
13515      if (img.getAttribute('width') && img.getAttribute('height')) return;
13516      if (img.naturalWidth && img.naturalHeight) {
13517        img.setAttribute('width', img.naturalWidth);
13518        img.setAttribute('height', img.naturalHeight);
13519      }
13520    }
13521    function hook(img) {
13522      if (img.complete) {
13523        apply(img);
13524      } else {
13525        img.addEventListener('load', function () { apply(this); }, { once: true });
13526      }
13527    }
13528    function scan(root) {
13529      var imgs = (root || document).querySelectorAll('img:not([width]), img:not([height])');
13530      for (var i = 0; i < imgs.length; i++) hook(imgs[i]);
13531    }
13532    function run() {
13533      scan(document);
13534      new MutationObserver(function (muts) {
13535        for (var i = 0; i < muts.length; i++) {
13536          var added = muts[i].addedNodes;
13537          for (var j = 0; j < added.length; j++) {
13538            var n = added[j];
13539            if (n.nodeType !== 1) continue;
13540            if (n.tagName === 'IMG') hook(n);
13541            else if (n.querySelectorAll) scan(n);
13542          }
13543        }
13544      }).observe(document.body, { childList: true, subtree: true });
13545    }
13546    if (document.readyState === 'loading') {
13547      document.addEventListener('DOMContentLoaded', run);
13548    } else {
13549      run();
13550    }
13551  })();
13552</script>
13552
13553    </div>
13554  <div id="shopify-block-AM05QbkZpaG5MWU93V__18228966181090706294" class="shopify-block shopify-app-block">
13555
13556
13557  
13557<script>
13558    window.lbupsellVersion = 2;
13559  </script>
13559
13560
13561
13562
13563<script>
13564
13565  
13566    window.lbupsellToken = "52974d4670321ba2db8912023a9c10ac"
13567  
13568  
13569</script>
13569
13570
13571<script>
13572
13573  window.lbInitMode = "immediate";
13574  
13575  window.lbComponentSrc = "https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-upsell-components.esm.js";</script>
13575
13576
13577<script type="text/javascript" src="https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-utils.js" defer="defer"></script>
13577
13578
13579</div><div id="shopify-block-AZkhhZkNBUDVJSzlWN__12342438634123318931" class="shopify-block shopify-app-block">
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589<xb-wishlist-modal></xb-wishlist-modal>
13590
13591
13592<xb-wishlist-float></xb-wishlist-float>
13593
13594
13595<xb-wishlist-notification-popup></xb-wishlist-notification-popup>
13596
13597
13598<xb-wishlist-header-auto></xb-wishlist-header-auto>
13599
13600
13601
13602<xb-wishlist></xb-wishlist>
13603
13604<script>
13605  {
13606    const XBWishlistConfig = {
13607      url: {"updateTime":1770742429271,"url":"https://cdn.xobuilder.app/rocky-mountain-oils/wishlist/settings.json?t=1770742429271"},
13608      currency: '${{amount}}',
13609      language: 'en',
13610      customerId: '',
13611      myShopify: 'rocky-mountain-oils.myshopify.com',
13612      productId: 'null',
13613      variantId: 'null',
13614      collectionSelector: '',
13615      cartItemSelector: '',
13616      primaryLocale: 'en',
13617      currentPage: 'index',
13618      lastActionTimes: {"6a79f26bccb8fbf63a29f2f5":1786376811931,"6a79fa7ec6b3b9433ca45237":1786378878476,"6a5ce0fa340159363376dc8e":1786381500802,"6a7a3e67c6b3b9433cac88d0":1786678315099,"6a7a4066c6b3b9433cacc377":1786396864728,"6a7a40e8c6b3b9433cacd062":1786396904552,"6a7a4fdaccb8fbf63a35166f":1786400730744,"6a7a5501c6b3b9433caec163":1786402049769,"6a7a55186f2befb4af14dfab":1786402151710,"6a7a550dc6b3b9433caec29a":1786403518155,"6a7a597d6f2befb4af156afe":1786403515891,"6a7a598778ed8db313341b53":1786403207931,"6a7a7acec6b3b9433cb28fdc":1786411726590,"6a7a7cb6ccb8fbf63a3f10c3":1786412261059,"6a7a8b8378ed8db3133907b2":1786416140483,"6a7a8dadc6b3b9433cb48562":1786416558917,"6a7a9de978ed8db3133b24a0":1786420713561,"6a7aa615c6b3b9433cb75908":1786422805980,"6a7b071a78ed8db31347fdee":1786447642778,"6a7b216578ed8db3134c176e":1788281671298,"6a7b25336f2befb4af2d95d4":1786455347700,"6a5d20cbdcd393ae84f07aee":1786464735810,"69e52eb7ebc922b1134b7c7f":1786458832767,"6a7b33246f2befb4af2f91d7":1786458935155,"6a7b3e6a6f2befb4af3187e9":1786462106844,"6a7b441accb8fbf63a59b77a":1786463392964,"6a5e64333401593633b239b5":1786464126705,"6a7b47ca6f2befb4af335fd2":1786464202165,"6a7b48ebccb8fbf63a5a5d68":1786464491320,"6a7b4d0cccb8fbf63a5b1b8f":1786465548414,"6a7b5ad4c6b3b9433cd07938":1786469076219,"6970bab216ffc49f8a4dcd72":1786469440136,"6a7b5c376f2befb4af3bc427":1786469945506,"6a7b75716f2befb4af3f3391":1786475889362,"6a7b79baccb8fbf63a614fdc":1786476986626,"6a7b87dcccb8fbf63a62e190":1786480628768,"6a7b8b2378ed8db3135bbfae":1786481861547,"6a7b91526f2befb4af4271bb":1786483026922,"6a7b9228ccb8fbf63a643670":1786483240626,"6a7b94d66f2befb4af42cabd":1786483933866,"6a7ba11eccb8fbf63a65e23f":1786487070631,"6a7ba883c6b3b9433ce00a58":1786488963649,"6a7bb579ccb8fbf63a684477":1786492442931,"6a7bc1e4ccb8fbf63a69a829":1786496385052,"6a7bd1c9c6b3b9433ce4be99":1786499529437,"6a7bdb196f2befb4af4ac80a":1786501913353,"6a7befc6ccb8fbf63a6eabb5":1786507206873,"6a7bf0d8c6b3b9433ce80065":1786507480128,"6a7bf467ccb8fbf63a6f3bba":1786508391410,"6a7c1313c6b3b9433ceb9854":1786516244960,"6a79f0a8c6b3b9433ca2fc14":1786533447528,"6a7c5c32ccb8fbf63a828260":1786534962110,"6a7c65f76f2befb4af5ca847":1786537463151,"6a7c6ed26f2befb4af5dcfa3":1786539730398,"69d9f72f712f8278d6a25aa1":1786556743904,"6a7ceba56f2befb4af6b79cb":1786925844824,"6a7cedfaccb8fbf63a92c657":1786572282702,"6a7d17906f2befb4af7a9aee":1786582928363,"6a7d1a716f2befb4af7adf62":1786583677781,"6a7d1d98c6b3b9433c10b2bc":1786584472145,"6a7d366fc6b3b9433c130bef":1786590831568,"6a7db150c6b3b9433c1fbaba":1786622288117,"6a7dde1dc6b3b9433c2500e9":1786739429033,"6a7df0b478ed8db313a6a01b":1786638516987,"6a7e30a878ed8db313ae670a":1786654888818,"6a7e34ed78ed8db313aed4d7":1786655981122,"6a7e50526f2befb4af9ce1fc":1786662994102,"6a7e536a78ed8db313b171b0":1786663786165,"6a7e5dc578ed8db313b2409d":1786668014941,"6a7e67f56f2befb4af9ee539":1786669106526,"6a7e770fc6b3b9433c351551":1786672911878,"6a7ef3e178ed8db313c1a9fd":1786704886871,"6a7f0ed3ccb8fbf63ad143f6":1786711771175,"6a7f148b6f2befb4afb286f2":1786713227093,"6a6ebc4c7ed61156b13edbde":1786713472755,"6a7f3da66f2befb4afb7d05f":1786723750100,"6a7f3e056f2befb4afb7d9a1":1786723845086,"6a7f3f26c6b3b9433c4b35c2":1786724134215,"6a7f5768b6ddbd49c8e36b05":1786730344131,"6a7f5c18bb838fed3d15a84a":1786731544433,"6a7f75dfbb838fed3d1888dc":1786738143006,"69b9e668ceefc8fcce192d27":1788116665875,"6a7f8d09b6ddbd49c8e99473":1786744073216,"6a7fa51cbb838fed3d1db406":1786750236274,"6a7fb2b797756202e418d7ce":1786753719683,"6a7fb46cb6ddbd49c8edd92e":1786754156054,"6970ba4f16ffc49f8a4dadcd":1786764638630,"6a80633097756202e42d1a63":1786798896345,"6a07f9109264b693554c709a":1786799625032,"6a806b0bb6ddbd49c801dbb7":1786800907932,"6a80825297756202e4316cb8":1786806866434,"6a809388bb838fed3d3fd285":1786811272736,"6a8095c3bb838fed3d4035ed":1786811911672,"69cc58f3d9f97351e0ef3e41":1786832420589,"6a80e62797756202e445f5a3":1786832423595,"6a8158f6b6ddbd49c82500c0":1786861814453,"6a815c42bb838fed3d5c35c4":1786862658918,"6a81c15bb6ddbd49c834e295":1787500028761,"6a2ead8afb72b28e72657ed8":1786890489458,"6a81eff7b6ddbd49c83c005b":1786900471143,"6a81f62538b5add0267a7292":1788516587747,"6a82044bbb838fed3d7631fc":1786905684023,"6a82336fb6ddbd49c84d3678":1786917743334,"6a823b37bb838fed3d7ef0cb":1786919766428,"6a82484d97756202e47a713d":1786923092123,"6a824a09b6ddbd49c855ff93":1786923529016,"6a824c19b6ddbd49c8564170":1786924057640,"6970b1d916ffc49f8a4b9e99":1786925916477,"6a82572cbb838fed3d8247a0":1786926892991,"6a82595ab6ddbd49c8580019":1786941038691,"6970c0a016ffc49f8a4f56ce":1786953128405,"6a825e6cbb838fed3d8340d1":1786928779885,"6a8271b138b5add026915ac6":1786933681645,"6a10f694ad2caa7c8a54cff0":1786933796750,"6a828ab1b6ddbd49c85ea0db":1786940081977,"6a82918dbb838fed3d898fc6":1786941837375,"6a8291febb838fed3d899f86":1786941950258,"6a6fe3262b74975ceecd1c97":1786946568501,"6a6ed45b1351873a2774c6c4":1786946191839,"6a8325adb6ddbd49c8728438":1786979759154,"6a836924b6ddbd49c87afde7":1786997028158,"6a83a95738b5add026b8532b":1787013810526,"6a83b9b997756202e4a8c8e4":1787017657946,"6a83ba1297756202e4a8e91a":1787019885135,"6a844f099baf80e29b96aa4c":1787055881872,"6a84739bc3128d9dc711a82a":1787066983212,"6a847e0d9baf80e29b9d213d":1787067917012,"6a848ef19baf80e29b9fd882":1787072241945,"6a84a7d49baf80e29ba33051":1787078745630,"6a84c237c1147c646516a8ba":1787085602792,"6a84d331c1147c64651922cf":1787089799408,"6a84e01c9baf80e29baa9cd0":1787093020326,"6a84f3fec3128d9dc72c4efb":1787098119087,"6a8516fdc3128d9dc72fd774":1787107069328,"6a857136479d1c6b27663019":1787130166805,"6a858fff479d1c6b276a0b5c":1787138047555,"6a85918adacd0791f9d6733a":1787138469235,"6a85b5a01efca7d4d5db6de7":1787147947392,"6a85b68c479d1c6b276f3eeb":1787149524362,"6a85e990dacd0791f9e436f6":1787160976639,"6a85ed0adacd0791f9e4dfae":1787161866736,"6a862029dacd0791f9f24dc8":1787175309766,"6a862b271efca7d4d5ee8e84":1787177767544,"6a863a881efca7d4d5f0b3ea":1787183681880,"6a867801dacd0791f9fd742d":1787197603781,"6a87099edacd0791f911cad1":1787234718236,"6a871f1e40e38e148760d7e2":1787240222097,"6a872464dacd0791f9182556":1787241882507,"6a873a671efca7d4d5146e4f":1787247750737,"6a873a9440e38e14876561dc":1787534778989,"6a873ce3479d1c6b27b31bfe":1787247846155,"6a87f726479d1c6b27cf4041":1787296457858,"6a88354d479d1c6b27d720db":1787311437786,"6a886d66dacd0791f948c82e":1787325798925,"6a8872241efca7d4d5431b51":1787327304443,"6a887b1e479d1c6b27e358b7":1787410261513,"6a888a2c40e38e14879979fa":1787333207239,"6a88c7e6dacd0791f9583216":1787349144077,"6970bab216ffc49f8a4dcd6f":1787353974558,"6a88e2fc40e38e1487a789e1":1787356922421,"6a7c8b77c6b3b9433cfc2f07":1791046152550,"6a80ddb1bb838fed3d4b14fb":1787369693790,"6a891b071efca7d4d55ebdc4":1787370247502,"6a8936f6479d1c6b2701edbd":1787377398636,"6a89b45f1efca7d4d57762c0":1787409503269,"6a89b76e40e38e1487cc5f71":1787410286082,"6a89b9cb479d1c6b2718d4d1":1787410987931,"6a89de1240e38e1487dab014":1787420178209,"6a8a12c9479d1c6b273507b7":1787433741394,"6a8a743b1efca7d4d5a1c7f1":1787458619916,"6a8a94c1479d1c6b274bbbf6":1787467402394,"6a8afa6f479d1c6b275acb75":1787492975338,"6a8b0a79479d1c6b275e0866":1787497081930,"6a8b2230479d1c6b2761fced":1787503152342,"6a8b4500dacd0791f9c7d74c":1787512064502,"6a8b4bc61efca7d4d5c4ca53":1787513798843,"6a8b4f6f479d1c6b276a65ec":1787514735333,"6a47277fb6c9d73365c26b3e":178752
136180016423,"6a8b7a1640e38e148720ebe6":1787525654155,"6a8b833f479d1c6b2771b758":1787528004114,"6a8b84abdacd0791f9d1b62c":1787528365373,"6a8b8f37479d1c6b277348c1":1787531543215,"6a8caa651efca7d4d5f76653":1787613848027,"6a8cb5251efca7d4d5f8c6f2":1787606309498,"6a8cbbe6479d1c6b279ecfcb":1787608375725,"6a8cc1f9479d1c6b279f92ec":1787609634698,"6a8cfa721efca7d4d501b233":1787624050828,"6a8dfdaf479d1c6b27cec376":1787690419084,"6a8ec7ea4897bdd801be101a":1787742186218,"6a8efbdd0f12dbd831468b3a":1787755489146,"6a8f15944976e645184e5bdc":1787762068084,"6a8f32cca34d8a9a07ffbe26":1787769548389,"6a8f52730f12dbd831526584":1788021827987,"6a8f5d984897bdd801d3c3d1":1787780507111,"6a8f740b0f12dbd83156ae1f":1787786253969,"6a8f9e410f12dbd8315b435c":1787797380901,"6a8fa04da34d8a9a070cf3f7":1787798316945,"6a900d150f12dbd8316a27d3":1787825429063,"6a90befc0f12dbd8318496a6":1787870974738,"6a90bf164897bdd801048207":1788808764833,"6a90e945a34d8a9a073c5fee":1787882002205,"6a90ebd7a34d8a9a073cc7c2":1787882485108,"6a910cdf0f12dbd8318fbb02":1787890911937,"6a91a7084976e64518a6d7cb":1787930376323,"6a3403a91f3cb5587a42928c":1787935577617,"6a91f2794976e64518b154e0":1787949689342,"69ae306ff3783889f0225e2f":1790539796062,"6a93032ea34d8a9a0783dbbd":1788019521787,"6a600b7ab10d8a892850b89b":1788023998616,"6a9338280f12dbd831d91502":1788033216589,"6a9338ac4897bdd8015923c6":1788034256153,"6a9347e14976e64518e071a6":1788037102185,"6a9355f7a34d8a9a078f4679":1788040720863,"6a93562b0f12dbd831dce70e":1788040812119,"6a935af9a34d8a9a078fdd2e":1788041977499,"6a935c160f12dbd831dd983b":1788042262381,"6a935d2ca34d8a9a07902366":1788049382569,"6a9367774897bdd8015f0811":1789478740984,"6a9396904897bdd8016532b3":1788057232445,"6a941d700f12dbd831f7ea00":1788091760988,"6a94245a0f12dbd831f8f3cc":1788093753459,"697fd472a9ab3bdac2d719ed":1788094314420,"6a94414a0f12dbd831fdb1be":1788101365604,"6a944df0a34d8a9a07b30f6f":1788104176013,"6a945cd0a34d8a9a07b58b2b":1788107984263,"6a9464e60f12dbd83103a923":1788110054058,"6a953f104897bdd801a8787a":1788165904797,"6a95968e0f12dbd8313786b0":1788188495788,"6a95b9350f12dbd8313d6e88":1788197654099,"6a95f8534976e645184c6008":1790870851709,"6a96059e4976e645184e39e6":1788216734657,"6a6feb1c2b74975ceece026c":1788216748398,"6a961c54a34d8a9a07ff533d":1788222549928,"6a964ac94976e645185797cc":1788234450281,"6970b2cd16ffc49f8a4be118":1790796561711,"6a96a9314897bdd801df8a8b":1788258611281,"69d57d646cbf5f843ac96429":1788276985064,"6a97118d4976e6451875aba0":1788285325057,"6a972174a34d8a9a07265be0":1788300072894,"6a973d2d4976e645187deb3e":1790279173029,"6a9740cc4897bdd801f71c53":1788297420895,"6a97450e0f12dbd831795121":1788298510408,"6a97d9a9a34d8a9a073f5b6a":1788336553827,"6a980c584897bdd8011130f0":1788349528754,"6a9828a5a34d8a9a074ba502":1788356929317,"6a983eca0f12dbd8319a06c3":1788362442740,"6a9877ad4976e64518ab75ec":1788377005204,"6a998543a34d8a9a077df353":1788446376076,"6a99efcda34d8a9a078c824c":1788473293979,"6a9a16654897bdd8015b63b5":1788483173991,"6a9a17014897bdd8015b722c":1788483366315,"6a9aa1fd04bcfa2dff082325":1788518912339,"6a9ac6ae04bcfa2dff0c988b":1788528302491,"6a9ada9f86d3036e0370649b":1788533407413,"6a9ae265d2b98feae1060416":1788535525818,"6a9b492604bcfa2dff1e162d":1788561769132,"697b617483a360d48c48d412":1788613359500,"6a9c5aea86d3036e03a0b84f":1788631786872,"6a9c677a86d3036e03a24919":1788635074885,"6a9c7ccbd2b98feae13902c8":1788640459666,"6a9cdd83b0ea1a6da97529e6":1788665329720,"6a9d210886d3036e03b7b8d6":1788682506211,"6a9d77b086d3036e03c3f4e1":1788704688584,"6970ba4f16ffc49f8a4db0cb":1788735336217,"6a9df01004bcfa2dff70ff24":1788735504942,"6a9dfaddb0ea1a6da99b1ea9":1788738304987,"6a9e2dafd2b98feae16f4419":1788751279079,"6a9e49b3b0ea1a6da9a3924a":1788758464222,"6a9ea9a4d2b98feae17f3a43":1788783026051,"6a9ec2ce04bcfa2dff8b56eb":1788793089813,"69ef7f6f4b092e9a82e1c414":1788818696761,"6a9f60ca86d3036e0304ec24":1788830104952,"6a9f6a67b0ea1a6da9cbec8d":1788832359173,"6a9f6bde04bcfa2dffa36d2b":1788832734075,"6a9fb98504bcfa2dffad6e28":1788852613125,"6aa0ab07d2b98feae1c92884":1788914439523,"6970b98d16ffc49f8a4d69e5":1788966873865,"6aa19023d2b98feae1eb6fe0":1788973099614,"6aa190a4d2b98feae1eb83de":1788973221421,"6aa21d7f04bcfa2dff0350a4":1789012674654,"6aa2af7304bcfa2dff1400c8":1789046643684,"6aa2b337d2b98feae10c8cc3":1790013575542,"6aa2c644b0ea1a6da940ae7d":1789052484870,"6aa2cef486d3036e037c5c82":1789054708656,"6aa3245b86d3036e03888d4f":1789076571947,"6aa3453eb0ea1a6da951ef7f":1789085029329,"6aa35016b0ea1a6da953568c":1789087766878,"6aa3569486d3036e038f052b":1789089497764,"6aa3608ab0ea1a6da95571c1":1789091978616,"6aa37928d2b98feae12686a9":1789098280143,"6aa3796cd2b98feae1268ee5":1789098989437,"6a50008d2a5f83e827af46fa":1790019074097,"6aa3ca8f04bcfa2dff3a440f":1
13618789119295585,"6aa424a904bcfa2dff474aaa":1789142699526,"6aa43172b0ea1a6da9725a2b":1789145458817,"6aa44a5e04bcfa2dff4e2f5c":1789151838086,"6aa48589b0ea1a6da980a965":1789166985171,"6aa488c486d3036e03bbc56d":1789167812290,"6aa49baa86d3036e03c849fb":1789172650692,"6aa4e29386d3036e03dd9690":1789190803206,"6aa5602fb0ea1a6da9b63acd":1789222959929,"6aa578800622b37bebec2179":1789229184174,"6aa57f2d0622b37bebedfa05":1789230893039,"6aa58537b0ea1a6da9c0a425":1789951265514,"6970ba4f16ffc49f8a4dacb6":1789264994663,"6aa6321ce21c92a180eae7f5":1789276700705,"6aa633b4e21c92a180eb153a":1789277108431,"6aa6a7d158fcfe4554991849":1789306833462,"6aa6cdbcb0ea1a6da9ed1441":1789316540979,"6aa6d1f4b0ea1a6da9ed986c":1789317620715,"6aa6f574b0ea1a6da9f242d1":1789326708383,"6aa703ba86d3036e032ed8ce":1789330362852,"6aa7246658fcfe4554a85ee3":1789338726988,"6aa75b45e21c92a1800de90b":1789352773592,"6aa7fdcb58fcfe4554c04534":1789394379972,"6aa804fc86d3036e034b381d":1789396233084,"6aa8119ce21c92a180231d48":1789399452502,"6aa81ce3e21c92a18025e493":1789402339981,"6aa82e3858fcfe4554c79fd0":1789406776278,"6a5a440d340159363324a5d8":1789411530367,"6a106e2346c5d01822bfe744":1789412085762,"6aa888e7e21c92a180335cfd":1789429995013,"6aa892e9e21c92a180348e0f":1789432687704,"6aa8a54ce21c92a18036d53f":1789437260158,"69b779a9ceefc8fccefa1ba3":1791054116540,"6aa8b3a6e21c92a18038adf0":1789440934203,"6aa8b4c086d3036e0361e352":1789441216487,"6a2e0c142461be33268c2150":1789468138554,"6aa921bbb0ea1a6da932deb1":1789469123328,"6aa9908be21c92a18052c508":1789497483651,"6aa9969be21c92a18053f9b1":1789499035860,"6aa9ad3ca739a3871ef5a727":1789504828154,"6aa9eaabb0ea1a6da94b2e7a":1789520556957,"6aa9ef59b0ea1a6da94bb75a":1789521753620,"6aaa512be21c92a180688b9f":1789546795624,"6aaa90e6e21c92a18070458a":1789563110337,"6aaacdcea739a3871e1938ed":1789578702029,"6aaae9bc7738000b53c432b7":1789585852061,"6aab14d409875cda30f483e2":1789596884420,"6aab162ce21c92a18082b522":1789597454723,"6aab1980a739a3871e23b963":1789598114123,"6aab1f5e09875cda30f57b57":1789600561389,"6aab403ab0ea1a6da9758974":1789780248133,"6aab404fa739a3871e272927":1789608017768,"6aab420d09875cda30f888f6":1789608462614,"6aabd34f11eb77ab966a80e3":1789645647273,"6aabe596a449d5304c4d6d91":1789650326993,"6aabe62e09edaff871535b1f":1789650478401,"6aabfaffe1de502a4f069532":1789655814881,"6aac934a11eb77ab96916aaf":1789694794805,"6aacf1f4e1de502a4f34aa4e":1789719181417,"6aa177f204bcfa2dffefbfa0":1789727631463,"6970c02316ffc49f8a4f2b1e":1789750674111,"6aad6e80e1de502a4f43e108":1789750912406,"6aad726da449d5304c8f3747":1789751917654,"6aad8de4e35232535248a454":1789759022479,"6aad9bec1c04290cdde7c7fa":1789762540914,"6aada49fa449d5304c950382":1789764767071,"6aadb8e2a449d5304c9790f6":1789769993325,"6aae23c744832b8faffe13b7":1789797319228,"6aae983a108e35b63512b1f9":1789827144190,"6970bab216ffc49f8a4dcd2c":1789835989543,"6aaec45650be43d066bfafdb":1789838422331,"6aaed7dee979f4331799d423":1789843422647,"6aaeeb3ae979f433179c5287":1789848378025,"6aaf22c3f777eba24564901f":1789862595786,"6aaf2a61e979f43317a4250a":1789864545638,"6aaf3d4591f40bf2be08fdbe":1789869383060,"6aaf4d64e979f43317a78478":1789873510421,"6aaf5758f777eba2456995a2":1789876184993,"6aaff2caf2550d40215a1fad":1789915850009,"6ab017a7f777eba2457f4e9c":1789925982355,"6ab03345f777eba24583f5f8":1789932358472,"6ab03caef2550d402164a8f5":1789934766623,"6ab062cae979f43317c8d492":1789944522624,"6ab062d991f40bf2be2b13c7":1789944688350,"6ab06dfff777eba2458a9aa4":1789951061602,"6ab07caaf777eba2458bf2d1":1789951146759,"6ab0818df777eba2458c6419":1789952397376,"6ab092b0f777eba2458e3547":1789956784962,"6ab0939df777eba2458e4f65":1789958776253,"6ab0b00491f40bf2be330c94":1789964293415,"6ab13d01ec20e54df3a603b9":1790000385277,"6ab14c987a6dfeb22dc664ea":1790004376973,"6ab150f5ec20e54df3a906b3":1790006503763,"6ab152b60dfab8a4a2539de9":1790005942379,"6ab171f0d592e530af04c371":1790013951857,"6ab1d923ec20e54df3bc5ab5":1790040355575,"6ab28c4dd592e530af29e9b0":1790086221387,"6ab29e8f7a6dfeb22df4be2c":1790090895482,"6ab2d35a0dfab8a4a2897196":1790104520293,"6ab32dd90dfab8a4a29960bb":1790127577991,"6ab33d860dfab8a4a29b37e3":1790131590821,"69cbda0fd
13618516b437add51626":1790178387274,"6ab407a6633ffa377f2ccbdb":1790183334366,"6ab445184a7dbf62f67ec395":1790199064485,"6ab4696c4a7dbf62f683e7e8":1790208364537,"6ab469896fd2bc3cbe911f7e":1790258493872,"6ab46979869f97b167633321":1790908108799,"6ab4452310427ae68c80e7ad":1790227687299,"6ab4da286fd2bc3cbe9f7467":1790237224864,"6ab57c9f726081bc3c2cfb75":1790278815335,"6ab5b9a6726081bc3c34b061":1790680174473,"6ab634a2557a9339b3e8d02b":1790325922518,"6ab6926b557a9339b3f7afc9":1790349931004,"6ab6af14557a9339b3fc9591":1790357290891,"6ab70cef92c9e94d44c42d0a":1790381295820,"6ab7b8f09e2ba8a85cd16768":1790425342051,"6ab7e8699e2ba8a85cd9e1a8":1790437518936,"6ab8ad9a92c9e94d44081477":1790489211359,"6ab90915627225ebbe0fb045":1790511532632,"6ab92b750980069f0953dcab":1790520181754,"6ab9433e7b514b9f163bc6d1":1790526270048,"6ab999fb627225ebbe2f946e":1790548805478,"6ab9a10213b9a06c79d2e396":1790550274679,"6aba456213c9b2eaac6b1d42":1790592354120,"6aba8d09627225ebbe63d04d":1790610697688,"6abaa7a0627225ebbe6b6096":1790617504184,"6a6aa2297ed61156b1a6c10f":1790626495712,"6abae380ff41ecfb68ac40ef":1790632832330,"6abb3aa67b514b9f16aa2ba7":1790655142797,"6abb3e537b514b9f16aadb97":1790657422157,"6abbcc897b514b9f16c68cab":1790692491422,"6abbf55b7b514b9f16cfe55b":1790702939778,"6abc2d129d7bba0bfa6ba61a":1790717203828,"6abc45457b514b9f16e17344":1790723402169,"6abc4e869d7bba0bfa736590":1790725767072,"6abc67387b514b9f16e75c9b":1790732088551,"6abc73c83e02b67763bc534f":1790735304680,"6abc7ca33e02b67763bdf7aa":1790737571115,"6abc83e09d7bba0bfa7d5214":1790739454346,"6abd474f55edbefa7c889e89":1790789458309,"6abdcd202110d00f11e5a499":1790824778647,"6abe6c815499a3dbe9e5c4c5":1790864852500,"6abe84e25499a3dbe9ea148f":1790870754931,"6abe8e405499a3dbe9ebb6f2":1790873154581,"6abeb1f75499a3dbe9f26354":1790882296811,"6abeb529226a81701aa0b71d":1790883113399,"6abed6342b6f1e6f70f640a0":1790891810968,"6abef3e22b6f1e6f70fbb32a":1790900161243,"6abf089c5499a3dbe901bf29":1790904476607,"6abf136d76d22dd5151161f4":1790907245250,"6975c05754758ca276581a9a":1790953370952,"6abfe89e957be9dde46509b0":1790961822065,"6abffc0c9703fc1074ac769f":1790966796557,"6ac0012ca72ade638119fa33":1790968231184,"6ac00976dd0de9c13b3bd0aa":1790972150645,"6ac083129703fc1074c28d12":1791001362082,"6ac0861f957be9dde484aca2":1791002144609,"6ac09423acbc0b2099df6270":1791005941077,"6ac0ee9df49428468cbd0a88":1791029362904,"6ac12eee22c1288dd187097c":1791045358188,"6ac166dd22c1288dd1970e2e":1791059677933} || {},
13619    };
13620    if (!window.xb_wishlist) {
13621      window.xb_wishlist = {
13622        ...XBWishlistConfig
13623      };
13624    } else {
13625      window.xb_wishlist = {
13626        ...window.xb_wishlist,
13627        ...XBWishlistConfig
13628      };
13629    }
13630
13631    function replaceWishlistTags() {
13632      const content = document.body.innerHTML;
13633      const pattern = /\[xb-wishlist-page([^\]]*)\]\[\/xb-wishlist-page\]/g;
13634
13635      if (pattern.test(content)) {
13636        document.body.innerHTML = content.replace(pattern, function (match, attributes) {
13637          return `<xb-wishlist-page ${attributes}></xb-wishlist-page>`;
13638        });
13639      }
13640    }
13641
13642    if (document.readyState === 'loading') {
13643      document.addEventListener('DOMContentLoaded', replaceWishlistTags);
13644    } else {
13645      replaceWishlistTags();
13646    }
13647  }
13648</script>
13648
13649
13650<script src='https://cdn.shopify.com/extensions/01a0f6ba-a52c-7168-beea-a9eac65e23fa/xb-wishlist-528/assets/xb-wishlist.js' defer></script>
vendor: 1 bytes, line 13650
13650
13651<script type='module' src='https://cdn.shopify.com/extensions/01a0f6ba-a52c-7168-beea-a9eac65e23fa/xb-wishlist-528/assets/collection.js' defer></script>
13651
13652
13653
13654
13655
13656
13657</div><div id="shopify-block-ARTg3djF4REhDLzg1M__16237003337219470499" class="shopify-block shopify-app-block">
13658
13659
13660
13661    
13662    
13663        
13664        
13665            
13666                
13667            
13668        
13669    
13670        
13671        
13672            
13673                
13674            
13675        
13676    
13677
13678
13679
13680<script>
13681    var _ALConfig = _ALConfig || {};
13682    _ALConfig = {
13683        'shop_name': '',
13684        'public_domain': null,
13685        'proxy_path_prefix': 'apps/loyalty',
13686        'widgetJsPath': 'https://loyalty-admin.appstle.com/app/loyalty-widget.bundle.js',
13687        'widgetCssPath': 'https://loyalty-admin.appstle.com/content/loyalty-widget.css',
13688        'pointEarnRules': [],
13689        'pointRedeemRules': [],
13690        'widget_setting': null,
13691        'product': null,
13692        'productCollections': [],
13693        'shop_labels': null,
13694        'pointRoundType': 'NO_ROUND'
13695    };
13696
13697    // Shopify's market-aware account routes. Emitted from the Liquid `routes` object so links keep
13698    // the customer's current market/language prefix (e.g. /en-eu/account/login) instead of a
13699    // hard-coded /account/login, which Shopify resolves against the shop's primary market.
13700    _ALConfig.routes = {
13701        'root_url': "\/",
13702        'account_url': "\/account",
13703        'account_login_url': "\/account\/login",
13704        'account_register_url': "\/account\/register",
13705        'account_logout_url': "\/account\/logout"
13706    };
13707
13708    
13709    _ALConfig.shop_name = "Rocky Mountain Oils";
13710    
13711
13712    
13713    _ALConfig.proxy_path_prefix = "apps\/loyalty";
13714    
13715
13716    
13717    _ALConfig.currency = "USD";
13718    
13719
13720    
13721    _ALConfig.storeCurrency = "USD";
13722    
13723
13724    
13725    _ALConfig.pointRoundType = "NO_ROUND";
13726    
13727
13728    
13729    _ALConfig.public_domain = "www.rockymountainoils.com";
13730    
13731
13732    
13733    _ALConfig.widgetJsPath = "https:\/\/loyalty-admin.appstle.com\/app\/loyalty-widget.bundle.js?v=1790950436881";
13734    
13735
13736    
13737    _ALConfig.widgetCssPath = "https:\/\/loyalty-admin.appstle.com\/content\/loyalty-widget.css?v=1790950436881";
13738    
13739
13740    
13741    _ALConfig.referralEnabled = true;
13742    
13743
13744    
13745    _ALConfig.vipTierEnabled = true;
13746    
13747
13748    
13749    _ALConfig.vipTierSetting = {"id":1804,"shop":"rocky-mountain-oils.myshopify.com","type":"AMOUNT_SPENT","amountOfTimeToAchieveTier":"CUSTOM","startAt":"2026-09-30T09:50:27.760069Z","evaluationEndAt":null,"createAt":"2026-09-30T09:50:27.760094Z","updateAt":"2026-10-02T16:15:38.479909Z","isRunning":null,"vipIntervalType":"YEAR","vipInterval":1,"expiredAt":null,"allowedCustomerTags":null,"restrictCustomersWithTags":null,"timeToAchieveMilestone":"ONE_YEAR","milestoneInterval":1,"milestoneIntervalType":"YEAR"};
13750    
13751
13752    
13753    _ALConfig.vipTiers = [{"id":5659,"shop":"rocky-mountain-oils.myshopify.com","name":"Preferred","milestone":0.0,"imageUrl":"https:\/\/cdn.sweettooth.io\/v1\/images\/vip_tiers\/vip-tier-1.svg?color=%236568FE\u0026theme=light","createAt":"2026-09-30T09:50:27.769537Z","updateAt":"2026-10-02T19:29:28.901895Z","allowedCustomerTags":"","vipIntervalType":null,"vipInterval":1,"expiredAt":null,"amountOfTimeToAchieveTier":"LIFETIME","restrictCustomersWithTags":"","status":true,"serial":0,"customerFacingLabel":"Earn 1 point per dollar spent.\u003cbr\u003e","additionalTags":"swell_vip_preferred","translations":null},{"id":5660,"shop":"rocky-mountain-oils.myshopify.com","name":"Premium","milestone":125.0,"imageUrl":"https:\/\/cdn.sweettooth.io\/v1\/images\/vip_tiers\/vip-tier-1.svg?color=%236568FE\u0026theme=light","createAt":"2026-09-30T09:50:27.769539Z","updateAt":"2026-10-02T19:40:04.669064Z","allowedCustomerTags":"","vipIntervalType":"YEAR","vipInterval":1,"expiredAt":null,"amountOfTimeToAchieveTier":"CUSTOM","restrictCustomersWithTags":"","status":true,"serial":1,"customerFacingLabel":"Spend $125 this calendar year.\u003cbr\u003e\u003cb\u003eEarn 1.25 points per dollar spent.\u003c\/b\u003e","additionalTags":"swell_vip_premium","translations":null},{"id":5661,"shop":"rocky-mountain-oils.myshopify.com","name":"Elite","milestone":300.0,"imageUrl":"https:\/\/cdn.sweettooth.io\/v1\/images\/vip_tiers\/vip-tier-1.svg?color=%236568FE\u0026theme=light","createAt":"2026-09-30T09:50:27.76954Z","updateAt":"2026-10-02T20:32:06.574394Z","allowedCustomerTags":"","vipIntervalType":"YEAR","vipInterval":1,"expiredAt":null,"amountOfTimeToAchieveTier":"CUSTOM","restrictCustomersWithTags":"","status":true,"serial":2,"customerFacingLabel":"Spend $300 this calendar year.\u003cbr\u003e\u003cb\u003eEarn 1.5 points per dollar spent.\u003c\/b\u003e","additionalTags":"swell_vip_elite","translations":null}];
13754    
13755
13756    
13757    _ALConfig.pointEarnRules = [{"id":5297,"shop":"rocky-mountain-oils.myshopify.com","type":"STATIC_EARN_RULE","status":"ACTIVE","historicPurchaseDuration":"NONE","basePoints":0.0,"includeSubtotal":false,"includeTax":false,"excludeCollections":null,"name":"Leave a product  review","customerNotification":"","createAt":"2026-10-02T13:45:18.600319Z","updateAt":"2026-10-02T19:04:56.457669Z","rewardInterval":"DAY","productId":null,"collectionId":null,"variantId":null,"productData":null,"collectionData":null,"customerFacingLabel":"20 points","socialUrl":"","disableForOnSellProduct":false,"autoApprovalDays":0,"enableInterval":false,"earnLimit":1,"activityType":"REGULAR","allowedCustomerTags":null,"includeShippingPoints":false,"eligibleForFirstOrder":false,"maximumPoints":null,"restrictCustomerTags":null,"customerFacingIconUrl":"","serial":1,"excludeOrderTags":null,"pointBasedOn":null,"excludeProducts":null,"givePointsToGuestCustomers":false,"allowedProductTags":null,"restrictProductTags":null,"rollBackPointsOnUnsubscribe":false,"addAdditionalPoints":false,"additionalPoints":null,"addAdditionalPhotoPoints":false,"additionalPhotoPoints":null,"addAdditionalVideoPoints":false,"additionalVideoPoints":null,"refundNotificationLabel":"","disablePointsForDiscountedProduct":false,"platformType":"BOTH","vipTierId":null,"earnType":"POINTS","minimumOrderValue":null,"allowedOrderTags":null,"excludeVariantIds":null,"rewardA
13757ssignType":"DYNAMIC","applyOnImportedCustomer":false,"enableBirthdayPromo":false,"promoPointsMultiplier":null,"ruleStartDate":null,"ruleEndDate":null,"translations":null,"appliesOn":"BOTH","manuallyApprovePoints":false,"showReviewProductDetails":true,"collectBirthYear":true},{"id":5296,"shop":"rocky-mountain-oils.myshopify.com","type":"STATIC_EARN_RULE","status":"ACTIVE","historicPurchaseDuration":"NONE","basePoints":0.0,"includeSubtotal":false,"includeTax":false,"excludeCollections":null,"name":"Leave a product photo review","customerNotification":"","createAt":"2026-10-02T13:45:13.580618Z","updateAt":"2026-10-02T19:04:51.623351Z","rewardInterval":"DAY","productId":null,"collectionId":null,"variantId":null,"productData":null,"collectionData":null,"customerFacingLabel":"25 points","socialUrl":"","disableForOnSellProduct":false,"autoApprovalDays":0,"enableInterval":false,"earnLimit":1,"activityType":"REGULAR","allowedCustomerTags":null,"includeShippingPoints":false,"eligibleForFirstOrder":false,"maximumPoints":null,"restrictCustomerTags":null,"customerFacingIconUrl":"","serial":2,"excludeOrderTags":null,"pointBasedOn":null,"excludeProducts":null,"givePointsToGuestCustomers":false,"allowedProductTags":null,"restrictProductTags":null,"rollBackPointsOnUnsubscribe":false,"addAdditionalPoints":false,"additionalPoints":null,"addAdditionalPhotoPoints":false,"additionalPhotoPoints":null,"addAdditionalVideoPoints":false,"additionalVideoPoints":null,"refundNotificationLabel":"","disablePointsForDiscountedProduct":false,"platformType":"BOTH","vipTierId":null,"earnType":"POINTS","minimumOrderValue":null,"allowedOrderTags":null,"excludeVariantIds":null,"rewardAssignType":"DYNAMIC","applyOnImportedCustomer":false,"enableBirthdayPromo":false,"promoPointsMultiplier":null,"ruleStartDate":null,"ruleEndDate":null,"translations":null,"appliesOn":"BOTH","manuallyApprovePoints":false,"showReviewProductDetails":true,"collectBirthYear":true},{"id":5295,"shop":"rocky-mountain-oils.myshopify.com","type":"STATIC_EARN_RULE","status":"ACTIVE","historicPurchaseDuration":"NONE","basePoints":0.0,"includeSubtotal":false,"includeTax":false,"excludeCollections":null,"name":"Leave a product video review","customerNotification":"","createAt":"2026-10-02T13:44:54.090861Z","updateAt":"2026-10-02T19:04:39.604308Z","rewardInterval":"DAY","productId":null,"collectionId":null,"variantId":null,"productData":null,"collectionData":null,"customerFacingLabel":"50 points","socialUrl":"","disableForOnSellProduct":false,"autoApprovalDays":0,"enableInterval":false,"earnLimit":1,"activityType":"REGULAR","allowedCustomerTags":null,"includeShippingPoints":false,"eligibleForFirstOrder":false,"maximumPoints":null,"restrictCustomerTags":null,"customerFacingIconUrl":"","serial":3,"excludeOrderTags":null,"pointBasedOn":null,"excludeProducts":null,"givePointsToGuestCustomers":false,"allowedProductTags":null,"restrictProductTags":null,"rollBackPointsOnUnsubscribe":false,"addAdditionalPoints":false,"additionalPoints":null,"addAdditionalPhotoPoints":false,"additionalPhotoPoints":null,"addAdditionalVideoPoints":false,"additionalVideoPoints":null,"refundNotificationLabel":"","disablePointsForDiscountedProduct":false,"platformType":"BOTH","vipTierId":null,"earnType":"POINTS","minimumOrderValue":null,"allowedOrderTags":null,"excludeVariantIds":null,"rewardAssignType":"DYNAMIC","applyOnImportedCustomer":false,"enableBirthdayPromo":false,"promoPointsMultiplier":null,"ruleStartDate":null,"ruleEndDate":null,"translations":null,"appliesOn":"BOTH","manuallyApprovePoints":false,"showReviewProductDetails":true,"collectBirthYear":true}];
13758    
13759
13760    
13761    _ALConfig.pointRedeemRules = [{"id":6996,"shop":"rocky-mountain-oils.myshopify.com","name":"$5 off","type":"DISCOUNT_CODE","referralType":null,"status":"ACTIVE","redeemPoints":100.0,"discountType":"FIXED","discount":5.0,"minimumPurchaseAmount":0.0,"createAt":"2026-09-30T15:01:46.049907Z","updateAt":"2026-10-02T19:34:50.322477Z","maximumShippingRate":0.0,"productId":null,"variantId":null,"productData":null,"collectionId":null,"collectionData":null,"customerFacingLabel":"Redeem 100 points to receive a $5.00 discount","restrictCustomers":null,"restrictCustomersWithTags":null,"rewardInterval":"DAY","appliesOn":"ONE_TIME","combinedWithProductDiscount":true,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":true,"enableInterval":false,"redeemLimit":1,"enableNumberOfUsagesLimit":false,"numberOfUsagesLimit":null,"allowedCustomerTags":null,"earnRuleId":null,"vipTierId":null,"redeemLabel":"Get a {{discount}} discount on your entire order","customerFacingIconUrl":"","serial":0,"discountCodeForAllCustomer":false,"allowedCountries":null,"showInPosOnly":false,"redeemAllPoints":false,"enableMinimumPointsToRedeem":false,"requiredMinimumPointsToRedeem":0.0,"enableMaximumPointsToRedeem":false,"requiredMaximumPointsToRedeem":0.0,"enablePOS":false,"minimumPointsLabel":"Add minimum {{points}} points to redeem","maximumPointsLabel":"Maximum {{points}}
13761 points can be redeemed","applyDiscountOnce":true,"enableDiscountPrefix":false,"discountPrefixText":"","discountCodeNodeId":"gid:\/\/shopify\/DiscountCodeNode\/1789711810927","translations":null,"quantity":1,"applyToEachItem":false,"enableDiscountExpirationOverride":false,"discountExpirationValue":null,"discountExpirationType":null,"activationDelayDays":null,"excludeProductData":null},{"id":6995,"shop":"rocky-mountain-oils.myshopify.com","name":"$10 off","type":"DISCOUNT_CODE","referralType":null,"status":"ACTIVE","redeemPoints":200.0,"discountType":"FIXED","discount":10.0,"minimumPurchaseAmount":0.0,"createAt":"2026-09-30T15:00:57.82081Z","updateAt":"2026-10-02T19:34:58.803767Z","maximumShippingRate":0.0,"productId":null,"variantId":null,"productData":null,"collectionId":null,"collectionData":null,"customerFacingLabel":"Redeem 200 points to receive a $10.00 discount","restrictCustomers":null,"restrictCustomersWithTags":null,"rewardInterval":"DAY","appliesOn":"ONE_TIME","combinedWithProductDiscount":true,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":true,"enableInterval":false,"redeemLimit":1,"enableNumberOfUsagesLimit":false,"numberOfUsagesLimit":null,"allowedCustomerTags":null,"earnRuleId":null,"vipTierId":null,"redeemLabel":"Get a {{discount}} discount on your entire order","customerFacingIconUrl":"","serial":1,"discountCodeForAllCustomer":false,"allowedCountries":null,"showInPosOnly":false,"redeemAllPoints":false,"enableMinimumPointsToRedeem":false,"requiredMinimumPointsToRedeem":0.0,"enableMaximumPointsToRedeem":false,"requiredMaximumPointsToRedeem":0.0,"enablePOS":false,"minimumPointsLabel":"Add minimum {{points}} points to redeem","maximumPointsLabel":"Maximum {{points}} points can be redeemed","applyDiscountOnce":true,"enableDiscountPrefix":false,"discountPrefixText":"","discountCodeNodeId":"gid:\/\/shopify\/DiscountCodeNode\/1789711516015","translations":null,"quantity":1,"applyToEachItem":false,"enableDiscountExpirationOverride":false,"discountExpirationValue":null,"discountExpirationType":null,"activationDelayDays":null,"excludeProductData":null},{"id":6994,"shop":"rocky-mountain-oils.myshopify.com","name":"$15 off","type":"DISCOUNT_CODE","referralType":null,"status":"ACTIVE","redeemPoints":300.0,"discountType":"FIXED","discount":15.0,"minimumPurchaseAmount":0.0,"createAt":"2026-09-30T14:59:54.298157Z","updateAt":"2026-10-02T19:35:25.724936Z","maximumShippingRate":0.0,"productId":null,"variantId":null,"productData":null,"collectionId":null,"collectionData":null,"customerFacingLabel":"Redeem 300 points to receive a $15.00 discount","restrictCustomers":null,"restrictCustomersWithTags":null,"rewardInterval":"DAY","appliesOn":"ONE_TIME","combinedWithProductDiscount":true,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":true,"enableInterval":false,"redeemLimit":1,"enableNumberOfUsagesLimit":false,"numberOfUsagesLimit":null,"allowedCustomerTags":null,"earnRuleId":null,"vipTierId":null,"redeemLabel":"Get a {{discount}} discount on your entire order","customerFacingIconUrl":"","serial":2,"discountCodeForAllCustomer":false,"allowedCountries":null,"showInPosOnly":false,"redeemAllPoints":false,"enableMinimumPointsToRedeem":false,"requiredMinimumPointsToRedeem":0.0,"enableMaximumPointsToRedeem":false,"requiredMaximumPointsToRedeem":0.0,"enablePOS":false,"minimumPointsLabel":"Add minimum {{points}} points to redeem","maximumPointsLabel":"Maximum {{points}} points can be redeemed","applyDiscountOnce":true,"enableDiscountPrefix":false,"discountPrefixText":"","discountCodeNodeId":"gid:\/\/shopify\/DiscountCodeNode\/1789711221103","translations":null,"quantity":1,"applyToEachItem":false,"enableDiscountExpirationOverride":false,"discountExpirationValue":null,"discountExpirationType":null,"activationDelayDays":null,"excludeProductData":null},{"id":6992,"shop":"rocky-mountain-oils.myshopify.com","name":"$20 off","type":"DISCOUNT_CODE","referralType":null,"status":"ACTIVE","redeemPoints":400.0,"discountType":"FIXED","discount":20.0,"minimumPurchaseAmount":0.0,"createAt":"2026-09-30T14:57:46.567605Z","updateAt":"2026-10-02T19:35:17.783207Z","maximumShippingRate":0.0,"productId":null,"variantId":null,"productData":null,"collectionId":null,"collectionData":null,"customerFacingLabel":"Redeem 400 points to receive a $20.00 discount","restrictCustomers":null,"restrictCustomersWithTags":null,"rewardInterval":"DAY","appliesOn":"ONE_TIME","combinedWithProductDiscount":true,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":true,"enableInterval":false,"redeemLimit":1,"enableNumberOfUsagesLimit":false,"numberOfUsagesLimit":null,"allowedCustomerTags":null,"earnRuleId":null,"vipTierId":null,"redeemLabel":"Get a {{discount}} discount on your entire order","customerFacingIconUrl":"","serial":3,"discountCodeForAllCustomer":false,"allowedCountries":null,"showInPosOnly":false,"redeemAllPoints":false,"enableMinimumPointsToRedeem":false,"requiredMinimumPointsToRedeem":0.0,"enableMaximumPointsToRedeem":false,"requiredMaximumPointsToRedeem":0.0,"enablePOS":false,"minimumPointsLabel":"Add minimum {{points}} points to redeem","maximumPointsLabel":"Maximum {{points}}
13761 points can be redeemed","applyDiscountOnce":true,"enableDiscountPrefix":false,"discountPrefixText":"","discountCodeNodeId":"gid:\/\/shopify\/DiscountCodeNode\/1789710795119","translations":null,"quantity":1,"applyToEachItem":false,"enableDiscountExpirationOverride":false,"discountExpirationValue":null,"discountExpirationType":null,"activationDelayDays":null,"excludeProductData":null},{"id":6993,"shop":"rocky-mountain-oils.myshopify.com","name":"$25 off","type":"DISCOUNT_CODE","referralType":null,"status":"ACTIVE","redeemPoints":500.0,"discountType":"FIXED","discount":25.0,"minimumPurchaseAmount":0.0,"createAt":"2026-09-30T14:57:52.865876Z","updateAt":"2026-10-02T19:35:31.467536Z","maximumShippingRate":0.0,"productId":null,"variantId":null,"productData":null,"collectionId":null,"collectionData":null,"customerFacingLabel":"Redeem 500 points to receive a $25.00 discount","restrictCustomers":null,"restrictCustomersWithTags":null,"rewardInterval":"DAY","appliesOn":"ONE_TIME","combinedWithProductDiscount":true,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":true,"enableInterval":false,"redeemLimit":1,"enableNumberOfUsagesLimit":false,"numberOfUsagesLimit":null,"allowedCustomerTags":null,"earnRuleId":null,"vipTierId":null,"redeemLabel":"Get a {{discount}} discount on your entire order","customerFacingIconUrl":"","serial":4,"discountCodeForAllCustomer":false,"allowedCountries":null,"showInPosOnly":false,"redeemAllPoints":false,"enableMinimumPointsToRedeem":false,"requiredMinimumPointsToRedeem":0.0,"enableMaximumPointsToRedeem":false,"requiredMaximumPointsToRedeem":0.0,"enablePOS":false,"minimumPointsLabel":"Add minimum {{points}} points to redeem","maximumPointsLabel":"Maximum {{points}} points can be redeemed","applyDiscountOnce":true,"enableDiscountPrefix":false,"discountPrefixText":"","discountCodeNodeId":"gid:\/\/shopify\/DiscountCodeNode\/1789710827887","translations":null,"quantity":1,"applyToEachItem":false,"enableDiscountExpirationOverride":false,"discountExpirationValue":null,"discountExpirationType":null,"activationDelayDays":null,"excludeProductData":null},{"id":6991,"shop":"rocky-mountain-oils.myshopify.com","name":"$50 off","type":"DISCOUNT_CODE","referralType":null,"status":"ACTIVE","redeemPoints":1000.0,"discountType":"FIXED","discount":50.0,"minimumPurchaseAmount":0.0,"createAt":"2026-09-30T14:57:38.486413Z","updateAt":"2026-10-02T19:35:37.165087Z","maximumShippingRate":0.0,"productId":null,"variantId":null,"productData":null,"collectionId":null,"collectionData":null,"customerFacingLabel":"Redeem 1,000 points to receive a $50.00 discount","restrictCustomers":null,"restrictCustomersWithTags":null,"rewardInterval":"DAY","appliesOn":"ONE_TIME","combinedWithProductDiscount":true,"combinedWithShippingDiscount":true,"combinedWithOrderDiscount":true,"enableInterval":false,"redeemLimit":1,"enableNumberOfUsagesLimit":false,"numberOfUsagesLimit":null,"allowedCustomerTags":null,"earnRuleId":null,"vipTierId":null,"redeemLabel":"Get a {{discount}} discount on your entire order","customerFacingIconUrl":"","serial":5,"discountCodeForAllCustomer":false,"allowedCountries":null,"showInPosOnly":false,"redeemAllPoints":false,"enableMinimumPointsToRedeem":false,"requiredMinimumPointsToRedeem":0.0,"enableMaximumPointsToRedeem":false,"requiredMaximumPointsToRedeem":0.0,"enablePOS":false,"minimumPointsLabel":"Add minimum {{points}} points to redeem","maximumPointsLabel":"Maximum {{points}} points can be redeemed","applyDiscountOnce":true,"enableDiscountPrefix":false,"discountPrefixText":"","discountCodeNodeId":"gid:\/\/shopify\/DiscountCodeNode\/1789710762351","translations":null,"quantity":1,"applyToEachItem":false,"enableDiscountExpirationOverride":false,"discountExpirationValue":null,"discountExpirationType":null,"activationDelayDays":null,"excludeProductData":null}];
13762    
13763
13764    
13765    _ALConfig.vipRewards = [];
13766    
13767
13768    
13769    _ALConfig.vipPointRewards = [{"id":5304,"shop":"rocky-mountain-oils.myshopify.com","type":"BIRTHDAY","status":"ACTIVE","historicPurchaseDuration":"NONE","basePoints":100.0,"includeSubtotal":false,"includeTax":false,"excludeCollections":null,"name":"Preferred Birthday Points","customerNotification":"{{points}} points added for birthday.","createAt":"2026-10-02T19:27:47.688643Z","updateAt":"2026-10-02T19:27:47.688644Z","rewardInterval":"DAY","productId":null,"collectionId":null,"variantId":null,"productData":null,"collectionData":null,"customerFacingLabel":"100 points for your Birthday","socialUrl":null,"disableForOnSellProduct":false,"autoApprovalDays":0,"enableInterval":false,"earnLimit":1,"activityType":"VIP","allowedCustomerTags":null,"includeShippingPoints":false,"eligibleForFirstOrder":false,"maximumPoints":null,"restrictCustomerTags":null,"customerFacingIconUrl":null,"serial":0,"excludeOrderTags":null,"pointBasedOn":"FLAT_PURCHASE","excludeProducts":null,"givePointsToGuestCustomers":false,"allowedProductTags":null,"restrictProductTags":null,"rollBackPointsOnUnsubscribe":false,"addAdditionalPoints":false,"additionalPoints":null,"addAdditionalPhotoPoints":false,"additionalPhotoPoints":null,"addAdditionalVideoPoints":false,"additionalVideoPoints":null,"refundNotificationLabel":"{{points}} points removed for refund.","disablePointsForDiscountedProduct":false,"platformType":"BOTH","vipTierId":5659,"earnType":"POINTS","minimumOrderValue":null,"allowedOrderTags":null,"excludeVariantIds":null,"rewardA
13769ssignType":"DYNAMIC","applyOnImportedCustomer":false,"enableBirthdayPromo":false,"promoPointsMultiplier":null,"ruleStartDate":null,"ruleEndDate":null,"translations":null,"appliesOn":"BOTH","manuallyApprovePoints":false,"showReviewProductDetails":true,"collectBirthYear":true},{"id":5303,"shop":"rocky-mountain-oils.myshopify.com","type":"BIRTHDAY","status":"ACTIVE","historicPurchaseDuration":"NONE","basePoints":150.0,"includeSubtotal":false,"includeTax":false,"excludeCollections":null,"name":"Premium Birthday Points","customerNotification":"{{points}} points added for birthday.","createAt":"2026-10-02T19:21:15.78764Z","updateAt":"2026-10-02T19:21:15.787642Z","rewardInterval":"DAY","productId":null,"collectionId":null,"variantId":null,"productData":null,"collectionData":null,"customerFacingLabel":"150 points for your Birthday","socialUrl":null,"disableForOnSellProduct":false,"autoApprovalDays":0,"enableInterval":false,"earnLimit":1,"activityType":"VIP","allowedCustomerTags":null,"includeShippingPoints":false,"eligibleForFirstOrder":false,"maximumPoints":null,"restrictCustomerTags":null,"customerFacingIconUrl":null,"serial":0,"excludeOrderTags":null,"pointBasedOn":"FLAT_PURCHASE","excludeProducts":null,"givePointsToGuestCustomers":false,"allowedProductTags":null,"restrictProductTags":null,"rollBackPointsOnUnsubscribe":false,"addAdditionalPoints":false,"additionalPoints":null,"addAdditionalPhotoPoints":false,"additionalPhotoPoints":null,"addAdditionalVideoPoints":false,"additionalVideoPoints":null,"refundNotificationLabel":"{{points}} points removed for refund.","disablePointsForDiscountedProduct":false,"platformType":"BOTH","vipTierId":5660,"earnType":"POINTS","minimumOrderValue":null,"allowedOrderTags":null,"excludeVariantIds":null,"rewardAssignType":"DYNAMIC","applyOnImportedCustomer":false,"enableBirthdayPromo":false,"promoPointsMultiplier":null,"ruleStartDate":null,"ruleEndDate":null,"translations":null,"appliesOn":"BOTH","manuallyApprovePoints":false,"showReviewProductDetails":true,"collectBirthYear":true},{"id":5161,"shop":"rocky-mountain-oils.myshopify.com","type":"BIRTHDAY","status":"ACTIVE","historicPurchaseDuration":"NONE","basePoints":200.0,"includeSubtotal":false,"includeTax":false,"excludeCollections":null,"name":"VIP Birthday Points","customerNotification":"{{points}} points added for birthday.","createAt":"2026-09-30T14:45:09.915012Z","updateAt":"2026-10-02T19:13:56.736117Z","rewardInterval":"DAY","productId":null,"collectionId":null,"variantId":null,"productData":null,"collectionData":null,"customerFacingLabel":"200 points for your Birthday","socialUrl":null,"disableForOnSellProduct":false,"autoApprovalDays":0,"enableInterval":false,"earnLimit":1,"activityType":"VIP","allowedCustomerTags":null,"includeShippingPoints":false,"eligibleForFirstOrder":false,"maximumPoints":null,"restrictCustomerTags":null,"customerFacingIconUrl":null,"serial":0,"excludeOrderTags":null,"pointBasedOn":"FLAT_PURCHASE","excludeProducts":null,"givePointsToGuestCustomers":false,"allowedProductTags":null,"restrictProductTags":null,"rollBackPointsOnUnsubscribe":false,"addAdditionalPoints":false,"additionalPoints":null,"addAdditionalPhotoPoints":false,"additionalPhotoPoints":null,"addAdditionalVideoPoints":false,"additionalVideoPoints":null,"refundNotificationLabel":"{{points}} points removed for refund.","disablePointsForDiscountedProduct":false,"platformType":"BOTH","vipTierId":5661,"earnType":"POINTS","minimumOrderValue":null,"allowedOrderTags":null,"excludeVariantIds":null,"rewardAssignType":"DYNAMIC","applyOnImportedCustomer":false,"enableBirthdayPromo":false,"promoPointsMultiplier":null,"ruleStartDate":null,"ruleEndDate":null,"translations":null,"appliesOn":"BOTH","manuallyApprovePoints":false,"showReviewProductDetails":true,"collectBirthYear":true}];
13770    
13771
13772    
13773    _ALConfig.widget_setting = {"id":1804,"shop":"rocky-mountain-oils.myshopify.com","themePrimaryColor":null,"themeSecondaryColor":null,"widgetPosition":"RIGHT","showWidget":true,"widgetBackgroundColor":"#a4197a","widgetTextColor":"#ffffff","faq":null,"popupHeaderColor":"#a4197a","popupTilesColor":"#f8fafc","popupButtonColor":"#a4197a","popupIconColor":"#1f2937","popupLinksColor":"#2f5bd8","homeGreetings":null,"homeSignup":null,"popupButtonTextColor":"#ffffff","popupTilesTextColor":"#1f2937","popupDiscountCodeGenerated":null,"popupCopyDiscount":null,"popupCopiedDiscount":null,"widgetTitle":null,"customCss":null,"widgetCounterBackgroun
13773dColor":"#a4197a","widgetCounterTextColor":"#ffffff","logoUrl":"","notificationToastBackgroundColor":"#feeeff","notificationToastTextColor":"#a4197a","acquirePointsBackgroundColor":"#eef4ff","acquirePointsTextColor":"#1e3a8a","pointsBalanceBackgroundColor":"inherit","pointsBalanceTextColor":"#1f2937","allowedCustomersTag":"","widgetSettingJson":"{\"headerTextColor\":\"#ffffff\",\"widgetDateTimeFormat\":\"MMM D, YYYY, h:mm A\",\"showVIPSection\":true,\"dedicatedPageType\":\"DEDICATED_PAGE_V2\",\"referralRedirectUrl\":\"\",\"loaderIcon\":\"\",\"showLoyaltyOptOut\":false,\"cartWidgetSelector\":\"\",\"toastPosition\":\"bottom-center\",\"primaryDedicatedPageSectionBackgroundColor\":\"#feeeff\",\"reachVipMileStoneType\":\"TOTAL_AMOUNT\",\"createAccountLink\":\"\",\"cartDrawerWidgetPlacement\":\"BEFORE\",\"refreshOnAddToCart\":false,\"selectApplyRewardsDefault\":false,\"dateLocalFormat\":\"DEFAULT\",\"loyaltyPageMetaDescription\":\"\",\"enableMetaTagForNoIndexing\":false,\"hideToastNotification\":false,\"subheadingTextColor\":\"#ffffff\",\"hideAppstleLoaderIcon\":false,\"showRedeemSection\":true,\"loadScriptOnlyOnDedicatedPage\":false,\"hideRedeemRuleSectionOnEmpty\":true,\"widgetBackgroundImage\":\"\",\"vipTierBadgeBackgroun
13773dColor\":\"inherit\",\"enableEnhancedV2Styling\":true,\"showCustomerHistoryDescriptionToolTip\":false,\"checkoutAllowedCustomerTags\":\"\",\"secondaryDedicatedPageBackgroundColor\":\"#ffffff\",\"launcherDataType\":\"POINTS\",\"primaryDedicatedPageV2BackgroundColor\":\"#a4197a\",\"titleCount\":60,\"hideCheckoutBlockLoggedOutCustomers\":false,\"vipTierBadgeTextColor\":\"#000000\",\"popupButtonHoverColor\":\"#b4197a\",\"cartWidgetPlacement\":\"BEFORE\",\"showRewardSection\":true,\"primaryDedicatedPageBackgroundColor\":\"#a4197a\",\"showHowItWorksSection\":false,\"visitedIcon\":\"\",\"afterCopiedDiscountRedirectUrl\":\"\",\"showVipTierBadge\":false,\"loggedOutFlagAcquirePoints\":false,\"manageLoyaltyButtonUrl\":\"\",\"hideRulesForLoggedOutCustomer\":false,\"hideStoreCreditsBalance\":true,\"checkoutRestrictCustomerTags\":\"\",\"footerTextColor\":\"#757575\",\"hideExpirationDate\":false,\"dedicatedPageV2CardGap\":\"1.25rem\",\"showReferralSection\":true,\"cartWidgetRewardIcon\":\"\",\"hideEarnRuleSectionOnEmpty\":true,\"primaryDedicatedPageTextColor\":\"#000000\",\"showFAQSection\":true,\"showRangeForRedeemPoints\":false,\"dedicatedPageV2BorderRadius\":\"8px\",\"secondaryDedicatedPageSectionBackgroundColor\":\"#FFFFFF\",\"loyaltyPageMetaTitle\":\"\",\"applyDiscountCodeOnRedeem\":false,\"referralCustomRedirectUrl\":\"\",\"showWidgetScrollbar\":false,\"waysToEarnIcon\":\"\",\"vipTierBadgeSelector\":\"\",\"displayMethod\":\"TEXT_ICON\",\"hideFaqSection\":false,\"disableRuleCollapsible\":false,\"showEarnSection\":true,\"showTierName\":false,\"cartDrawerRedeemWidgetSelector\":\"\",\"checkoutRedeemLoginURL\":\"\",\"referralClaimGiftIcon\":\"\",\"widgetButtonLogoUrl\":\"\",\"disableLoyaltyBlocks\":false,\"hidePointsBalance\":false,\"descriptionCount\":500,\"exploreButtonCustomRedirect\":\"\",\"hideWidgetOnScroll\":false,\"customFontUrl\":\"\",\"hideWidgetLauncherOnMobile\":false,\"hideFreeProductDropdownProductTitle\":false,\"excludedPaths\":\"\/homepage,\/blogs\",\"showCartRedeemWidget\":false,\"customSignInLink\":\"\",\"referredCustomerRewardIcon\":\"\",\"enableAcquirePointsQuantitySelector\":false,\"showPoweredBy\":true,\"hideVipTierName\":false,\"showTransactionHistory\":true,\"waysToRedeemIcon\":\"\",\"secondaryDedicatedPageTextColor\":\"#4b5563\",\"customHtmlInject\":\"[]\",\"referringCustomerRewardIcon\":\"\",\"bodyTextColor\":\"#333333\"}","widgetButtonLogoUrl":"","showReferralSocialMedia":false,"referralSocialMediaInfo":null,"restrictedCustomersTag":"","blockWidgetOnPages":"","colorSettingsJson":"{\"popupLinksColor\":\"#2f5bd8\",\"popupHeaderColor\":\"#a4197a\",\"popupIconColor\":\"#1f2937\",\"acquirePointsBackgroundColor\":\"#eef4ff\",\"pointsBalanceBackgroundColor\":\"inherit\",\"pointsBalanceTextColor\":\"#1f2937\",\"widgetCounterBackgroundColor\":\"#a4197a\",\"popupButtonColor\":\"#a4197a\",\"popupTilesColor\":\"#f8fafc\",\"widgetBackgroundColor\":\"#a4197a\",\"notificationToastTextColor\":\"#a4197a\",\"widgetCounterTextColor\":\"#ffffff\",\"notificationToastBackgroundColor\":\"#feeeff\",\"popupTilesTextColor\":\"#1f2937\",\"popupButtonTextColor\":\"#ffffff\",\"widgetTextColor\":\"#ffffff\",\"acquirePointsTextColor\":\"#1e3a8a\"}","widgetType":"DEDICATED_PAGE","imageLinksJson":"{\"collectionDiscountRuleImage\":\"\",\"purchaseRuleImage\":\"\",\"buyProductFromCollectionRuleImage\":\"\",\"vipTierImage\":\"\",\"freeShippingRuleImage\":\"\",\"birthdayDiscountRuleImage\":\"\",\"referralBackgroundImage\":\"\",\"youtubeRuleImage\":\"\",\"referralReferenceImage\":\"\",\"birthdayRuleImage\":\"\",\"judgeMeReviewRuleImage\":\"\",\"pinterestRuleImage\":\"\",\"freeProductRuleImage\":\"\",\"productDiscountRuleImage\":\"\",\"faqIconImage\":\"\",\"looxIoReviewRuleImage\":\"\",\"stampedIoReviewRuleImage\":\"\",\"productReviewRuleImage\":\"\",\"discountRuleImage\":\"\",\"faqBackgroundImage\":\"\",\"tiktokRuleImage\":\"\",\"twitterRuleImage\":\"\",\"subscriptionRuleImage\":\"\",\"buyProductRuleImage\":\"\",\"createAccountRuleImage\":\"\",\"dynamicDiscountRuleImage\":\"\",\"visitShopRuleImage\":\"\",\"facebookRuleImage\":\"\",\"heroBackgroun
13773dImage\":\"\",\"instagramRuleImage\":\"\",\"okendoReviewRuleImage\":\"\",\"availableRewardsImage\":\"\"}","customerGreetingsIcon":null,"heroBackgroundImage":"","referralReferenceImage":"","referralBackgroundImage":"","purchaseRuleImage":"","subscriptionRuleImage":"","createAccountRuleImage":"","visitShopRuleImage":"","birthdayRuleImage":"","buyProductRuleImage":"","buyProductFromCollectionRuleImage":"","facebookRuleImage":"","pinterestRuleImage":"","instagramRuleImage":"","tiktokRuleImage":"","youtubeRuleImage":"","twitterRuleImage":"","stampedIoReviewRuleImage":"","looxIoReviewRuleImage":"","judgeMeReviewRuleImage":"","productReviewRuleImage":"","okendoReviewRuleImage":"","discountRuleImage":"","freeShippingRuleImage":"","freeProductRuleImage":"","productDiscountRuleImage":"","collectionDiscountRuleImage":"","dynamicDiscountRuleImage":"","birthdayDiscountRuleImage":"","availableRewardsImage":"","vipTierImage":"","faqBackgroundImage":"","showAcquirePoints":false,"acquirePointsSelector":null,"showPointsBalance":null,"pointsBalanceSelector":null,"showPoweredBy":true,"showWidgetScrollbar":false,"forceRedirectDedicatedPage":false,"historyDate":null,"historyActivityDetails":null,"historyPointsAdjustment":null,"historyStatus":null,"afterCopiedDiscountRedirectUrl":"","showVipTierBadge":false,"vipTierBadgeSelector":"","vipTierBadgeBackgroun
13773dColor":"inherit","vipTierBadgeTextColor":"#000000","faqIconImage":"","descriptionCount":500,"customHtmlInject":"[]","availablePoints":null,"showTransactionHistory":true,"showLoyaltyOptOut":false,"loyaltyOptoutActive":null,"loyaltyOptoutInactive":null,"createAccountLink":"","showReferralSection":true,"showRewardSection":true,"showRedeemSection":true,"showEarnSection":true,"showFAQSection":true,"showVIPSection":true,"showHowItWorksSection":false,"vipTierBenefits":null,"enrollLoyaltyProgramTitle":null,"enrollLoyaltyProgramDescription":null,"freeProductRewardAddToCart":null,"freeProductRewardAddedSuccessMessage":null,"enrolledSuccessMessage":null,"customFontUrl":"","visitedIcon":"","allowWidgetOnSpecificPages":"","referralRedirectUrl":"","showRangeForRedeemPoints":false,"hideAppstleLoaderIcon":false,"hideFreeProductDropdownProductTitle":false,"showToLoggedInCustomerOnly":false,"enableMetaTagForNoIndexing":false,"waysToEarnIcon":"","waysToRedeemIcon":"","loaderIcon":"","toastPosition":"bottom-center","widgetDateTimeFormat":"MMM D, YYYY, h:mm A","toastErrorMsg":null,"primaryDedicatedPageBackgroundColor":"#a4197a","secondaryDedicatedPageBackgroundColor":"#ffffff","titleCount":60,"programUpdateMessage":null,"primaryDedicatedPageSectionBackgroundColor":"#feeeff","secondaryDedicatedPageSectionBackgroundColor":"#FFFFFF","primaryDedicatedPageV2SectionBackgroundColor":null,"secondaryDedicatedPageV2SectionBackgroundColor":null,"primaryDedicatedPageV2BackgroundColor":"#a4197a","secondaryDedicatedPageV2BackgroundColor":null,"primaryDedicatedPageV2TextColor":null,"secondaryDedicatedPageV2TextColor":null,"dedicatedPageV2BorderColor":null,"dedicatedPageV2BorderRadius":"8px","dedicatedPageV2CardGap":"1.25rem","dedicatedPageV2SectionPadding":null,"refreshOnAddToCart":false,"showTierName":false,"customSignInLink":"","checkoutRedeemLoginDescription":null,"checkoutRedeemLoginURL":"","checkoutTotalAcquirePoints":null,"checkoutTotalAcquirePointsDescription":null,"reachVipMileStoneType":"TOTAL_AMOUNT","showCustomerHistoryDescriptionToolTip":false,"checkoutTotalStoreCreditAcquirePoints":null,"hideRulesForLoggedOutCustomer":false,"hideCheckoutBlockLoggedOutCustomers":false,"checkoutAllowedCustomerTags":"","checkoutRe
13773strictCustomerTags":"","hideWidgetLauncherOnMobile":false,"referringCustomerRewardIcon":"","referredCustomerRewardIcon":"","referralClaimGiftIcon":"","hideToastNotification":false,"dateLocalFormat":"DEFAULT","manageLoyaltyButtonUrl":"","rewardsDetailsExpireDate":null,"hideEarnRuleSectionOnEmpty":true,"hideRedeemRuleSectionOnEmpty":true,"hideStoreCreditsBalance":true,"hidePointsBalance":false,"popupButtonHoverColor":"#b4197a","headerTextColor":"#ffffff","subheadingTextColor":"#ffffff","bodyTextColor":"#333333","footerTextColor":"#757575","hideWidgetOnScroll":false,"loyaltyPageMetaTitle":"","loyaltyPageMetaDescription":"","hideExpirationDate":false,"disableLoyaltyBlocks":false,"loadScriptOnlyOnDedicatedPage":false,"excludedPaths":"\/homepage,\/blogs","hideFaqSection":false,"enableAcquirePointsQuantitySelector":false,"showCartRedeemWidget":false,"cartWidgetSelector":"","cartDrawerRedeemWidgetSelector":"","cartWidgetPlacement":"BEFORE","cartWidgetRewardIcon":"","cartDrawerWidgetPlacement":"BEFORE","dedicatedPageType":"DEDICATED_PAGE_V2","secondaryDedicatedPageTextColor":"#4b5563","primaryDedicatedPageTextColor":"#000000","displayMethod":"TEXT_ICON","launcherDataType":"POINTS","widgetBackgroundImage":"","hideVipTierName":false,"enableEnhancedV2Styling":true,"applyDiscountCodeOnRedeem":false,"dedicatedPageSectionOrders":"[\n  {\n    \"i
13773d\": \"hero\",\n    \"title\": \"Hero\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"howItWorks\",\n    \"title\": \"How It Works\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"rewards\",\n    \"title\": \"Rewards\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"waysToEarn\",\n    \"title\": \"Ways To Earn\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"waysToRedeem\",\n    \"title\": \"Ways To Redeem\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"vipProgram\",\n    \"title\": \"Vip Program\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"referralProgram\",\n    \"title\": \"Referral Program\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"transactionHistory\",\n    \"title\": \"Transaction History\",\n    \"visible\": true\n  },\n  {\n    \"id\": \"faqs\",\n    \"title\": \"Faqs\",\n    \"visible\": true\n  }\n]","disableRuleCollapsible":false,"referralCustomRedirectUrl":"","selectApplyRewardsDefault":false,"exploreButtonCustomRedirect":"","heroBackgroundMobileImage":null,"loggedOutFlagAcquirePoints":false,"taxesIncluded":false,"taxShipping":false,"awardPointsOnAmountPaidAfterStoreCredit":true};
13774    
13775
13776    
13777    _ALConfig.referralLoyalty = {"referralType":"PURCHASE","referralRestrictedCustomerTags":"","referralGet":"Get $25.00 discount on any product","referredGet":"Get 25% discount on any product","referralAllowedCustomerTags":""};
13778    
13779
13780    
13781    
13782    _ALConfig.assetRev = "8b2317fe74421f010f6ff5dde4b2e2db";
13783    
13784    _ALConfig.storeFrontApiVersion = "2026-01";
13785    _ALConfig.__appstleLoyaltyNativeFetch = window.fetch.bind(window);
13786
13787    
13788    _ALConfig.pointsExpirationSetting = {"expirationInterval":3,"expirationIntervalType":"YEAR"};
13789    
13790
13791    
13792
13793
13794    
13795    _ALConfig.showStoreCreditRewards = false;
13796    
13797
13798    
13799    _ALConfig.customerId = null;
13800    _ALConfig.customerName = '';
13801    _ALConfig.customerEmail = null;
13802    _ALConfig.customerStoreCreditBalance = null;
13803    _ALConfig.customerStoreCreditCurrency = null;
13804    _ALConfig.customerTags = [];
13805    _ALConfig.customerLoyalty = null;
13806    
13807
13808    
13809    _ALConfig.shop = "rocky-mountain-oils.myshopify.com";
13810    _ALConfig.shopMoneyFormat = "${{amount}}";
13811    _ALConfig.shopMoneyFormatWithCurrencyFormat = "${{amount}} USD";
13812    
13813
13814    
13815    
13816        _ALConfig.enableInactiveCustomer = true;
13817    
13818
13819    
13820    _ALConfig.allowCustomerOptIn = false;
13821    
13822
13823    
13824    _ALConfig.enableDiscountToApplyAutomatically = true;
13825    
13826
13827    
13828        _ALConfig.hasDedicatedPageAccess = true;
13829    
13830
13831    
13832        _ALConfig.themeEditorMode = false;
13833    
13834
13835    
13836    _ALConfig.shop_labels = {"popupRewardsDetailsHeadingText":"Your Rewards","rewardsExpirationLabel":"{{day}}d","acquirePointsLabel":"Earn {{totalPoints}} points when you buy this item","checkoutPendingPointsLabel":"with {{pendingPoints}} pending points.","homeSignup":"Sign up to \u003cstrong\u003e{{site_name}}'s store \u003c\/strong\u003e to start earning rewards","vipSpentAmountLabel":"Spend {{remainingAmount}} more this year","minimumPointsForRedeemText":"Minimum {{points}} points required for point redemption","checkoutAcquiredPointsLabel":"You have acquired {{acquiredPoints}} points from this order","cartWidgetLoginMessageLabel":"Log in to redeem your points for rewards.","popupDiscountCodeGenerated":"Use the below coupon to get your discount.","checkoutDiscountCodeApplyButtonLabel":"Apply","exploreLabel":"Explore","loyaltyPageHeroV2Heading":"Exclusive Rewards for Our Valued Members","availablePoints":"Available points {{ points }}","dedicatedPageUnavailableLabel":"Oops! This page is not available.","otherRulesRedirectActionLabel":"Claim","birthdayDayPlaceholderLabel":"Day","referralLinkSentDescription":"Your referral link has been sent","currentVipTierBadgeLabel":"You are a {{current_tier}} member","checkoutAvailableRewardsLabel":"Your Rewards","noteHeadingLabel":"Note","popupCopiedDiscount":"Applied to the Cart","referralFriendGetText":"They","cartWidgetRewardsButtonLabel":"Rewards","customerReferralClaimedStatus":"Claimed","popupReferralContentText":"Give your friends a reward and claim your own when they make a purchase.","storeCreditApplyGuideLabel":"Your Store Credit is ready at checkout—make sure the 'Apply store credit' checkbox is checked and verify the amount you're using.","storeCreditBalanceLabel":"Your Store Credits","faq":"[{\"title\":\"What is this? \",\"content\":\"\u003cp\u003eWe’re excited to show our appreciation through our exclusive rewards program! By creating an account, you’ll earn points for various activities on our site, such as referrals and purchases. These points can be redeemed for discounts on future purchases—the more points you collect, the more you save!\u003c\/p\u003e\"},{\"title\":\"Who can join?\",\"content\":\"\u003cp\u003eAnyone with an account is automatically enrolled in the program.\u003c\/p\u003e\"},{\"title\":\"How do I earn points?\",\"content\":\"\u003cp\u003eYou can earn points through various activities, such as referring friends and making purchases. To explore all the ways you can earn points, click on the *Ways to Earn* tab in the menu.\u003c\/p\u003e\"},{\"title\":\"How do I redeem my points?\",\"content\":\"\u003cp\u003eSelect the *Ways to Redeem* tab. Here, you'll find a list of all the rewards we offer. If you have sufficient points, you can redeem them for a reward.\u003c\/p\u003e\"},{\"title\":\"Is there a limit to the number of points I can earn?\",\"content\":\"\u003cp\u003eNo. Go ahead and earn as many as you can.\u003c\/p\u003e\"},{\"title\":\"What do the 'approved', 'pending' and 'cancelled' statuses mean?\",\"content\":\"\u003cp\u003eApproved: These points can be redeemed on rewards immediately.\u003c\/p\u003e\u003cp\u003ePending: These points need to be verified before you can redeem them. This typically applies to purchases and referrals.\u003c\/p\u003e\u003cp\u003eCancelled: These points will not be added to your account. For example, this will happen if you cancel a purchase (the points will change from pending to cancelled)\u003c\/p\u003e\"},{\"title\":\"Do my points expire?\",\"content\":\"\u003cp\u003eYour points stay active as long as you keep earning. Points expire only if your account goes 3 years without earning any new points. Each time you earn points, whether from a purchase or another reward activity, the 3-year clock resets for your entire balance.\u003c\/p\u003e\"},{\"title\":\"How do VIP tiers work?\",\"content\":\"\u003cp\u003eTiers are based on how much you spend each calendar year (January 1 through December 31). As soon as your spending reaches $125, you're upgraded to Premium, and at $300 you're upgraded to Elite. Upgrades happen right away, with no waiting period.\u003c\/p\u003e\u003cp\u003eOnce you reach a tier, you keep it for a full 12 months. At the end of those 12 months, we review your spending for the current calendar year so far and place you in the tier that matches it.\u003c\/p\u003e\u003cp\u003eFor example, if you reach $125 in May, you'll move to Premium immediately and keep it until the following May. At that point, if you've spent at least $125 since January, you'll stay in Premium. If you haven't reached $125 yet, you'll return to Preferred and can move back up as soon as you hit $125 that year.\u003c\/p\u003e\"}]","dynamicPointsLabel":"Enter Points","loyaltyOptOutLabel":"Loyalty Program Updated","enrollLoyaltyProgramTitle":"Enroll Loyalty Program","howItWorksTitleDescription":"","rewardDetail
13836sHelpLabel":"Use the below coupon to get your discount","popupCopyDiscount":"Apply Code","howItWorksStep2Description":"Complete these activities to collect points","vipStatusLabel":"VIP Status","pendingStatusLabel":"Pending","checkoutTotalStoreCreditAcquirePoints":"Complete this purchase to earn up to {{totalStoreCreditPoints}} store credits.","acquirePointsLoggedOutText":"Loyalty Members earn {{totalPoints}} points when they purchase this item.","sendEmailHeadingText":"Send Referral Link","enrollLoyaltyProgramActionLabel":"Enroll Now","freeProductRewardAddedSuccessMessage":"Added to cart — your discount applies at checkout","birthdayYearPlaceholderLabel":"Year","cartWidgetLoginLinkLabel":"Log in","popupFAQHeadingText":"FAQ's","widgetTitle":"Loyalty Points","noCustomerHistoryDescriptionLabel":"Transactions will appear here after points are earned or redeemed.","claimReferralEmailFieldHintText":"Note: To redeem your reward, please create an account using the same email address.","checkoutToggleRedeemButtonLabel":"Redeem Rewards","rejectedStatusLabel":"Rejected","checkoutViewMoreDiscountCodeButtonLabel":"View More","perTransactionLimitExceedText":"Per transaction limit exceed. Cannot redeem more then {{shop_redeem_limit}} points","pointsBalanceLabel":"Your point balance: {{points}}","vipTierBenefits":"Benefits","popupRedeemRewardsHeadingText":"Redeem Rewards","howItWorksStep3Count":"03","transactionHistoryPaginationLabel":"Showing {{startItem}} to {{endItem}} of {{totalItems}} entries","vipRewardLabel":"Rewards","sendEmailButtonText":"Send Email","cartWidgetAvailableBalanceLabel":"You have: {{available_points}} points","checkoutRedeemLabel":"Redeem your Points","socialAlreadyClaimedLabel":"Already Claimed!","referredByText":"Referred by someone","loyaltyPageMetaTitle":"","birthdayActionLabel":"Submit","rewardDetailsButtonLabel":"Reward Details","authenticationLabel":"You need to sign in to access this feature","notEligibleLabel":"You are not eligible for this loyalty program.","popupReferralTitleText":"Referrals","popupEarnRewardsHeadingText":"Earn Rewards","popupAvailableRewardsContentText":"You have {{rewards}} rewards available","claimedStatusLabel":"Claimed","redeemActionLabel":"Redeem","checkoutRedeemLoginLabel":"Log in","createAccountLabel":"Join now","rewardDetailsTitleLabel":"Spend {{spend_amount}} and , get {{discount_amount}} {{discount_type}} discount","howItWorksTitle":"How it works","claimGiftHeaderText":"Claim Your Gift","yourReferralsHeadingLabel":"Your Referrals","noRefferralAvailableText":"No Referrals reward available","popupCardActionText":"Sign In","popupFAQAskedQuestionHeadingText":"Frequently Asked Questions","popupEarnTilesText":"Ways to earn","minimumAmountSpentForRedeemText":"Minimum {{amount_spent}} spent amount required for point redemption","birthdayUpdatedToastLabel":"Birthday Updated","historyPointsAdjustment":"Points\/Credits","referButtonLabel":"Refer Now","claimReferralGiftButtonText":"Claim Your Gift","historyActivityDetails":"Activity Details","widgetCopiedLabel":"Copied","sentDiscountCodeToEmailText":"Referral invitation accepted.","referralCustomerGetText":"You","sendRefferralLink":"Send Referral Link","howItWorksStep2Count":"02","popupRemainingPointsHeadingText":"Your points","referralLinkSentLabel":"Referral Link Sent","birthdayTitleLabel":"Enter your birthday","checkoutSelectRedeemRuleDropdownLabel":"Select Redeem Rule","noRedeemRulesLabel":"No Redeem Rules Found","minimumOrderCountForRedeemText":"Minimum {{order_count}} orders required for point redemption","enrolledSuccessMessage":"Enrolled Successfully","customerHistoryLabel":"Transaction history","redeemLimitExceedText":"Redeem Limit Exceed. Cannot redeem more then {{redeem_limit}} times per {{reward_interval}}","widgetDateTimeFormat":"MMM D, YYYY, h:mm A","pointExpirationDateLabel":"Expires: {{expiration_date}}","popupRedeemTilesText":"Ways to redeem","loyaltyOptOutSettingsLabel":"Settings","alreadyHaveAnAccountLabel":"Already have an account?","checkoutTotalAcquirePointsDescription":"Use your points to redeem a discount on your next order.","birthdayMonthPlaceholderL
13836abel":"Month","discountCodeLabel":"Discount Code","alreadyReferredErrorLabel":"Already have an account or already referred.","checkoutEmptyRewardsLabel":"You don't have any rewards available.","popupRewardPointContentText":"Earn points when you shop, then redeem them for rewards.","chooseAnOptionLabel":"Choose an Option","excludeCustomerLabel":"Exclude yourself from the Loyalty program.","noEarnRulesLabel":"No Earn Rules Found","emailValidationLabel":"Please provide a valid email","historyDate":"Date","popupAvailableRewardsHeadingText":"Your Rewards","customerHistoryDescriptionLabel":"See the list of your points\/credits earned and redeemed activity.","totalAcquiredStoreCreditsLabel":"You have earned {{currency}}{{totalStoreCreditPoints}} store credits on this order","claimReferralEmailFieldText":"Enter your email","subscribeRuleRedirectActionLabel":"Subscribe","loyaltyPageMetaDescription":"","claimRewardButtonLabel":"Claim Reward","checkoutRedeemLoginDescription":"to check your points balance and explore the exciting rewards available for redemption.","howItWorksStep2Title":"Earn points","loyaltyStatusLabel":"Loyalty Status","vipEarnPointLabel":"Earn {{points}} Points","vipCurrentTierLabel":"Your Current Tier","storeOnSaleForRedeemText":"Store on sale, to redeem point please try after {{shop_on_sale_end_date}}","popupCardHeadingText":"Start earning rewards","loyaltyPageHeroV2SubHeading":"Become a member and earn points, store credits \u0026 exclusive rewards every time you shop.","checkoutToggleAvailableRewardsButtonLabel":"Available Discounts","manageLoyaltyButtonLabel":"Manage Loyalty","howItWorksStep1Title":"Create an account","shareReferralLinkLabel":"Share Your Unique Link","popupWelcomeText":"Welcome {{customer_first_name}}","referYourFriendContentText":"When friends and family check out using the referral link below, they receive {{referred_reward}} and you receive a {{referral_reward}} reward","vipAchievableTierLabel":"{{milestone_type}} {{milestone}} to reach {{achievable_tier}}","shareSocialMediaLabel":"Share directly on your favorite platform:","homeGreetings":"Welcome, {{customer_first_name}}","loyaltyOptOutActiveLabel":"Loyalty program {{active_status}}.","dailyLimitExceedText":"Daily limit exceed. Cannot redeem more than {{redeem_limit}} points per day","popupCardContentText":"Sign in or create an account to start earning rewards.","rewardsDetailsExpireDate":"Expires at: {{expire_date}}","enrollLoyaltyProgramDescription":"Enroll our loyalty program to get rewards and incentives.","loyaltyPageHeroV2AuthenticatedHeading":"Hi, {{customer_first_name}}, you have {{points}} points","statusHeadingLabel":"Status","minimumRedeemRequiredPointsLabel":"","vipTierDetailsText":"The more you shop, the more you earn. Climb the tiers to earn more points per dollar.\u003cbr\u003e\u003csmall\u003eQualifying spend resets every January 1. Your tier status lasts a full year from the day you earn it.\u003c\/small\u003e","membershipRewardTitleLabel":"Appstle Membership","howItWorksStep1Description":"Become a member to receive rewards","birthdayProfileLabel":"Your Birthday","historyStatus":"Status","approvedStatusLabel":"Approved","discountAppliedLabel":"Please copy the discount and proceed to checkout and the discount will be applied automatically","acquireStoreCreditLabel":"Earn {{totalStoreCreditPoints}} store credits when you buy this item","toastErrorMsg":"Something went wrong","includeCustomerLabel":"Include yourself in the Loyalty program to earn points.","checkThankYouAcquiredPointsHeadingLabel":"Congratulations","popupCommunityContentText":"Earn rewards every time you shop.","customerReferralPendingStatus":"Pending","referredEmailHeadingLabel":"Email","currentVipTierText":"Your Current Tier","popupRewardPointTitleText":"Earn Rewards","socialMediaActionLabel":"Claim","howItWorksStep3Description":"Exchange points for exciting discounts","noCustomerHistoryLabel":"No History Found","freeProductRewardAddToCart":"Add to cart","creditRewardDetailsHelpLabel":"Apply these credits on the order page to get a discount on your purchase!","shareReferralEmailFieldText":"Enter your friend's email","howItWorksStep1Count":"01","vipTierTitleLabel":"VIP","referralCompletedText":"{{total_count}} referrals completed","discountAppliedAtCheckoutMessage":"Your discount will be applied at checkout — the cart may show the full price.","customerReferralRecurringStatus":"Recurring","reviewRuleRedirectActionLabel":"Review","referYourFriendTitleText":"Refer your friends","popupEarnPointDescriptionText":"Earn more points, and turn those points into awesome rewards!","popupCommunityHeadingText":"Rocky Mountain Oils","recurringStatusLabel":"Recurring","claimReferralGiftDescriptionText":"Someone has sent you a gift. Enter your email to claim it now.","programUpdateMessage":"Process initiated. Please wait for the page to reload","dynamicPointsHelpText":"Spend {{points}} points to get {{discount}} discount.","totalAcquiredPointsLabel":"You have earned {{totalAcquiredPoints}} points on this order","howItWorksStep3Title":"Redeem points","checkoutTotalAcquirePoints":"Complete this purchase to earn up to {{totalAcquiredPoints}} points"};
13837    
13838
13839    var loyaltyGlobalStyles = `<style>
13840body {
13841margin: 0
13842}
13843.appstle-loyalty-hidden {
13844display: none !important;
13845visibility: hidden !important;
13846}
13847</style>`
13848    document.querySelector('body').insertAdjacentHTML('beforeend', loyaltyGlobalStyles);
13849
13850    window.addEventListener('message', appstleLoyaltyIframeListener, false);
13851    window.addEventListener('kp_user_logged_out', function() { window.location.reload(); });
13852    const removeFirstSlashFromURL = (url) => url ? url?.replace(/\\\//g, "/")?.replace(/^\/+/, "") : url;
13853
13854
13855    function applyDiscount(discountCode, shouldReload = false) {
13856        const encodedDiscountCode = encodeURIComponent(discountCode?.trim());
13857        const discountURL = `${location?.origin}/discount/${encodedDiscountCode}`;
13858        fetch(discountURL).then(res => {
13859            if (res.ok) {
13860                console.log('Discount Code Applied');
13861                const discountDetails = window?._ALConfig?.customerLoyalty?.rewards?.find((item) => item?.discountCode === discountCode) || null;
13862                if (discountCode && discountDetails) {
13863                    const discountData = {discountCode: discountCode || discountDetails?.discountCode, description: discountDetails?.description, customerId: discountDetails?.customerId}
13864                    document.dispatchEvent(new CustomEvent('AppstleLoyalty:AppliedDiscountCode', { detail: discountData }));
13865                    window.dispatchEvent(new CustomEvent('AppstleLoyalty:AppliedDiscountCode', { detail: discountData }));
13866                }
13867                if (shouldReload) {
13868                    window.location.reload();
13869                }
13870            } else {
13871                console.log('Discount Code NOT Applied');
13872            }
13873        });
13874    }
13875    const applyDiscountAutomatically = (discountCode, shouldReload = false) => {
13876        (async () => {
13877            const encodedDiscountCode = encodeURIComponent(discountCode?.trim());
13878            const discountURL = `${location.origin}/checkout?discount=${encodedDiscountCode}`;
13879            const cartURL = `${location.origin}/cart.js`;
13880            try {
13881                const discountRes = await fetch(discountURL);
13882                if(discountRes) {
13883                    const cartRes = await fetch(cartURL);
13884                    if (!cartRes.ok) return;
13885                    const cart = await cartRes.json();
13886                    const discount_codes = cart && Array.isArray(cart?.['discount_codes']) ? cart?.['discount_codes'] : [];
13887                    const hasDiscount = discount_codes.some(d => (d?.code || "").toLowerCase() === String(discountCode).toLowerCase());
13888                    if (hasDiscount && shouldReload) {
13889                        window.location.reload();
13890                    }
13891                }
13892            } catch (err) {
13893                console.error("Error applying discount:", err);
13894            }
13895        })();
13896    };
13897
13898    const unescapeWidgetString = (str) => {
13899        if (!str || typeof str !== 'string') return '';
13900        return str?.replace(/\\\//g, '/')?.replace(/\\\\/g, '\\');
13901    };
13902    // Resolves a market-aware account URL. Prefers the routes published above so the customer keeps
13903    // their market/language prefix; the shop root fallback keeps that prefix too when a single route
13904    // entry is blank. Safe to assign to location.href as-is - with new customer accounts Shopify
13905    // returns an absolute URL here, so never prefix an origin.
13906    const loyaltyAccountRoute = (key, fallbackPath) => {
13907        const route = _ALConfig?.routes?.[key];
13908        if (route) return route;
13909        const shopRoot = _ALConfig?.routes?.root_url || window?.Shopify?.routes?.root || '/';
13910        return (shopRoot?.replace(/\/+$/, '') ?? '') + fallbackPath;
13911    };
13912
13913    // Shopify's /customer_authentication/login answers 400 Bad Request unless return_to is a
13914    // store-relative path with one leading slash, so coerce `return_to=apps/loyalty`,
13915    // `return_to=collections/all` or a same-store absolute URL into that shape.
13916    const normalizeLoyaltyReturnTo = (link) => {
13917        const match = /([?&]return_to=)([^&#]*)/i.exec(link || '');
13918        // Only Shopify's own login route on this store - a third-party login app may legitimately want an absolute return_to.
13919        if (!match || !/(^|\/)customer_authentication\//i.test(link.slice(0, match.index))) return link;
13920        if (/^(https?:)?\/\//i.test(link)) {
13921            try {
13922                if (new URL(link, window.location.origin).host !== window.location.host) return link;
13923            } catch (e) {
13924                return link;
13925            }
13926        }
13927        let value = match[2];
13928        try {
13929            for (let i = 0; i < 2 && /%[0-9a-f]{2}/i.test(value); i++) value = decodeURIComponent(value);
13930        } catch (e) {
13931            return link;
13932        }
13933        value = value.trim();
13934        if (/^(https?:)?\/\//i.test(value)) {
13935            try {
13936                const parsed = new URL(value, window.location.origin);
13937                if (parsed.host !== window.location.host) return link;
13938                value = parsed.pathname + parsed.search + parsed.hash;
13939            } catch (e) {
13940                return link;
13941            }
13942        }
13943        value = '/' + value.replace(/^\/+/, '');
13944        return link.slice(0, match.index) + match[1] + encodeURIComponent(value) + link.slice(match.index + match[0].length);
13945    };
13946
13947    const formatUrlByLoyalty = (link) => {
13948        if (!link) return '';
13949        const decodedLink = decodeURIComponent(link);
13950        const loyaltyPagePath = '/' + (_ALConfig?.hasDedicatedPageAccess ? _ALConfig?.proxy_path_prefix || 'apps/loyalty' : '');
13951        let l = decodedLink?.replace("{{proxy_path_prefix}}", loyaltyPagePath)?.trim()?.replace(/\\\//g, '/')?.replace(/^\/+/, '') || '';
13952        l = normalizeLoyaltyReturnTo(l?.replace(/([^:]\/)\/+/g, '$1') ?? '');
13953        if (/^(https?:\/\/|\/\/|www\.)/i.test(l)) {
13954            return /^www\./i.test(l) ? 'https://' + l : l;
13955        }
13956        const shopRoot = window?.Shopify?.routes?.root ?? '/';
13957        return (shopRoot?.replace(/\/+$/, '') ?? '') + '/' + l;
13958    };
13959
13960    function isAppstleLoyaltyMessage(event) {
13961        if (event.origin !== window.location.origin) return false;
13962        return event.source === window || ['appstle_loyalty_iframe', 'appstle_loyalty_cart_widget_iframe'].some(id => {
13963            const frame = document.getElementById(id);
13964            return frame && event.source === frame.contentWindow;
13965        });
13966    }
13967
13968    const loyaltyLabelHtmlPolicy = {
13969        ALLOWED_TAGS: ['a', 'b', 'blockquote', 'br', 'button', 'center', 'div', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'li', 'ol', 'p', 's', 'small', 'span', 'strong', 'sub', 'sup', 'u', 'ul'],
13970        ALLOWED_ATTR: ['alt', 'class', 'height', 'href', 'loading', 'rel', 'src', 'style', 'target', 'title', 'width'],
13971        ALLOW_DATA_ATTR: false,
13972        ALLOW_ARIA_ATTR: false
13973    };
13974    const escapeLoyaltyAttribute = value => String(value ?? '').replace(/[&<>"']/g, char => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[char]));
13975    const loyaltyNavigationUrl = value => {
13976        if (typeof value !== 'string' || !value.trim()) return null;
13977        try {
13978            const url = new URL(value, window.location.href);
13979            return ['https:', 'http:'].includes(url.protocol) && !url.username && !url.password ? url : null;
13980        } catch {
13981            return null;
13982        }
13983    };
13984    // Follow the Bundles rich-label declaration filter, preserving native storefront layout
13985    // (relative offsets, negative margins and transforms) that the merchant already configures.
13986    const sanitizeLoyaltyLabelStyle = styleText => {
13987        const allowedProperty = /^(?:color|opacity|visibility|cursor|display|order|columns|aspect-ratio|box-shadow|box-sizing|line-height|letter-spacing|white-space|vertical-align|accent-color|caret-color|appearance|width|height|position|top|right|bottom|left|transform|(?:background|border(?!-image)|outline|font|text|margin|padding|flex|align|justify|place|grid|gap|row-gap|column|overflow|transition|list-style|word|min|max|object)(?:-[a-z]+)*)$/;
13988        const unsafeValue = /[{}<>\\]|\b(?:url|attr|env|image|image-set|element|src|expression)\s*\(/i;
13989        return String(styleText ?? '').split(';').filter(declaration => {
13990            const separator = declaration.indexOf(':');
13991            if (separator < 0) return false;
13992            const property = declaration.slice(0, separator).trim().toLowerCase();
13993            const value = declaration.slice(separator + 1).trim();
13994            return (allowedProperty.test(property) || /^--[a-z0-9_-]+$/i.test(property)) && value && !unsafeValue.test(value)
13995                && (property !== 'position' || /^(?:relative|static)$/i.test(value));
13996        }).join(';');
13997    };
13998    const sanitizeLoyaltyLabel = (value, purifier, allowLinks = true) => {
13999        if (!purifier) return escapeLoyaltyAttribute(value);
14000        const fragment = purifier.sanitize(String(value ?? ''), {
14001            ...loyaltyLabelHtmlPolicy,
14002            FORBID_TAGS: allowLinks ? [] : ['a', 'button'],
14003            RETURN_DOM_FRAGMENT: true
14004        });
14005        fragment.querySelectorAll('[href], [src]').forEach(element => {
14006            for (const attribute of ['href', 'src']) {
14007                if (element.hasAttribute(attribute) && !loyaltyNavigationUrl(element.getAttribute(attribute))) element.removeAttribute(attribute);
14008            }
14009        });
14010        fragment.querySelectorAll('[style]').forEach(element => {
14011            const style = sanitizeLoyaltyLabelStyle(element.getAttribute('style'));
14012            if (style) element.setAttribute('style', style);
14013            else element.removeAttribute('style');
14014        });
14015        fragment.querySelectorAll('[target]').forEach(element => {
14016            if (element.tagName !== 'A' || !['_blank', '_self'].includes(element.getAttribute('target'))) element.removeAttribute('target');
14017            else if (element.getAttribute('target') === '_blank') {
14018                const rel = new Set((element.getAttribute('rel') || '').split(/\s+/).filter(Boolean));
14019                rel.add('noopener');
14020                element.setAttribute('rel', [...rel].join(' '));
14021            }
14022        });
14023        fragment.querySelectorAll('button').forEach(button => button.setAttribute('type', 'button'));
14024        const container = document.createElement('div');
14025        container.appendChild(fragment);
14026        return container.innerHTML;
14027    };
14028    let loyaltyHtmlSanitizer;
14029    window.appstleLoyaltyLoadSanitizer = () => loyaltyHtmlSanitizer ||= new Promise(resolve => {
14030        if (window.DOMPurify) return resolve(window.DOMPurify);
14031        const script = document.createElement('script');
14032        script.src = 'https://cdn.jsdelivr.net/npm/[email protected]/dist/purify.min.js';
14033        script.integrity = 'sha384-46dPGH1XlTmj7bc50bqLjTdORXs/3EP2QpA/6EWbelYWOY9VGp+87RT61S3Mcslb';
14034        script.crossOrigin = 'anonymous';
14035        const settle = purifier => {
14036            clearTimeout(timeout);
14037            resolve(purifier);
14038        };
14039        const timeout = setTimeout(() => settle(null), 8000);
14040        script.onload = () => settle(window.DOMPurify);
14041        script.onerror = () => settle(null);
14042        document.head.appendChild(script);
14043    });
14044
14045    function appstleLoyaltyIframeListener(event) {
14046        if (!isAppstleLoyaltyMessage(event)) return;
14047        const redirect = (link, fallback) => {
14048            try {
14049                const destination = link ? formatUrlByLoyalty(link) : fallback;
14050                const url = new URL(destination, window.location.origin);
14051                if (!['http:', 'https:'].includes(url.protocol) || url.username || url.password) return;
14052                window.location.href = destination;
14053            } catch (e) {}
14054        };
14055        if (event.data === 'appstle_loyalty_message_to_redirect_to_account') {
14056            if (!_ALConfig?.widget_setting?.customSignInLink && typeof kpHandleLogin === 'function') {
14057                kpHandleLogin(window.location.href);
14058            } else {
14059                redirect(_ALConfig?.widget_setting?.customSignInLink, loyaltyAccountRoute('account_url', '/account'));
14060            }
14061        } else if (event.data === 'appstle_message_to_redirect_to_signup') {
14062            if (typeof kpHandleLogin === 'function') {
14063                kpHandleLogin(window.location.href);
14064            } else {
14065                redirect(null, loyaltyAccountRoute('account_register_url', '/account/register'));
14066            }
14067        } else if (event?.data && event?.data?.type === 'appstle_message_to_redirect_to_after_copied_discount_redirect_url' && typeof event?.data?.value === 'string') {
14068            try {
14069                const redirectUrl = new URL(event.data.value, window.location.origin);
14070                if (redirectUrl.origin !== window.location.origin || !['http:', 'https:'].includes(redirectUrl.protocol) || redirectUrl.username || redirectUrl.password) return;
14071                window.location.href = redirectUrl.href;
14072            } catch (e) {
14073                return;
14074            }
14075        } else if (event.data === 'appstle_message_to_redirect_to_custom_url') {
14076            redirect(_ALConfig?.widget_setting?.createAccountLink, loyaltyAccountRoute('account_register_url', '/account/register'));
14077        } else if (typeof event.data === 'string') {
14078            const parts = event.data.split('|');
14079            if (parts.length !== 2 || !parts[1].trim()) return;
14080            const [command, discountCode] = parts;
14081            if (command === 'appstle_message_to_apply_discount_and_reload') applyDiscount(discountCode, true);
14082            else if (command === 'appstle_message_to_apply_discount') applyDiscount(discountCode, false);
14083            else if (command === 'appstle_message_to_automatic_apply_discount_and_refresh') applyDiscountAutomatically(discountCode, true);
14084            else if (command === 'appstle_message_to_automatic_apply_discount') applyDiscountAutomatically(discountCode, false);
14085        }
14086    }
14087
14088    
14089    
14090    
14091    
14092    
14093    
14094    
14095
14096    
14097        <!-- BEGIN app snippet: loyalty-snackbar -->
14098    const snackBarStyles = `
14099#snackbar {
14100visibility: hidden;
14101min-width: 250px;
14102text-align: center;
14103position: fixed;
14104z-index: 9999999;
14105bottom: 90px;
14106font-size: 15px;
14107
14108}
14109
14110.left_snackbar {
14111left: 30px;
14112}
14113
14114#snackbar .icon {
14115display: flex
14116}
14117
14118#snackbar.show {
14119visibility: visible;
14120-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
14121animation: fadein 0.5s, fadeout 0.5s 2.5s;
14122}
14123
14124#snackbar .arrow_icon {
14125font-size: 25px;
14126}
14127
14128div.snackElement {
14129background-color: ${_ALConfig?.widget_setting?.notificationToastBackgroun
14129dColor || '#4EC33D'};
14130color: ${_ALConfig?.widget_setting?.notificationToastTextColor || 'white'};
14131border-radius: 16px;
14132width: 350px;
14133height: 94px;
14134position: relative;
14135overflow: hidden;
14136padding: 0;
14137margin-bottom: 10px;
14138text-align: left;
14139}
14140
14141svg.appstle-green-bubble {
14142position: absolute;
14143bottom: 0;
14144left: 0;
14145z-index: 0;
14146}
14147
14148svg.closeSnackBar {
14149position: absolute;
14150right: 16px;
14151top: 16px;
14152cursor: pointer;
14153}
14154
14155#snackbar .message {
14156padding-left: 74px;
14157font-size: 20px;
14158padding-top: 10px;
14159padding-right: 46px;
14160font-weight: bold;
14161}
14162
14163#snackbar .description {
14164width: 100%;
14165height: 100%;
14166display: flex;
14167justify-content: center;
14168align-items: center;
14169padding: 0 65px;
14170font-weight: 400;
14171line-height: 1;
14172font-size: 14px;
14173}
14174
14175@-webkit-keyframes fadein {
14176from {
14177bottom: 0;
14178opacity: 0;
14179}
14180to {
14181bottom: 30px;
14182opacity: 1;
14183}
14184}
14185
14186@keyframes fadein {
14187from {
14188bottom: 0;
14189opacity: 0;
14190}
14191to {
14192bottom: 30px;
14193opacity: 1;
14194}
14195}
14196
14197@-webkit-keyframes fadeout {
14198from {
14199bottom: 30px;
14200opacity: 1;
14201}
14202to {
14203bottom: 0;
14204opacity: 0;
14205}
14206}
14207
14208@keyframes fadeout {
14209from {
14210bottom: 30px;
14211opacity: 1;
14212}
14213to {
14214bottom: 0;
14215opacity: 0;
14216}
14217}
14218`;
14219    const snackBarStyle = document.createElement('style');
14220    snackBarStyle.textContent = snackBarStyles;
14221    document.body.appendChild(snackBarStyle);
14222    const snackBarHtml = `<div id="snackbar"></div>`;
14223    document.querySelector('body').insertAdjacentHTML('beforeend', snackBarHtml);
14224
14225    window.addEventListener('message', toasterEventListener, false);
14226
14227    function toasterEventListener(event) {
14228        if (!isAppstleLoyaltyMessage(event)) return;
14229        if (typeof event.data === 'string' && event.data.startsWith('appstle_message_for_notification|')) {
14230            var message = event?.data?.split('|')[1];
14231            showAppstleLoyaltyToaster(message);
14232        }
14233    }
14234
14235    let snackBarIndex = 0;
14236    async function showAppstleLoyaltyToaster(msg) {
14237        const purifier = await window.appstleLoyaltyLoadSanitizer();
14238        var snackBar = document.getElementById('snackbar');
14239        snackBar.classList.add('show');
14240        snackBar.insertAdjacentHTML('beforeend', `
14241        <div class="snackElement"  id="elem${snackBarIndex}">
14242            <div class="description"></div>
14243            <svg  class="appstle-green-bubble" xmlns="http://www.w3.org/2000/svg" width="50" height="45" viewBox="0 0 84 75" fill="none">
14244                <circle cx="20.6075" cy="9.29547" r="9.29547" fill="#2C7721"/>
14245                <circle cx="80.0986" cy="47.7167" r="3.71819" fill="#2C7721"/>
14246                <path d="M79.4438 11.0253C82.4971 18.5483 78.8737 27.1221 71.3507 30.1754C70.5208 30.5122 69.6781 30.7678 68.8315 30.9458C64.1204 31.9366 58.8591 33.2841 56.3382 37.3855C53.3951 42.1741 55.0036 48.3927 59.3496 51.9571C68.015 59.0642 75.0268 68.4315 79.3829 79.6187C92.9059 114.348 75.7149 153.464 40.9856 166.987C6.25636 180.51 -32.8599 163.319 -46.3829 128.59C-59.9059 93.8607 -42.7149 54.7445 -7.98562 41.2214C7.18342 35.3148 23.1894 35.2678 37.5341 39.9824C42.7299 41.69 48.6536 40.072 51.5174 35.4125L52.5823 33.68C54.694 30.2441 53.7172 25.8191 52.2006 22.0823C49.1473 14.5592 52.7707 5.98544 60.2937 2.93215C67.8167 -0.121136 76.3906 3.5023 79.4438 11.0253Z" fill="#2C7721"/>
14247            </svg>
14248            <svg class="closeSnackBar" onclick="closeSnackBar('elem${snackBarIndex}')" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none">
14249                <path d="M2.93934 18.9393C2.35355 19.5251 2.35355 20.4749 2.93934 21.0607C3.52513 21.6464 4.47487 21.6464 5.06066 21.0607L12 14.1213L18.9393 21.0607C19.5251 21.6465 20.4749 21.6465 21.0607 21.0607C21.6464 20.4749 21.6464 19.5251 21.0607 18.9393L14.1213 12L21.0607 5.06066C21.6464 4.47487 21.6464 3.52513 21.0607 2.93934C20.4749 2.35355 19.5251 2.35355 18.9393 2.93934L12 9.87868L5.06066 2.93934C4.47487 2.35356 3.52513 2.35356 2.93934 2.93934C2.35355 3.52513 2.35355 4.47488 2.93934 5.06066L9.87868 12L2.93934 18.9393Z" fill="white"/>
14250            </svg>
14251        </div>`);
14252        const description = document.getElementById(`elem${snackBarIndex}`).querySelector('.description');
14253        if (purifier) description.innerHTML = purifier.sanitize(String(msg), {
14254            ALLOWED_TAGS: ['a', 'b', 'br', 'em', 'i', 'span', 'strong'],
14255            ALLOWED_ATTR: ['href', 'title', 'class'],
14256        });
14257        else description.textContent = String(msg);
14258        const el = snackBarIndex;
14259        setTimeout(function() {
14260            if (document.getElementById(`elem${el}`))
14261                document.getElementById(`elem${el}`).remove();
14262        }, 5000);
14263        snackBarIndex++;
14264
14265    }
14266
14267    const closeSnackBar = (el) => document.getElementById(el).remove();
14268
14269    document.addEventListener('DOMContentLoaded', () => {
14270        
14271    });
14272
14273<!-- END app snippet -->
14274    
14275
14276    const executeLoyaltyWidget = () => {
14277        <!-- BEGIN app snippet: loyalty-widget -->
14278    const parseHtmlStringContent = (content) => {
14279        if (typeof content !== 'string') return content;
14280        try {
14281            const htmlDecoded = content?.replace(/\\\//g, '/');
14282            return JSON.parse(`"${htmlDecoded}"`);
14283        } catch (error) {
14284            console.error('Error parsing content:', error);
14285            return content;
14286        }
14287    };
14288
14289    const formatNumberByPointRoundType = num => {
14290        if (typeof num !== 'number') return num;
14291        const roundType = _ALConfig?.pointRoundType || "NO_ROUND";
14292        const rounded = roundType === 'ROUND_UP' ? Math.ceil(num) : roundType === 'ROUND_DOWN' ? Math.floor(num) : num;
14293        return (Number.isInteger(rounded) || rounded % 1 === 0) ? rounded.toFixed(0) : rounded.toFixed(2);
14294    };
14295
14296    const formatStoreCreditAmount = value => {
14297        try {
14298            const num = Number(value);
14299            const safe = Number.isFinite(num) ? num : 0;
14300            const format = (_ALConfig?.shopMoneyFormat || '')?.replace(/&lt;/g, '<')?.replace(/&gt;/g, '>')?.replace(/<[^>]*>/g, '');
14301            const tokenMatch = String(format)?.match?.(/\{\{\s*(amount[a-z_]*)\s*\}\}/i);
14302            const token = (tokenMatch?.[1] || 'amount')?.toLowerCase?.() || 'amount';
14303            const decimals = token?.includes?.('no_decimals') ? 0 : 2;
14304            let thousands = ',', decimal = '.';
14305            if (token?.includes?.('comma_separator')) { thousands = '.'; decimal = ','; }
14306            else if (token?.includes?.('space_separator')) { thousands = ' '; }
14307            else if (token?.includes?.('apostrophe_separator')) { thousands = "'"; }
14308            const sign = safe < 0 ? '-' : '';
14309            const parts = Math.abs(safe)?.toFixed?.(decimals)?.split?.('.') || [];
14310            const intPart = (parts?.[0] || '0')?.replace?.(/\B(?=(\d{3})+(?!\d))/g, thousands) || '0';
14311            const amount = decimals === 0 ? sign + intPart : sign + intPart + decimal + (parts?.[1] || '00');
14312            return tokenMatch ? format?.replace(/\{\{\s*amount[a-z_]*\s*\}\}/gi, amount)?.trim() : amount;
14313        } catch (e) {
14314            return String(value ?? '0');
14315        }
14316    };
14317
14318
14319    const loyaltyWidgetStyles = `
14320.appstle-loyalty-widget-close-icon {
14321width: 28px;
14322height: 28px;
14323opacity: 0;
14324position: absolute;
14325top: 50%;
14326left: 50%;
14327transform: translate(-50%, -50%);
14328transition: opacity 0.2s;
14329}
14330
14331.appstle-loyalty-button {
14332bottom: 24px;
14333z-index: 999;
14334border-radius: 12px;
14335position: fixed;
14336border: none;
14337transition: max-width 1s;
14338padding: 0 19px;
14339overflow: hidden;
14340height: 56px;
14341transform-origin: left;
14342max-width: 300px;
14343background-color: ${_ALConfig?.widget_setting?.widgetBackgroundColor || 'rgb(29, 78, 216)'};
14344color: ${_ALConfig?.widget_setting?.widgetTextColor || 'white'};
14345}
14346
14347.appstle-loyalty-right {
14348right: 40px;
14349}
14350
14351.appstle-loyalty-left {
14352left: 40px;
14353}
14354
14355#appstle_loyalty_iframe {
14356width: 1px;
14357min-width: 400px;
14358border: none;
14359height: 516px;
14360position: fixed;
14361bottom: 100px;
14362z-index: 1234567;
14363box-shadow: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
14364background-color: white;
14365border-radius: 12px;
14366max-height: calc(100vh - 120px);
14367transform: scale(0) !important;
14368transition: all 0.5s;
14369transform-origin: bottom  right;
14370max-width: 80vw;
14371}
14372
14373@media screen and (max-width: 800px) {
14374#appstle_loyalty_iframe {
14375left: 0;
14376height: 100vh;
14377top: 0;
14378min-width: 100%;
14379}
14380
14381#appstle_loyalty_iframe.open + .appstle-loyalty-button {
14382left: 50%;
14383transform: translateX(-50%);
14384}
14385
14386.appstle-loyalty-button {
14387transition: all 0.5s;
14388}
14389}
14390
14391#appstle_loyalty_iframe.open {
14392transform: scale(1) !important;
14393}
14394
14395#appstle_loyalty_iframe.open.show-close-icon + button .appstle-loyalty-widget-close-icon {
14396opacity: 1;
14397}
14398
14399#appstle_loyalty_iframe.open + button .appstle_loyalty_widget_button_wrapper {
14400color: transparent;
14401}
14402
14403.appstle_loyalty_widget_button_wrapper {
14404height: 100%;
14405width: 100%;
14406display: flex;
14407flex-wrap: nowrap;
14408align-items: center;
14409gap: 10px;
14410}
14411
14412.appstle-loyalty-widget-button-text {
14413flex-shrink: 0;
14414}
14415
14416.loyalty_widget_available_points {
14417display: none;
14418height: 100%;
14419width: auto;
14420flex-shrink: 0;
14421}
14422
14423.appstle_show_points .loyalty_widget_available_points {
14424display: flex;
14425align-items: center;
14426padding: 0 8px;
14427margin-right: -14px;
14428background-color: ${_ALConfig?.widget_setting?.widgetCounterBackgroundColor || 'rgba(29, 78, 216, 0.8)'};
14429color: ${_ALConfig?.widget_setting?.widgetCounterTextColor || 'white'};
14430}
14431
14432#appstle_loyalty_iframe.open.show-close-icon + button {
14433background-color: ${_ALConfig?.widget_setting?.widgetBackgroundColor || 'rgb(29, 78, 216)'};
14434}
14435
14436#appstle_loyalty_iframe.open.show-close-icon + button .appstle-loyalty-widget-button-text-wrapper,
14437#appstle_loyalty_iframe.open.show-close-icon + button .loyalty_widget_available_points {
14438opacity: 0;
14439}
14440
14441#appstle_loyalty_iframe.open + button {
14442max-width: 56px;
14443}
14444
14445.loyalty-widget-buttonImage {
14446height: 24px;
14447width: 24px;
14448}
14449
14450.appstle-loyalty-widget-button-text-wrapper {
14451height: 100%;
14452display: flex;
14453gap: 4px;
14454align-items: center;
14455}
14456
14457.right_snackbar {
14458right: 30px;
14459}
14460
14461
14462`;
14463    const launcherStyles = document.createElement('style');
14464    launcherStyles.id = 'appstle-loyalty-launcher-styles';
14465    launcherStyles.textContent = loyaltyWidgetStyles;
14466    const customStyles = document.getElementById('appstle-loyalty-custom-styles');
14467    if (customStyles) {
14468        customStyles.before(launcherStyles);
14469    } else {
14470        document.body.appendChild(launcherStyles);
14471    }
14472    const mainHTMLString = `
14473<iframe id="appstle_loyalty_iframe" class="appslte-iframe" title="Appstle Loyalty Widget"></iframe>
14474<button id="appstle-loyalty-button"
14475        class="appstle-loyalty-button appstle-loyalty-hidden ${_ALConfig?.customerId ? `logged-in-customer-loyalty-button` : `logged-out-customer-loyalty-button`}"
14476        style="${_ALConfig.widget_setting.showWidget && _ALConfig.widget_setting.widgetType === 'LAUNCHER' ? `` : `display: none !important;`}">
14477    <div class="appstle_loyalty_widget_button_wrapper">
14478        <div class="appstle-loyalty-widget-button-text-wrapper">
14479            
14480            <span id="loyalty-widget-title" class="appstle-loyalty-widget-button-text"></span>
14481        </div>
14482        <div class="loyalty_widget_available_points"></div>
14483    </div>
14484    <svg class="appstle-loyalty-widget-close-icon" xmlns="http://www.w3.org/2000/svg" fill="none"
14485         viewBox="0 0 24 24"
14486         stroke-width="1.5" stroke="currentColor">
14487        <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
14488    </svg>
14489</button>`;
14490    document.querySelector('body').insertAdjacentHTML('beforeend', mainHTMLString);
14491    const launcherLogo = document.querySelector('.loyalty-widget-buttonImage');
14492    if (launcherLogo) launcherLogo.src = parseHtmlStringContent(_ALConfig?.widget_setting?.widgetButtonLogoUrl);
14493    window.addEventListener('message', widgetEventListener, false);
14494
14495    function widgetEventListener(event) {
14496        if (event.origin !== window.location.origin ||
14497            (event.source !== window && event.source !== document.getElementById('appstle_loyalty_iframe')?.contentWindow)) return;
14498        if (event.data === 'appstle_message_for_showWidget') {
14499        } else if (event.data === 'appstle_widget_showHide') {
14500            toggleWidget();
14501        } else if (event.data === 'refresh_appstle_loyalty_widget' && _ALConfig?.widget_setting?.widgetType === 'LAUNCHER') {
14502            loadAppstleLoyaltyWidget();
14503            console.log('REFRESH WIDGET');
14504        } else if (event.data === 'show_appstle_loyalty_widget') {
14505            loadAppstleLoyaltyWidget();
14506            enableWidget();
14507        }
14508    }
14509
14510    function removeAppstleLoyaltyWidget() {
14511        document.querySelector('#appstle-loyalty-button')?.classList?.add('appstle-loyalty-hidden');
14512        document.querySelector('#appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-hidden');
14513    }
14514
14515    (function checkForWidgetRestrictions() {
14516        let isShowWidget = true;
14517
14518        if (_ALConfig?.customerLoyalty?.customerStatus === 'EXCLUDED') {
14519            isShowWidget = false;
14520        }
14521        if (!_ALConfig?.customerId) {
14522            isShowWidget = !(_ALConfig?.widget_setting?.restrictedCustomersTag || _ALConfig?.widget_setting?.allowedCustomersTag);
14523        }
14524        if (_ALConfig?.widget_setting?.allowedCustomersTag?.length && isShowWidget) {
14525            let allowedTags = _ALConfig?.widget_setting?.allowedCustomersTag.split(',');
14526            if (allowedTags?.length > 0 && !_ALConfig?.customerTags?.some((tag) => allowedTags?.some((allowedTag) => allowedTag?.trim()?.toLowerCase() === tag?.trim()?.toLowerCase()))) {
14527                isShowWidget = false;
14528            }
14529        }
14530        if (_ALConfig?.widget_setting?.restrictedCustomersTag?.length && isShowWidget) {
14531            let restrictedTags = _ALConfig?.widget_setting?.restrictedCustomersTag?.split(',');
14532            if (restrictedTags?.length > 0 && _ALConfig?.customerTags?.some((tag) => restrictedTags?.some((restrictedTag) => restrictedTag?.trim()?.toLowerCase() === tag?.trim()?.toLowerCase()))) {
14533                isShowWidget = false;
14534            }
14535        }
14536        if (_ALConfig?.widget_setting?.blockWidgetOnPages?.length && isShowWidget) {
14537            let restrictedPages = _ALConfig?.widget_setting?.blockWidgetOnPages?.split(',');
14538            const currentPage = window?.location?.pathname;
14539            if (restrictedPages?.length > 0) {
14540                if (restrictedPages?.includes('/homepage') && currentPage === '/') {
14541                    isShowWidget = false;
14542                } else if (restrictedPages?.some((page) => currentPage?.includes(page))) {
14543                    isShowWidget = false;
14544                }
14545            }
14546        }
14547        if (_ALConfig?.widget_setting?.allowWidgetOnSpecificPages?.length && isShowWidget) {
14548            let allowedPages = _ALConfig?.widget_setting?.allowWidgetOnSpecificPages?.split(',');
14549            const currentPage = window?.location?.pathname;
14550            if (allowedPages?.length > 0) {
14551                if (allowedPages?.includes('/homepage') && currentPage === '/') {
14552                    isShowWidget = true;
14553                } else if (allowedPages?.some((page) => currentPage?.includes(page))) {
14554                    isShowWidget = true;
14555                } else {
14556                    isShowWidget = false;
14557                }
14558            }
14559        }
14560        if (!_ALConfig?.customerId && _ALConfig?.widget_setting?.showToLoggedInCustomerOnly) {
14561            isShowWidget = false;
14562        }
14563        window.__APPSTLE_LOYALTY_LAUNCHER_ALLOWED = !!isShowWidget;
14564        if (isShowWidget) {
14565            showAppstleLoyaltyWidget();
14566        } else {
14567            removeAppstleLoyaltyWidget();
14568        }
14569    })();
14570
14571    function enableWidget() {
14572        document.querySelector('#appstle_loyalty_iframe')?.classList?.add('open');
14573        document.querySelector('#appstle_loyalty_iframe')?.classList?.remove('appstle-loyalty-hidden');
14574        setTimeout(function() {
14575            document.querySelector('#appstle_loyalty_iframe')?.classList?.toggle('show-close-icon');
14576        }, 900);
14577    }
14578
14579    function showAppstleLoyaltyWidget() {
14580        const launcherAllowed = window?.['__APPSTLE_LOYALTY_LAUNCHER_ALLOWED'] !== false;
14581        document.querySelector('#appstle_loyalty_iframe')?.classList?.remove('appstle-loyalty-hidden');
14582        const btn = document.querySelector('#appstle-loyalty-button');
14583        if (!btn) return;
14584        if (launcherAllowed) {
14585            btn.classList.remove('appstle-loyalty-hidden');
14586        } else {
14587            btn.classList.add('appstle-loyalty-hidden');
14588        }
14589    }
14590
14591
14592    document.querySelector('.appstle-loyalty-button').addEventListener('click', toggleWidget);
14593
14594    if (_ALConfig?.widget_setting?.widgetPosition === 'LEFT') {
14595        document.getElementById('appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-left');
14596        document.querySelector('.appstle-loyalty-button')?.classList?.add('appstle-loyalty-left');
14597        document.getElementById('appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-left');
14598        document.getElementById('snackbar')?.classList?.add('left_snackbar');
14599
14600    } else {
14601        document.getElementById('appstle_loyalty_iframe')?.classList?.add('appstle-loyalty-right');
14602        document.querySelector('.appstle-loyalty-button')?.classList?.add('appstle-loyalty-right');
14603        document.getElementById('snackbar')?.classList?.add('right_snackbar');
14604    }
14605
14606
14607    const alIframeSrc = `\x3chtml>
14608\x3chead>
14609    \x3cscript>
14610        window["isAppstleLoyaltyCustomerPortal"] = true;
14611        \x3c/script>
14612        <link rel="stylesheet" href="${escapeLoyaltyAttribute(_ALConfig.widgetCssPath)}">
14613            \x3cscript defer type="text/javascript" src="${escapeLoyaltyAttribute(_ALConfig.widgetJsPath)}">\x3c/script>
14614                <style>
14615                    #loyalty_spinner_container {
14616                    position: absolute;
14617                    top: 0;
14618                    right: 0;
14619                    bottom: 0;
14620                    left: 0;
14621                    display: flex;
14622                    justify-content: center;
14623                    align-items: center;
14624                    height: 100%;
14625                    width: 100%;
14626                    z-index: 9999999999999999999999999;
14627                }
14628                    #loyalty_spinner {
14629                    height: 32px;
14630                    width: 32px;
14631                    animation: spin 1s linear infinite;
14632                    border-radius: 9999px;
14633                    border-width: 1px;
14634                    border-style: solid;
14635                    border-color: rgb(107 114 128);
14636                    border-top-color: transparent;
14637                }
14638                    @keyframes spin {
14639                    100% {
14640                        transform: rotate(360deg);
14641                }
14642                }
14643                </style>
14644            \x3c/head>
14645            \x3cbody>
14646            <div style="overflow: auto;" id="appstleLoyaltyWidget">
14647                <div id="loyalty_spinner_container">
14648                    <div id="loyalty_spinner"></div>
14649                </div>
14650            </div>
14651            \x3c/body>
14652        \x3c/html>`;
14653
14654
14655    function toggleWidget() {
14656        loadAppstleLoyaltyWidget();
14657        if (_ALConfig?.widget_setting?.widgetType?.toUpperCase() === 'LAUNCHER' && _ALConfig?.widget_setting?.forceRedirectDedicatedPage === true) {
14658            window.open(`/${_ALConfig?.proxy_path_prefix}`);
14659        } else {
14660            const isWidgetOpen = document.querySelector('#appstle_loyalty_iframe')?.classList?.toggle('open');
14661            if (isWidgetOpen === false) {
14662                clearLoyaltyDeepLinkHash();
14663            }
14664            showAppstleLoyaltyWidget();
14665            setTimeout(function() {
14666                document.querySelector('#appstle_loyalty_iframe')?.classList?.toggle('show-close-icon');
14667            }, 900);
14668        }
14669    }
14670
14671    const loadAppstleLoyaltyWidget = () => {
14672        var iframe = document.querySelectorAll('#appstle_loyalty_iframe');
14673        iframe.forEach(function(item) {
14674            item.contentWindow.document.open('text/html', 'replace');
14675            item.contentWindow._ALConfig = _ALConfig;
14676            item.contentWindow.__st = window.__st;
14677            item.contentWindow.Shopify = { shop: location.host };
14678            item.contentWindow.appstle_public_domain = location.host;
14679            item.contentWindow.document.write(alIframeSrc);
14680            item.contentWindow.document.close();
14681        });
14682    };
14683
14684    const launcherDataType = _ALConfig?.widget_setting?.launcherDataType || 'POINTS';
14685
14686    const loyaltyButtonTitle = document.getElementById('loyalty-widget-title');
14687    if (_ALConfig?.shop_labels?.widgetTitle) {
14688        const title = parseHtmlStringContent(_ALConfig?.shop_labels?.widgetTitle);
14689        loyaltyButtonTitle.textContent = title;
14690        window.appstleLoyaltyLoadSanitizer().then(purifier => {
14691            if (purifier) loyaltyButtonTitle.innerHTML = sanitizeLoyaltyLabel(title, purifier, false);
14692        });
14693    }
14694
14695    (function() {
14696        const { customerLoyalty, widget_setting } = _ALConfig || {};
14697        if (!customerLoyalty && !(launcherDataType === 'STORE_CREDITS' && _ALConfig?.customerId)) return;
14698
14699        const showTier = widget_setting?.showTierName;
14700        const launcherButtonElement = document.querySelector('#appstle-loyalty-button');
14701        const pointsEl = document.querySelector('.loyalty_widget_available_points');
14702        if (!pointsEl) return;
14703
14704        const fmt = new Intl.NumberFormat();
14705        const { storeCreditBalance = 0, availablePoints = 0, currentVipTier = '' } = customerLoyalty || {};
14706
14707        let displayValue;
14708        if (launcherDataType === 'STORE_CREDITS') {
14709            displayValue = formatStoreCreditAmount(_ALConfig?.customerStoreCreditBalance || storeCreditBalance || 0);
14710        } else if ((launcherDataType === 'VIP_TIER') && currentVipTier) {
14711            displayValue = String(currentVipTier);
14712        } else {
14713            const n = Number(availablePoints) || 0;
14714            displayValue = fmt.format(formatNumberByPointRoundType(n));
14715        }
14716        pointsEl.textContent = displayValue;
14717        launcherButtonElement?.classList.add('appstle_show_points');
14718    })();
14719
14720
14721    const loyaltyDeepLinks = [
14722        '#appstle-loyalty',
14723        '#appstle-refer',
14724        '#appstle-loyalty-earn-rewards',
14725        '#appstle-loyalty-redeem-rewards',
14726        '#appstle-loyalty-referrals',
14727        '#appstle-loyalty-vip-program'
14728    ];
14729
14730    let lastLoyaltyWidgetUrl = location.href;
14731
14732    function hasLoyaltyDeepLink() {
14733        return loyaltyDeepLinks.some(hash => location?.hash?.includes(hash));
14734    }
14735
14736    function clearLoyaltyDeepLinkHash() {
14737        if (!hasLoyaltyDeepLink()) {
14738            return;
14739        }
14740        window.history.replaceState({}, document.title, window.location.pathname + window.location.search);
14741        lastLoyaltyWidgetUrl = location.href;
14742    }
14743
14744    function handleDeepLink() {
14745        if (!_ALConfig?.widget_setting?.showWidget || !hasLoyaltyDeepLink()) {
14746            return;
14747        }
14748        loadAppstleLoyaltyWidget();
14749        enableWidget();
14750        setTimeout(() => {
14751            document.querySelector('#appstle_loyalty_iframe')?.classList?.add('show-close-icon');
14752        }, 900);
14753    }
14754
14755    handleDeepLink();
14756
14757    const widgetReferralUrl = new URL(window.location.href);
14758    if (_ALConfig?.referralEnabled && widgetReferralUrl?.searchParams.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'LAUNCHER') {
14759        const referralUrlObj = loyaltyNavigationUrl(_ALConfig?.widget_setting?.referralRedirectUrl);
14760        if (referralUrlObj) {
14761            let referralPath = referralUrlObj.pathname.replace(/\/+$/, '');
14762            let currentPath = window.location.pathname.replace(/\/+$/, '');
14763            if (referralPath && (referralUrlObj.origin !== window.location.origin || currentPath !== referralPath)) {
14764                widgetReferralUrl.searchParams.forEach((value, key) => referralUrlObj.searchParams.set(key, value));
14765                window.open(referralUrlObj.href, '_self');
14766            }
14767        }
14768        setTimeout(() => {
14769            loadAppstleLoyaltyWidget();
14770            enableWidget();
14771        }, 200);
14772    }
14773
14774
14775    (function observeURLChanges() {
14776        const handleUrlChange = () => {
14777            if (location.href !== lastLoyaltyWidgetUrl) {
14778                lastLoyaltyWidgetUrl = location.href;
14779                handleDeepLink();
14780            }
14781        };
14782        new MutationObserver(handleUrlChange).observe(document.body, { subtree: true, childList: true });
14783        window.addEventListener('popstate', handleUrlChange);
14784        window.addEventListener('hashchange', handleUrlChange);
14785    })();
14786
14787    const alDOMObserver = new MutationObserver(function(mutations_list) {
14788        mutations_list.forEach(function(mutation) {
14789            mutation.addedNodes.forEach(function(added_node) {
14790                if (added_node.id === 'appstle_loyalty_iframe') {
14791                    var iframe = document.querySelectorAll('#appstle_loyalty_iframe');
14792                    iframe.forEach(function(item) {
14793                        item.contentWindow.document.open('text/html', 'replace');
14794                        item.contentWindow._ALConfig = _ALConfig;
14795                        item.contentWindow.__st = window.__st;
14796                        item.contentWindow.Shopify = { shop: location.host };
14797                        item.contentWindow.appstle_public_domain = location.host;
14798                        item.contentWindow.document.write(alIframeSrc);
14799                        item.contentWindow.document.close();
14800                    });
14801                    alDOMObserver.disconnect();
14802                }
14803            });
14804        });
14805    });
14806    alDOMObserver.observe(document.querySelector('body'), { subtree: true, childList: true });
14807
14808    
14809
14810    
14811<!-- END app snippet -->
14812    }
14813
14814    
14815
14816    const storeCreditMismatch = _ALConfig?.customerId && _ALConfig?.customerStoreCreditBalance >= 0 && _ALConfig?.customerLoyalty?.storeCreditBalance >= 0 && _ALConfig?.customerLoyalty?.storeCreditBalance !== _ALConfig?.customerStoreCreditBalance;
14817    if (storeCreditMismatch && _ALConfig.shop === 'olineloyalty27.myshopify.com') {
14818        const updateCustomerUrl = `/${_ALConfig?.proxy_path_prefix || 'apps/loyalty'}/cp/api/update-customer`;
14819        try {
14820            fetch(updateCustomerUrl, { method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest' } })
14821                .then((response) => {
14822                    if(response.ok) {}
14823                })
14824                .catch(() => {});
14825        } catch (err) {}
14826    }
14827
14828    <!-- BEGIN app snippet: loyalty-dedicated-page -->
14829    const dedicatedPageURL = new URL(window.location.href);
14830    const decodeUrl = (content) => {
14831        if (typeof content !== 'string') return content;
14832        try {
14833            const htmlDecoded = content?.replace(/\\\//g, '/');
14834            return JSON.parse(`"${htmlDecoded}"`);
14835        } catch (error) {
14836            console.error('Error parsing content:', error);
14837            return content;
14838        }
14839    };
14840
14841    if (dedicatedPageURL?.searchParams?.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'DEDICATED_PAGE') {
14842        const customUrl = decodeUrl(_ALConfig?.widget_setting?.referralCustomRedirectUrl);
14843        if (customUrl) {
14844            const normalizedCustomPath = customUrl.startsWith('/') ? customUrl : `/${customUrl}`;
14845            if (window.location.pathname !== normalizedCustomPath) {
14846                const redirectUrl = new URL(window.location.href);
14847                redirectUrl.pathname = normalizedCustomPath;
14848                window.open(redirectUrl.toString(), '_self');
14849            }
14850        }
14851        else if (dedicatedPageURL?.searchParams?.get('appstle_referral') && _ALConfig?.widget_setting?.widgetType === 'DEDICATED_PAGE' && !window.location.href.includes(_ALConfig?.proxy_path_prefix)) {
14852            window.open(`${window.location.origin}/${_ALConfig?.proxy_path_prefix}${window.location.search}`, '_self');
14853        }
14854    }
14855
14856    
14857    const dedicatedPageEventListener = (event) => {
14858        if (event.origin !== window.location.origin || event.source !== window) return;
14859        if (event.data === 'refresh_appstle_loyalty_page') {
14860            initiateAppstleLoyaltyPage();
14861            console.log('REFRESH PAGE');
14862        }
14863    };
14864    window.addEventListener('message', dedicatedPageEventListener, false);
14865
14866    function initiateAppstleLoyaltyPage() {
14867        if (document.querySelector('#appstleLoyaltyPage')) {
14868            const appstleLoyaltyPageElement = document.getElementById('appstleLoyaltyPage');
14869            while (appstleLoyaltyPageElement.firstChild) {
14870                appstleLoyaltyPageElement.firstChild.remove();
14871            }
14872
14873            
14874
14875
14876            
14877            document.title = decodeUrl(_ALConfig?.shop_labels?.loyaltyPageMetaTitle) || '';
14878            
14879
14880            
14881            setTimeout(() => {
14882                let metaDescription = document.querySelector('meta[name="description"]');
14883                if (metaDescription) {
14884                    metaDescription.content = decodeUrl(_ALConfig?.shop_labels?.loyaltyPageMetaDescription) || '';
14885                } else {
14886                    metaDescription = document.createElement('meta');
14887                    metaDescription.name = 'description';
14888                    metaDescription.content = decodeUrl(_ALConfig?.shop_labels?.loyaltyPageMetaDescription) || '';
14889                    document.head.appendChild(metaDescription);
14890                }
14891            }, 500);
14892            
14893            if (appstleLoyaltyPageElement) {
14894
14895                const loadDedicatedPageAsset = (createAsset, attempt, onSettle) => {
14896                    const asset = createAsset();
14897                    let settled = false;
14898                    const settle = () => {
14899                        if (settled) return;
14900                        settled = true;
14901                        if (typeof onSettle === 'function') {
14902                            onSettle();
14903                        }
14904                    };
14905                    asset.onload = settle;
14906                    asset.onerror = () => {
14907                        asset.remove();
14908                        if (attempt < 4) {
14909                            setTimeout(() => loadDedicatedPageAsset(createAsset, attempt + 1, onSettle), 1000 * Math.pow(2, attempt - 1));
14910                        } else {
14911                            settle();
14912                        }
14913                    };
14914                }
14915
14916                const appendDedicatedPageWidgetScript = () => {
14917                    loadDedicatedPageAsset(() => {
14918                        const s = document.createElement('script');
14919                        s.setAttribute('src', _ALConfig?.widgetJsPath);
14920                        s.async = false;
14921                        document.body.appendChild(s);
14922                        return s;
14923                    }, 1);
14924                }
14925
14926                const executeDedicatedPageScript = () => {
14927                    let widgetScriptAppended = false;
14928                    const appendWidgetScriptOnce = () => {
14929                        if (widgetScriptAppended) return;
14930                        widgetScriptAppended = true;
14931                        appendDedicatedPageWidgetScript();
14932                    };
14933                    try {
14934                        const preload = document.createElement('link');
14935                        preload.rel = 'preload';
14936                        preload.as = 'script';
14937                        preload.href = _ALConfig?.widgetJsPath;
14938                        document.head.appendChild(preload);
14939                    } catch (e) {}
14940                    loadDedicatedPageAsset(() => {
14941                        const link = document.createElement('link');
14942                        link.type = 'text/css';
14943                        link.rel = 'stylesheet';
14944                        link.href = _ALConfig?.widgetCssPath;
14945                        document.head.appendChild(link);
14946                        return link;
14947                    }, 1, appendWidgetScriptOnce);
14948                    setTimeout(appendWidgetScriptOnce, 8000);
14949                }
14950
14951                try {
14952                    const versionUrl = `${location.origin}/${_ALConfig?.proxy_path_prefix || 'apps/loyalty'}/app-loyalty-version`;
14953                    fetch(versionUrl).then(res => res.json()).then(data => {
14954                            if (data) {
14955                                const widgetJsUrl = new URL(_ALConfig.widgetJsPath);
14956                                const widgetCssUrl = new URL(_ALConfig.widgetCssPath);
14957                                widgetJsUrl.searchParams.set('v', data);
14958                                widgetCssUrl.searchParams.set('v', data);
14959                                _ALConfig.widgetJsPath = widgetJsUrl.toString();
14960                                _ALConfig.widgetCssPath = widgetCssUrl.toString();
14961                            }
14962                        }).catch(() => {}).finally(() => {
14963                            executeDedicatedPageScript();
14964                        });
14965                } catch (err) {
14966                    executeDedicatedPageScript();
14967                }
14968
14969
14970            }
14971
14972        } else {
14973            setTimeout(() => {
14974                initiateAppstleLoyaltyPage();
14975            }, 2000);
14976        }
14977    }
14978
14979    const dedicatedPageReferralUrl = new URL(window.location.href)?.searchParams.get('appstle_referral');
14980
14981    if (_ALConfig?.widget_setting?.showWidget === true) {
14982        initiateAppstleLoyaltyPage();
14983    }
14984    
14985
14986<!-- END app snippet -->
14987
14988    
14989        <!-- BEGIN app snippet: loyalty-visit-shop -->
14990    (async function() {
14991        const isAvailableVisitShop = _ALConfig?.pointEarnRules?.length > 0 && _ALConfig?.pointEarnRules?.find((rule) => rule?.type === 'VISIT_SHOP' && rule?.status === 'ACTIVE');
14992        if (_ALConfig?.customerId && isAvailableVisitShop) {
14993            if (!sessionStorage.getItem('syncVisitStore') && ((_ALConfig?.customerId && isAvailableVisitShop && isAvailableVisitShop?.id) ||  (_ALConfig?.referralEnabled && _ALConfig?.referralLoyalty?.referralType === 'VISIT_SHOP'))) {
14994                try {
14995                    const response = await fetch(`/${_ALConfig?.proxy_path_prefix || 'apps/loyalty'}/cp/api/customer-visit-store`, { method: 'POST', headers: {'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest'}, });
14996                    if (response?.ok) {
14997                        sessionStorage.setItem('syncVisitStore', 'true');
14998                    }
14999                } catch (error) {
15000                    console.error('Error:', error);
15001                }
15002            }
15003        }
15004    })();
15005
15006<!-- END app snippet -->
15007        <!-- BEGIN app snippet: loyalty-custom-styles -->
15008    const loyaltyCustomStyles = document.createElement('style');
15009    loyaltyCustomStyles.id = 'appstle-loyalty-custom-styles';
15010    loyaltyCustomStyles.textContent = _ALConfig?.widget_setting?.customCss || '';
15011    document.body.appendChild(loyaltyCustomStyles);
15012
15013<!-- END app snippet -->
15014    
15015</script>
15015
15016
15017
15018    
15018<script src="https://cdn.shopify.com/extensions/01a1013f-f11e-7ab3-8e03-558ce2a98cb1/appstle-loyalty-1456/assets/appstle-loyalty.js" defer></script>
15018
15019    <style>
15020.acquire-points-badge {
15021display: flex;
15022flex-direction: column;
15023max-width: max-content;
15024font-size: 14px;
15025font-weight: 500;
15026letter-spacing: 0.05em;
15027border-radius: 3px;
15028padding: 10px;
15029}
15030.loyalty-acquire-points-badge sup {
15031font-size: 10px;
15032margin-left: 3px;
15033}
15034.loyalty-point-balance {
15035font-size: 16px;
15036font-weight: 500;
15037letter-spacing: 0.05em;
15038max-width: max-content;
15039}
15040.loyalty-current-vip-tier-badge {
15041font-size: 16px;
15042font-weight: 500;
15043letter-spacing: 0.05em;
15044max-width: max-content;
15045}
15046.loyalty-acquire-points-logged-out-label,
15047.loyalty-acquire-earn-points-label,
15048.loyalty-acquire-store-credit-label {
15049color: inherit;
15050background-color: inherit;
15051}
15052
15053
15054.appstle_loyalty_cart_widget_wrapper {
15055position: relative !important;
15056max-width: 400px !important;
15057margin-left: auto !important;
15058}
15059@media screen and (max-width: 749px) {
15060.appstle_loyalty_cart_widget_wrapper {
15061position: relative !important;
15062max-width: 100% !important;
15063}
15064}
15065#appstle_loyalty_cart_widget_iframe {
15066display: none !important;
15067}
15068#appstle_loyalty_cart_widget_iframe.open {
15069display: block !important;
15070position: fixed !important;
15071top: 0 !important;
15072left: 0 !important;
15073width: 100% !important;
15074height: 100% !important;
15075border: none !important;
15076z-index: 99999999999999999999 !important;
15077}
15078.appstle_loyalty_cart_widget_wrapper {
15079margin-bottom: 12px !important;
15080}
15081.loyalty-cart-widget-button {
15082display: flex !important;
15083align-items: center !important;
15084justify-content: space-between !important;
15085flex-wrap: nowrap !important;
15086background-color: white !important;
15087gap: 1rem !important;
15088border-radius: 8px !important;
15089padding: 10px !important;
15090width: 100% !important;
15091border: 1px solid #e5e7eb !important;
15092}
15093.loyalty-cart-widget-points-store-credits-info {
15094display: flex !important;
15095align-items: center !important;
15096gap: 12px !important;
15097}
15098.loyalty-cart-widget-icon {
15099display: flex !important;
15100align-items: center !important;
15101justify-content: center !important;
15102width: 32px !important;
15103height: 32px !important;
15104background-color: #a4197a !important;
15105border-radius: 6px !important;
15106}
15107.loyalty-cart-widget-icon-image {
15108width: 20px !important;
15109height: 20px !important;
15110}
15111.loyalty-cart-widget-icon-svg {
15112fill: white !important;
15113}
15114.loyalty-cart-widget-available-balance-label {
15115font-size: 16px !important;
15116font-weight: 500 !important;
15117color: #1f2937 !important;
15118}
15119.loyalty-cart-widget-rewards-btn {
15120background-color: #a4197a !important;
15121color: #ffffff !important;
15122border: none !important;
15123min-width: 82px !important;
15124border-radius: 4px !important;
15125padding: 6px 12px !important;
15126font-size: 14px !important;
15127font-weight: 600 !important;
15128cursor: pointer !important;
15129transition: background-color 0.15s !important;
15130}
15131.loyalty-cart-widget-rewards-btn-disabled {
15132opacity: 0.5 !important;
15133pointer-events: none !important;
15134cursor: not-allowed !important;
15135}
15136</style>
15137
15138
15139
15140
15141</div><div id="shopify-block-AY3pVa3ZJR0E3aHF6e__10436698916776057164" class="shopify-block shopify-app-block">
15141<script id="subscription-helper">
15142
15143        function appstleStringSetting(value) {
15144            if (typeof value !== 'string') return value;
15145            try { return JSON.parse('"' + value + '"'); } catch { return value; }
15146        }
15147        function appstleJsonSetting(value) {
15148            if (typeof value !== 'string') return value;
15149            try { return JSON.parse(value); } catch { return null; }
15150        }
15151
15152        if (!window.AppstleIncluded) {
15153          window.AppstleIncluded = true;
15154          window.RS = Window.RS || {};
15155          
15156            RS.Config = {
15157                "selectors": {
15158                    "payment_button_selectors": "form[action$='/cart/add'] .shopify-payment-button",
15159                    "subscriptionLinkSelector": appstleStringSetting(""),
15160                    "atcButtonPlacement": appstleStringSetting("BEFORE"),
15161                    "subscriptionLinkPlacement": appstleStringSetting("BEFORE"),
15162                    "cartRowSelector": appstleStringSetting(""),
15163                    "cartLineItemSelector": appstleStringSetting(""),
15164                    "cartLineItemPerQuantityPriceSelector": appstleStringSetting(""),
15165                    "cartLineItemTotalPriceSelector": appstleStringSetting(""),
15166                    "cartLineItemSellingPlanNameSelector": appstleStringSetting(""),
15167                    "cartSubTotalSelector" : appstleStringSetting(""),
15168                    "cartLineItemPriceSelector": appstleStringSetting(""),
15169                    "cartLineItemPlacement": appstleStringSetting("BEFORE"),
15170                    "cartHiddenAttributesSelector": appstleStringSetting(""),
15171                    "buildABoxDiscountSelector": appstleStringSetting(""),
15172                },
15173                "baseUrl": appstleStringSetting("https:\/\/subscription-admin.appstle.com"),
15174                "usedTranslation": "true",
15175                "enableCartWidgetFeature": appstleStringSetting("false"),
15176                "storefrontAnalyticsForwardingEnabled": appstleJsonSetting("false"),
15177                "appstleStorefrontAnalyticsPath": appstleStringSetting("https:\/\/subscription-admin.appstle.com\/assets\/js\/appstle-storefront-analytics.min.js?shop=rocky-mountain-oils.myshopify.com\u0026v=1784182483761"),
15178                "useUrlWithCustomerId": appstleStringSetting("true"),
15179                "atcButtonSelector": appstleStringSetting(""),
15180                "moneyFormat": appstleStringSetting("${{amount}}"),
15181                "oneTimePurchaseText": appstleStringSetting("One Time Purchase"),
15182                "minimumQuantityMessage": appstleStringSetting(null),
15183                "tapToSelectText": appstleStringSetting("Tap To Select"),
15184                "bundleDiscountTextV2": appstleStringSetting("bundle discount extra: {{bundleDiscount}} off"),
15185                "productPageUnitPriceSelectorV2": appstleStringSetting(null),
15186                "monthsFrequencyTextV2": appstleStringSetting("Months"),
15187                "monthlyLabelTextV2": appstleStringSetting("Monthly"),
15188                "monthFrequencyTextV2": appstleStringSetting("Month"),
15189                "weeksFrequencyTextV2": appstleStringSetting("Weeks"),
15190                "weeklyLabelTextV2": appstleStringSetting("Weekly"),
15191                "weekFrequencyTextV2": appstleStringSetting("Week"),
15192                "daysFrequencyTextV2": appstleStringSetting("Days"),
15193                "dayFrequencyTextV2": appstleStringSetting("day"),
15194                "yearsFrequencyTextV2": appstleStringSetting("Years"),
15195                "yearlyLabelTextV2": appstleStringSetting("Yearly"),
15196                "yearFrequencyTextV2": appstleStringSetting("Year"),
15197                "offFrequencyTextV2": appstleStringSetting("Off"),
15198                "prepayLabelTextV2": appstleStringSetting("Prepay"),
15199                "prepaidLabelTextV2": appstleStringSetting("Prepaid"),
15200                "prepaidSaveBadgeTextV2": appstleStringSetting("SAVE {{selectedDiscountPercentage}}"),
15201                "onetimeDescriptionTextV2": appstleStringSetting(""),
15202                "atcButtonTextV2": appstleStringSetting(""),
15203                "oneTimeFrequencyTextV2": appstleStringSetting("One Time"),
15204                "cancelAnytimeLabelTextV2": appstleStringSetting("Cancel Anytime"),
15205                "noSubscriptionLabelTextV2": appstleStringSetting("No Subscription"),
15206                "addToShipmentButtonTextV2": appstleStringSetting("Add to Shipment"),
15207                "addToShipmentProcessingV2": appstleStringSetting("Processing..."),
15208                "addToShipmentSuccessTextV2": appstleStringSetting("Success"),
15209                "addToShipmentErrorTextV2": appstleStringSetting("Error"),
15210                "addToShipmentTooltipTextV2": appstleStringSetting("Please avoid double delivery charges! Login to add this product to an upcoming delivery."),
15211                "frequencyCombinedWidgetTextV2": appstleStringSetting("Frequency"),
15212                "selectDeliverOptionV2": appstleStringSetting("Select Delivery Option"),
15213                "subscribeAndSaveSuccessV2": appstleStringSetting("Subscription Selected"),
15214                "unsubscribeFrequencyTextV2": appstleStringSetting("One-time Purchase"),
15215                "deliveryEveryFrequencyTextV2": appstleStringSetting("Delivery Frequency"),
15216                "sellingPlanTitleTextNonPrepaid": appstleStringSetting("{{sellingPlanName}}"),
15217                "subscribeAndSaveInitalV2": appstleStringSetting("Subscribe and save"),
15218                "subscriptionDescriptionTextV2": appstleStringSetting(""),
15219                "atcButtonTextSelector": appstleStringSetting(""),
15220                "disableCartWidgetOnVariants": appstleStringSetting(""),
15221                "shop": appstleStringSetting("rocky-mountain-oils.myshopify.com"),
15222                "deliveryText": appstleStringSetting("delivery"),
15223                "purchaseOptionsText": appstleStringSetting("Purchase Options"),
15224                "manageSubscriptionButtonText": appstleStringSetting(null),
15225                "subscriptionOptionText": appstleStringSetting("Subscribe and save"),
15226                "sellingPlanSelectTitle": appstleStringSetting("DELIVERY FREQUENCY"),
15227                "subscriptionPriceDisplayText": appstleStringSetting(""),
15228                "tooltipTitle": appstleStringSetting("Subscription detail"),
15229                "showTooltipOnClick": appstleStringSetting("false"),
15230                "tooltipDesctiption": appstleStringSetting("\u003cstrong\u003eHave complete control of your subscriptions\u003c\\\/strong\u003e\u003cbr\\\/\u003e\u003cbr\\\/\u003eSkip, reschedule, edit, or cancel deliveries anytime, based on your needs."),
15231                "tooltipDescriptionOnPrepaidPlan": appstleStringSetting("\u003cb\u003ePrepaid Plan Details\u003c\\\/b\u003e\u003c\\\/br\u003e Total price: {{totalPrice}} ( Price for every delivery: {{pricePerDelivery}})"),
15232                "tooltipDescriptionOnMultipleDiscount": appstleStringSetting("\u003cb\u003eDiscount Details\u003c\\\/b\u003e\u003c\\\/br\u003e Initial discount is {{discountOne}} and then {{discountTwo}}"),
15233                "manualTranslation": appstleStringSetting("false"),
15234                "tooltipDescriptionCustomization": appstleStringSetting("{{{defaultTooltipDescription}}} \u003c\\\/br\u003e  {{{prepaidDetails}}} \u003c\\\/br\u003e {{{discountDetails}}}"),
15235                "orderStatusManageSubscriptionTitle": appstleStringSetting("Subscription"),
15236                "orderStatusManageSubscriptionDescription": appstleStringSetting("Continue to your account to view and manage your subscriptions. Please use the same email address that you used to buy the subscription."),
15237                "orderStatusManageSubscriptionButtonText": appstleStringSetting("Manage your subscription"),
15238                "subscriptionOptionSelectedByDefault" : appstleJsonSetting("false"),
15239                "totalPricePerDeliveryText" : appstleStringSetting("{{prepaidPerDeliveryPrice}}\\\/delivery"),
15240                "memberOnlySellingPlansJson": appstleJsonSetting("{\"691785957743\":{\"shop\":\"rocky-mountain-oils.myshopify.com\",\"sellingPlanId\":691785957743,\"enableMemberInclusiveTag\":false,\"enableMemberExclusiveTag\":true,\"memberExclusiveTags\":\"\\\"Special Postcard Offer\\\"\"},\"691785924975\":{\"shop\":\"rocky-mountain-oils.myshopify.com\",\"sellingPlanId\":691785924975,\"enableMemberInclusiveTag\":true,\"memberInclusiveTags\":\"Special Postcard Offer\",\"enableMemberExclusiveTag\":false},\"691795362159\":{\"shop\":\"rocky-mountain-oils.myshopify.com\",\"sellingPlanId\":691795362159,\"enableMemberInclusiveTag\":false,\"enableMemberExclusiveTag\":true,\"memberExclusiveTags\":\"\\\"Special Postcard Offer\\\"\"}}"),
15241                "nonMemberOnlySellingPlansJson": appstleJsonSetting("{}"),
15242                "sellingPlansJson": appstleJsonSetting("[{\"frequencyCount\":1,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":1,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Special every 1 month\",\"discountOffer\":30.0,\"afterCycle1\":0,\"discountType\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabledMasked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691785924975\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691785924975\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":true,\"nonMemberOnly\":false,\"memberInclusiveTags\":\"Special Postcard Offer\",\"formFieldJson\":\"[]\",\"frequencySequence\":0,\"groupName\":\"Z-Special Postcard Offer\",\"groupId\":78691795311,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[]},{\"frequencyCount\":2,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":2,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 2 months\",\"frequencyDescription\":\"\",\"discountOffer\":10.0,\"discountOffer2\":15.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691786088815\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691786088815\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"[]\",\"frequencySequence\":1,\"groupName\":\"Z-Special Postcard Offer\",\"groupId\":78691795311,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":2
152420.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":16,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":3,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":3,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 3 months\",\"frequencyDescription\":\"\",\"discountOffer\":5.0,\"discountOffer2\":10.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691786121583\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691786121583\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"[]\",\"frequencySequence\":2,\"groupName\":\"Z-Special Postcard Offer\",\"groupId\":78691795311,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":15.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":20.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":16,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":20,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":1,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":1,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 1 month\",\"frequencyDescription\":\"\",\"discountOffer\":15.0,\"discountOffer2\":20.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691785957743\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691785957743\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":true,\"memberExclusiveTags\":\"\\\"Special Postcard Offer\\\"\",\"formFieldJson\":\"[]\",\"frequencySequence\":0,\"groupName\":\"Subscribe \\u0026 Save\",\"groupId\":78691828079,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":2,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":2,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 2 months\",\"frequencyDescription\":\"\",\"discountOffer\":10.0,\"discountOffer2\":15.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691785990511\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691785990511\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":1,\"groupName\":\"Subscribe \\u0026 Save\",\"groupId\":78691828079,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":2
152420.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":16,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":3,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":3,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 3 months\",\"frequencyDescription\":\"\",\"discountOffer\":5.0,\"discountOffer2\":10.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691786023279\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691786023279\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":2,\"groupName\":\"Subscribe \\u0026 Save\",\"groupId\":78691828079,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":15.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":20.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":16,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":20,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":1,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":1,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 1 month\",\"frequencyDescription\":\"\",\"discountOffer\":15.0,\"discountOffer2\":20.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691795362159\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691795362159\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":true,\"memberExclusiveTags\":\"\\\"Special Postcard Offer\\\"\",\"formFieldJson\":\"[]\",\"frequencySequence\":0,\"groupName\":\"Z2-Subscribe \\u0026 Save\",\"groupId\":78700937583,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":2,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":2,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 2 months\",\"frequencyDescription\":\"\",\"discountOffer\":10.0,\"discountOffer2\":15.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691795394927\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691795394927\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":1,\"groupName\":\"Z2-Subscribe \\u0026 Save\",\"groupId\":78700937583,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":2
152420.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":16,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":3,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":3,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 3 months\",\"frequencyDescription\":\"\",\"discountOffer\":5.0,\"discountOffer2\":10.0,\"afterCycle1\":0,\"afterCycle2\":4,\"discountType\":\"PERCENTAGE\",\"discountType2\":\"PERCENTAGE\",\"discountEnabled\":true,\"discountEnabled2\":true,\"discountEnabledMasked\":true,\"discountEnabled2Masked\":true,\"id\":\"gid:\/\/shopify\/SellingPlan\/691795427695\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691795427695\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":2,\"groupName\":\"Z2-Subscribe \\u0026 Save\",\"groupId\":78700937583,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[{\"afterCycle\":8,\"discountType\":\"PERCENTAGE\",\"value\":15.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":12,\"discountType\":\"PERCENTAGE\",\"value\":20.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":16,\"discountType\":\"PERCENTAGE\",\"value\":25.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false},{\"afterCycle\":20,\"discountType\":\"PERCENTAGE\",\"value\":30.0,\"repeatingCycle\":false,\"preventDuplicationFreeProduct\":false}]},{\"frequencyCount\":1,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":1,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Every 1 month\",\"frequencyDescription\":\"\",\"afterCycle1\":0,\"afterCycle2\":0,\"discountEnabled\":false,\"discountEnabled2\":false,\"discountEnabledMasked\":false,\"discountEnabled2Masked\":false,\"id\":\"gid:\/\/shopify\/SellingPlan\/691797361007\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691797361007\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":0,\"groupName\":\"Oil\\u0027ty Plus Membership - Monthly\",\"groupId\":78702608751,\"repeatingCycle\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[]},{\"frequencyCount\":1,\"frequencyInterval\":\"YEAR\",\"billingFrequencyCount\":1,\"billingFrequencyInterval\":\"YEAR\",\"frequencyName\":\"Every 1 year\",\"frequencyDescription\":\"\",\"afterCycle1\":0,\"afterCycle2\":0,\"discountEnabled\":false,\"discountEnabled2\":false,\"discountEnabledMasked\":false,\"discountEnabled2Masked\":false,\"id\":\"gid:\/\/shopify\/SellingPlan\/691797459311\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691797459311\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":0,\"groupName\":\"Oil\\u0027ty Plus Membership - Yearly\",\"groupId\":78702674287,\"repeatingCycle\":false,\"defaultSelectedPlan\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[]},{\"frequencyCount\":1,\"frequencyInterval\":\"MONTH\",\"billingFrequencyCount\":1,\"billingFrequencyInterval\":\"MONTH\",\"frequencyName\":\"Monthly Subscription\",\"frequencyDescription\":\"\",\"afterCycle1\":0,\"afterCycle2\":0,\"discountEnabled\":false,\"discountEnabled2\":false,\"discountEnabledMasked\":false,\"discountEnabled2Masked\":false,\"id\":\"gid:\/\/shopify\/SellingPlan\/691886883183\",\"frequencyType\":\"ON_PURCHASE_DAY\",\"specificDayEnabled\":false,\"cutOff\":0,\"prepaidFlag\":\"false\",\"idNew\":\"gid:\/\/shopify\/SellingPlan\/691886883183\",\"planType\":\"PAY_AS_YOU_GO\",\"deliveryPolicyPreAnchorBehavior\":\"ASAP\",\"freeTrialEnabled\":false,\"memberOnly\":false,\"nonMemberOnly\":false,\"formFieldJson\":\"null\",\"frequencySequence\":0,\"groupName\":\"Mystery Bun
15242dle\",\"groupId\":78781710703,\"repeatingCycle\":false,\"defaultSelectedPlan\":false,\"inventoryPolicyReserve\":\"ON_SALE\",\"appstleCycles\":[]}]"),
15243                "widgetEnabled": appstleJsonSetting("false"),
15244                "showFreeGiftPrice" : appstleJsonSetting(true),
15245                "showFreeGiftComparePrice" : appstleJsonSetting(true),
15246                "enableFreeGiftLayout" : appstleJsonSetting(false),
15247                "freeGiftLabelText": appstleStringSetting("+ Free {{productName}}"),
15248                "freeGiftBadgeText": appstleStringSetting(""),
15249                "showTooltip" : appstleJsonSetting("true"),
15250                "showCartWidgetOnBundleItems" : appstleJsonSetting("false"),
15251                "prepaidOptionSelectedByDefault" : appstleJsonSetting("false"),
15252                "disablePassingSellingPlanAsLineProperties" : appstleJsonSetting("true"),
15253                "updateThemePrice" : appstleJsonSetting("false"),
15254                "sortByDefaultSequence": appstleJsonSetting("false"),
15255                "showSubOptionBeforeOneTime": appstleJsonSetting("false"),
15256                "detectVariantFromURLParams": appstleJsonSetting("false"),
15257                "disableQueryParamsUpdate": appstleJsonSetting("false"),
15258                "showStaticTooltip": appstleJsonSetting("false"),
15259                "showAppstleLink": appstleJsonSetting("true"),
15260                "sellingPlanTitleText" : appstleStringSetting("{{sellingPlanName}} ({{sellingPlanPrice}}\\\/delivery)"),
15261                "oneTimePriceText" : appstleStringSetting("{{price}}"),
15262                "selectedPayAsYouGoSellingPlanPriceText" : appstleStringSetting("{{price}}"),
15263                "selectedPrepaidSellingPlanPriceText" : appstleStringSetting(" {{totalPrice}}"),
15264                "selectedDiscountFormat" : appstleStringSetting("SAVE {{selectedDiscountPercentage}}"),
15265                "manageSubscriptionBtnFormat" : appstleStringSetting("\u003ca href='https:\\\/\\\/rocky-mountain-oils.myshopify.com\\\/apps\\\/subscriptions' class='appstle_manageSubBtn' \u003e\u003cbutton class='btn' style='padding: 2px 20px'\u003e{{manageSubscriptionButtonText}}\u003c\\\/button\u003e\u003c\\\/a\u003e\u003cbr\u003e\u003cbr\u003e"),
15266                "manageSubscriptionUrl" : appstleStringSetting("https:\\\/\\\/rocky-mountain-oils.myshopify.com\\\/apps\\\/subscriptions"),
15267                "appstlePlanId": appstleJsonSetting("164"),
15268                "showCheckoutSubscriptionBtn": appstleJsonSetting("true"),
15269                "priceSelector": appstleStringSetting(""),
15270                "reloadPriceSelector": appstleStringSetting(""),
15271                "landingPagePriceSelector": appstleStringSetting(""),
15272                "quickViewClickSelector": appstleStringSetting(""),
15273                "badgeTop": appstleStringSetting(""),
15274                "pricePlacement": appstleStringSetting("BEFORE"),
15275                "disableLoadingJquery": appstleJsonSetting("false"),
15276                "widgetEnabledOnSoldVariant": appstleStringSetting("false"),
15277                "switchRadioButtonWidget": appstleJsonSetting("false"),
15278                "appstlePlanName": appstleStringSetting("BUSINESS PREMIUM"),
15279                "appstlePlanFeatures": appstleJsonSetting("{\"analytics\": true, \"webhookAccess\": false, \"accessBundling\": true, \"enableAutoSync\": false, \"enableBundling\": true, \"enableSmsAlert\": true, \"accessBuildABox\": true, \"enableCampaigns\": true, \"enablePriceSync\": false, \"enableAutomation\": true, \"enableCartWidget\": true, \"accessAppstleMenu\": true, \"accessResendEmail\": true, \"enableAddressSync\": false, \"enableExternalApi\": false, \"enablePhasedRetry\": true, \"enableIntegrations\": true, \"enableQuickActions\": true, \"accessQuickCheckout\": true, \"accessSplitContract\": true, \"enableSummaryReports\": true, \"enableCustomEmailHtml\": true, \"enableWidgetPlacement\": true, \"enableCancellationFlow\": true, \"enableShippingProfiles\": true, \"accessZapierIntegration\": true, \"enableCustomEmailDomain\": true, \"enableDunningManagement\": true, \"enableExportActivityLog\": true, \"subscriptionOrderAmount\": 100000, \"accessGorgiasIntegration\": true, \"accessKlaviyoContactSync\": true, \"enableOrderConsolidation\": false, \"accessMechanicIntegration\": false, \"accessWidgetDe
15279signOptions\": true, \"enableImmediatePlaceOrder\": true, \"enableInventoryManagement\": true, \"accessMechanicsIntegration\": true, \"enableAdvancedSellingPlans\": true, \"accessOneTimeProductUpsells\": true, \"enableBillingIntervalChange\": true, \"enableProductSwapAutomation\": true, \"accessShopifyFlowIntegration\": true, \"enableCancellationManagement\": true, \"enableCustomerPortalSettings\": true, \"enableSubscriptionManagement\": true, \"accessKlaviyoEmailIntegration\": true, \"enableAdminNotificationAccess\": true, \"accessSubscriptionActivityLogs\": true, \"enableBackupPaymentMethodRetry\": true, \"accessSubscriberLoyaltyFeatures\": true, \"enableAddToExistingSubscription\": false, \"enableContractPriceModification\": true, \"enableTrackInventoryInSingleBAB\": true, \"accessManualSubscriptionCreation\": true, \"enableNextBillingDateModification\": true, \"accessCustomerPortalProductUpsells\": true, \"enableServerSideConversionTracking\": true, \"accessDiscountOnCancellationAttempt\": true, \"enableStorefrontAnalyticsForwarding\": true, \"accessAdvanceSubscriptionPlanOptions\": true, \"accessAdvancedCustomerPortalSettings\": true, \"enableAutoRetryOnPaymentMethodUpdate\": true}"),
15280                "formMappingAttributeName": appstleStringSetting(""),
15281                "formMappingAttributeSelector": appstleStringSetting(""),
15282                "quickViewModalPollingSelector": appstleStringSetting(""),
15283                "scriptLoadDelay": appstleStringSetting("0"),
15284                "formatMoneyOverride": appstleStringSetting("false"),
15285                "enableAddToExistingSubscriptionFeature": appstleStringSetting("false"),
15286                "displayAddToExistingSubscriptionButtonForNotLoggedInV2": appstleStringSetting(null),
15287                "showAddToSubscriptionButtonOnlyOnSubscriptionProducts": appstleStringSetting("false"),
15288                "appstle_app_proxy_path_prefix": appstleStringSetting("apps\\\/subscriptions"),
15289                "updatePriceOnQuantityChange": appstleStringSetting(""),
15290                "widgetParentSelector": appstleStringSetting(""),
15291                "quantitySelector": appstleStringSetting("quantity-input *"),
15292                "enableAddJSInterceptor": appstleStringSetting("false"),
15293                "isDevEnabled": appstleJsonSetting(false),
15294                "forceReloadWidgetSelector": appstleStringSetting(""),
15295                "forceReloadOnFreqChange": appstleJsonSetting("false"),
15296                "showPrepaidPlanSeparately": appstleJsonSetting("true"),
15297                "debugLogsEnabled": appstleJsonSetting(false),
15298                "isUseStorefrontAPI": appstleJsonSetting(true),
15299                "reBuyEnabled": appstleStringSetting("false"),
15300                "loyaltyDetailsLabelText": appstleStringSetting(null),
15301                "loyaltyPerkDescriptionTextV2": appstleStringSetting("{{#isDiscountTypeFreeProduct}}\u003cdiv style='display: flex;'\u003e\u003cdiv style='height: 60px; width: 60px; flex-shrink: 0; margin-right: 10px;'\u003e\u003cimg style='width: 100%' src={{{featured_image}}}\u003e\u003c\\\/img\u003e\u003c\\\/div\u003e\u003cdiv\u003eAfter {{{billingCycleBlock}}} orders,\u003cspan style='color: #ffc000;font-weight: 700;';\u003e get a FREE {{freeProductName}} \u003c\\\/span\u003e\u003c\\\/div\u003e\u003cdiv\u003e{{\\\/isDiscountTypeFreeProduct}}{{#isDiscountTypePercentage}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan style='color: #ffc000;font-weight: 700;';\u003e{{{discount}}}% OFF your entire order\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypePercentage}}{{#isDiscountTypeShipping}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan style='color: #ffc000;font-weight: 700;';\u003eshipping at {{{formatDiscountedPrice}}}\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypeShipping}}{{#isDiscountTypeFixed}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan style='color: #ffc000;font-weight: 700;';\u003e{{{formatDiscountedPrice}}} OFF your entire order\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypeFixed}}{{#isDiscountTypeFixedPrice}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget this product at \u003cspan style='color: #ffc000;font-weight: 700;';\u003e{{{formatDiscountedPrice}}}\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypeFixedPrice}}"),
15302                "widgetType": appstleStringSetting("WIDGET_TYPE_7"),
15303                "collectionWidgetType": appstleStringSetting("LEGACY"),
15304                "enableCompactProductPageWidget": appstleJsonSetting(false),
15305                "enableCartDrawerWidget": appstleJsonSetting(false),
15306                "cartDrawerWidgetStyle": appstleJsonSetting(false),
15307                "cartDrawerWidgetInlineStyle": appstleStringSetting(null),
15308                "cartDrawerWidgetPanelStyle": appstleStringSetting(null),
15309                "cartDrawerWidgetSegmentedStyle": appstleStringSetting(null),
15310                "showOneTimeComparePrice": appstleJsonSetting("false"),
15311                "showCompareAtPriceForSubscription": appstleJsonSetting(false),
15312                "showCombinedSellingPlanCartWidget": appstleJsonSetting("false"),
15313                "combinedCartWidgetSelector": appstleStringSetting(""),
15314                "removeUnsubscribeOption": appstleJsonSetting(false),
15315                "widgetTemplateHtml": "{% raw %}{% endraw %}",
15316                
15317                  "allWidgetTemplateHtml": "{\"WIDGET_TYPE_1\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_6\":\"{% raw %}\u003cdiv id=\\\"appstle-widget-template\\\"\u003e\\n  \u003cdiv class=\\\"appstle_sub_widget\\\" id=\\\"appstle_subscription_widget{{widgetId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle_widget_title\\\"\u003e{{{purchaseOptionsText}}}\u003c\/div\u003e\\n      \u003cdiv class=\\\"widgetSellingPlanWrapper\\\"\u003e\\n{{^requires_selling_plan}}\\n{{^showSubOptionBeforeOneTime}}\\n        \u003cdiv class=\\\"appstle_input_wrapper appstle_onetime_block\\\"\u003e\\n          \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\u003e\\n          \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle-selling-plan-name-wrapper\\\"\u003e\\n            {{oneTimePuchaseText}}\\n\u003cdiv class=\\\"appstle-cancel-text\\\"\u003e{{{noSubscriptionLabelTextV2}}}\u003c\/div\u003e\\n\u003c\/div\u003e\\n      \u003cdiv class=\\\"appstle-selling-plan-detail-wrapper\\\"\u003e\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n{{#showOneTimeComparePrice}}\\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount_compare\\\"\u003e\\n  {{{oneTimePuchaseComparePriceAmount}}}\\n\u003c\/span\u003e\\n{{\/showOneTimeComparePrice}}\\n\\n\u003cspan  class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount\\\"\u003e{{{oneTimePuchaseAmount}}}\u003c\/span\u003e\u003c\/div\u003e\\n\u003c\/div\u003e\\n          \u003c\/label\u003e\\n          \\n        \u003c\/div\u003e\\n{{\/showSubOptionBeforeOneTime}}\\n{{\/requires_selling_plan}}\\n        {{#sellingPlanVariants}}\\n           \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n    \\n             \u003cinput type=\\\"radio\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" id=\\\"{{sellingPlanId}}\\\" value=\\\"{{sellingPlanId}}\\\" name=\\\"selling_plan\\\" {{#isChecked}}checked{{\/isChecked}}\u003e\\n{{^prepaidFlag}}\\n             \u003clabel for=\\\"{{sellingPlanId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle-selling-plan-name-wrapper appstle-selling-plan-label-name\\\"\u003e\\n                {{{name}}}\\n\u003cdiv class=\\\"appstle-cancel-text\\\"\u003e{{{cancelAnytimeLabelTextV2}}}\u003c\/div\u003e\\n\u003c\/div\u003e\\n\u003cdiv class=\\\"appstle-selling-plan-detail-wrapper\\\"\u003e\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n       \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_formattedCompareAtPrice appstle_price_block\\\"\u003e{{{formattedCompareAtPrice}}}\u003c\/span\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{formattedPrice}}}\u003c\/span\u003e\\n\\n\\n\u003c\/div\u003e   \\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_formattext_block\\\"\u003e\u003c\/span\u003e\\n{{#showPricePerDay}}\u003cdiv class=\\\"appstle-perday-price\\\"\u003e{{{pricePerDay}}}
15317\u003c\/div\u003e{{\/showPricePerDay}}\\n\u003cdiv class=\\\"appstle-frequency-description\\\"\u003e\\n{{{frequencyDescription}}}    \\n\u003c\/div\u003e\\n     \u003c\/div\u003e\\n \u003c\/label\u003e\\n{{#showFormattedDiscountText}}\\n  \u003cspan class=\\\"appstle_sellingPlan_discountText\\\"\u003e{{{formattedDiscountText}}}\u003c\/span\u003e\\n{{\/showFormattedDiscountText}}\\n\u003cdiv class=\\\"appstle-sm-hide  appstle-frequency-description\\\"\u003e{{{frequencyDescription}}} \u003c\/div\u003e     \\n{{\/prepaidFlag}}\\n{{#prepaidFlag}}\\n\u003clabel for=\\\"{{sellingPlanId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle-selling-plan-name-wrapper appstle-selling-plan-label-name\\\"\u003e\\n                {{{name}}}\\n\u003cdiv class=\\\"appstle-cancel-text\\\"\u003e{{{cancelAnytimeLabelTextV2}}}\u003c\/div\u003e\\n\u003c\/div\u003e\\n\u003cdiv class=\\\"appstle-selling-plan-detail-wrapper\\\"\u003e\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n       \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_formattedCompareAtPrice appstle_price_block\\\"\u003e{{{formattedCompareAtPrice}}}\u003c\/span\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{totalPrice}}}\u003c\/span\u003e\\n\\n\u003c\/div\u003e  \\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_discount_block appstle_formattedPrepaidPerDeliveryPriceText\\\"\u003e{{{formattedPrepaidPerDeliveryPriceText}}}\u003c\/span\u003e\\n       {{#showPricePerDay}}\u003cdiv class=\\\"appstle-perday-price\\\"\u003e{{{pricePerDay}}}\u003c\/div\u003e{{\/showPricePerDay}}\\n\u003cdiv class=\\\"\\\"\u003e\\n\u003cdiv class=\\\"appstle-frequency-description\\\"\u003e\\n{{{frequencyDescription}}}    \\n\u003c\/div\u003e\\n\u003c\/div\u003e\\n\u003c\/div\u003e\\n\u003c\/label\u003e\\n{{#showFormattedDiscountText}}\\n  \u003cspan class=\\\"appstle_sellingPlan_discountText\\\"\u003e{{{formattedDiscountText}}}\u003c\/span\u003e\\n{{\/showFormattedDiscountText}}\\n\u003cdiv class=\\\"appstle-sm-hide  appstle-frequency-description\\\"\u003e{{{frequencyDescription}}} \u003c\/div\u003e     \\n\\n{{\/prepaidFlag}}\\n      \\n           \u003c\/div\u003e\\n        {{\/sellingPlanVariants}}\\n{{^requires_selling_plan}}\\n{{#showSubOptionBeforeOneTime}}\\n        \u003cdiv class=\\\"appstle_input_wrapper appstle_onetime_block\\\"\u003e\\n          \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\u003e\\n          \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\"\u003e\\n\u003cdiv  class=\\\"appstle-selling-plan-name-wrapper\\\"\u003e\\n            {{oneTimePuchaseText}}\\n\u003cdiv class=\\\"appstle-cancel-text\\\"\u003e{{{noSubscriptionLabelTextV2}}}\u003c\/div\u003e\\n\u003c\/div\u003e\\n\u003cdiv class=\\\"appstle-selling-plan-detail-wrapper\\\"\u003e\\n\u003cspan  class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount_compare\\\"\u003e{{{oneTimePuchaseComparePriceAmount}}}\u003c\/span\u003e\\n      \u003cspan  class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount\\\"\u003e{{{oneTimePuchaseAmount}}}\u003c\/span\u003e\\n\\n\u003c\/div\u003e\\n          \u003c\/label\u003e\\n          \\n        \u003c\/div\u003e\\n{{\/showSubOptionBeforeOneTime}}\\n{{\/requires_selling_plan}}\\n    \u003c\/div\u003e\\n{{#showStaticTooltip}}\\n\u003cdiv class=\\\"appstle_tooltip_wrapper_static\\\"\u003e {{{toolTipDescription}}}\u003c\/div\u003e\\n{{\/showStaticTooltip}}\\n{{#showTooltip}}\\n\u003cdiv class=\\\"appstle-tootltip-parent\\\"\u003e\\n    \u003cdiv data-appstle-icon=\\\"\\\" class=\\\"appstle_tooltip_wrapper\\\"\u003e\\n    \u003csvg width=\\\"90\\\" height=\\\"90\\\" viewBox=\\\"0 0 90 90\\\" xmlns=\\\"http:\/\/www.w3.org\/2000\/svg\\\" class=\\\"tooltip_subscription_svg\\\"\u003e\\n    \u003cpath\\n      d=\\\"M45 0C20.1827 0 0 20.1827 0 45C0 69.8173 20.1827 90 45 90C69.8173 90 90 69.8174 90 45C90.0056 44.6025 89.9322 44.2078 89.7839 43.8389C89.6357 43.47 89.4156 43.1342 89.1365 42.8511C88.8573 42.568 88.5247 42.3432 88.158 42.1897C87.7912 42.0363 87.3976 41.9573 87 41.9573C86.6024 41.9573 86.2088 42.0363 85.842 42.1897C85.4753 42.3432 85.1427 42.568 84.8
15317635 42.8511C84.5844 43.1342 84.3643 43.47 84.2161 43.8389C84.0678 44.2078 83.9944 44.6025 84 45C84 66.5748 66.5747 84 45 84C23.4253 84 6 66.5747 6 45C6 23.4254 23.4253 6 45 6C56.1538 6 66.3012 10.5882 73.4375 18H65.4062C65.0087 17.9944 64.614 18.0678 64.2451 18.2161C63.8762 18.3643 63.5405 18.5844 63.2573 18.8635C62.9742 19.1427 62.7494 19.4753 62.596 19.842C62.4425 20.2088 62.3635 20.6024 62.3635 21C62.3635 21.3976 62.4425 21.7912 62.596 22.158C62.7494 22.5247 62.9742 22.8573 63.2573 23.1365C63.5405 23.4156 63.8762 23.6357 64.2451 23.7839C64.614 23.9322 65.0087 24.0056 65.4062 24H79.8125C80.6081 23.9999 81.3711 23.6838 81.9337 23.1212C82.4963 22.5586 82.8124 21.7956 82.8125 21V6.59375C82.821 6.18925 82.7476 5.78722 82.5966 5.41183C82.4457 5.03644 82.2205 4.69545 81.9344 4.40936C81.6483 4.12327 81.3073 3.898 80.9319 3.7471C80.5565 3.5962 80.1545 3.52277 79.75 3.53125C79.356 3.53941 78.9675 3.62511 78.6067 3.78344C78.2458 3.94177 77.9197 4.16963 77.6469 4.45402C77.3741 4.73841 77.16 5.07375 77.0168 5.44089C76.8737 5.80803 76.8042 6.19977 76.8125 6.59375V12.875C68.6156 4.86282 57.3081 0 45 0ZM43.75 20.75C43.356 20.7582 42.9675 20.8439 42.6067 21.0022C42.2458 21.1605 41.9197 21.3884 41.6469 21.6728C41.3741 21.9572 41.16 22.2925 41.0168 22.6596C40.8737 23.0268 40.8042 23.4185 40.8125 23.8125V47.375C40.8116 47.7693 40.8883 48.16 41.0385 48.5246C41.1886 48.8892 41.4092 49.2207 41.6875 49.5L54.0938 61.9375C54.6573 62.5011 55.4217 62.8177 56.2188 62.8177C57.0158 62.8177 57.7802 62.5011 58.3438 61.9375C58.9073 61.3739 59.224 60.6095 59.224 59.8125C59.224 59.0155 58.9073 58.2511 58.3438 57.6875L46.8125 46.1875V23.8125C46.821 23.408 46.7476 23.006 46.5966 22.6306C46.4457 22.2552 46.2205 21.9142 45.9344 21.6281C45.6483 21.342 45.3073 21.1168 44.9319 20.9658C44.5565 20.8149 44.1545 20.7415 43.75 20.75Z\\\"\\n    \u003e\u003c\/path\u003e\\n    \u003c\/svg\u003e\\n    \u003cspan class=\\\"appstle_tooltip_title\\\"\u003e{{{tooltipTitle}}}\u003c\/span\u003e\\n  \u003c\/div\u003e\\n\u003cdiv class=\\\"appstle_tooltip\\\"\u003e\\n    \u003cdiv class=\\\"appstle_tooltip_content\\\"\u003e\\n      {{{toolTipDescription}}}\\n    \u003c\/div\u003e\\n    {{#showAppstleLink}}\\n    \u003cdiv class=\\\"appstle_tooltip_appstle\\\"\u003e\\n      \u003ca href=\\\"https:\/\/appstle.com\\\" class=\\\"appstle_link\\\" target=\\\"_blank\\\"\u003e\\n      POWERED BY APPSTLE      \u003c\/a\u003e\\n    \u003c\/div\u003e\\n    {{\/showAppstleLink}}\\n    \u003c\/div\u003e\\n\u003c\/div\u003e\\n{{\/showTooltip}}\\n\u003cstyle\u003e\\n.widgetSellingPlanWrapper {\\n    display: grid;\\n    grid-template-columns: repeat(2, minmax(0, 1fr));\\n    gap: 1.5rem;\\n    grid-auto-rows: 1fr;\\n    margin-bottom: 6px;\\nmargin-top: 10px;\\n}\\n\\n.widgetSellingPlanWrapper input {\\n    display: none;\\n}\\n\\n.widgetSellingPlanWrapper label {\\n    border-radius: 10px;\\n    border: 1px solid rgba(var(--color-foreground));\\n    padding: 0.5rem;\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    display: block;\\n    height: 100%;\\n    width: 100%;\\n    text-align: center;\\ncursor: pointer;\\n}\\n\\n.widgetSellingPlanWrapper input:checked+label {\\n    background-color: rgba(var(--color-foreground)) !important;\\ncolor: rgba(var(--color-background)) !important;\\n}\\n.appstle_lowercase {\\n    text-transform: lowercase;\\n}\\n\\n\\n.appstle_input_wrapper {\\n    position: relative;\\n}\\n\\nspan.appstle_sellingPlan_discountText {\\n    position: absolute;\\n    background: rgba(var(--color-foreground));\\n    color: rgba(var(--color-background));\\n    border-radius: 3px;\\n    padding: 1px 18px;\\n    left: 50%;\\n    display: block;\\n    transform: translate(-50%, -50%);\\n    white-space: nowrap;\\n}\\n\\nspan.appstle_sellingPlan_discountText:empty {\\n    display: none !important;\\n}\\ndiv.appstle_span_wrapper{\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n}\\n\u003c\/style\u003e\\n\u003cstyle\u003e\\n.widgetSellingPlanWrapper {\\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\\n   gap: 0.8rem !important;\\n}\\n\\n.appstle_sub_widget {\\n    max-width: 100%!important;\\n} \\n\\n.widgetSellingPlanWrapper label {\\n    height: auto !important;\\n    border: none !important;\\n    padding: 14px 5px !important;\\n    display: flex !important;\\n    justify-content: center !important;
15317\\n    align-items: center !important;\\n    flex-direction: column;\\n    max-width: 100% !important;\\n    width: unset !important;\\nline-height: 20px;\\n}\\n\\n.appstle_how_does_it_work {\\n    line-height: 16px !important;\\n    margin: 6px 0px;\\n    color: rgba(var(--color-background));\\n}\\n@media screen and (max-width: 800px) {\\n    .appstle_how_does_it_work {\\n        text-align: right;\\n    }\\n}\\n\\nspan.appstle_lowercase.appstle_sellingPlan_price.appstle_formattext_block {\\ntext-align: right !important;\\n    display: block;\\n}\\n\\n.appstle_span_wrapper {\\n    align-items: baseline;\\n}\\n\\nspan.appstle_lowercase.appstle_sellingPlan_price.appstle_discount_block.appstle_formattedPrepaidPerDeliveryPriceText {\\n    display: block;\\n    text-align: right;\\n}\\n\\n.appstle_input_wrapper {\\n    display: flex;\\n    height: 100% !important;\\nflex-direction: column;\\n}\\n\\n.appstle_sub_widget input[type=radio]+label:before {\\n    content: \\\"\\\";\\n    position: absolute;\\n    inset: 0;\\n    border-radius: 12px;\\n    padding: 2px;\\n    background: #121212;\\n    -webkit-mask: linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);\\n    -webkit-mask-composite: xor;\\n    mask-composite: exclude;\\n    pointer-events: none;\\n    z-index: 0;\\n    transition: all 0.2s;\\n}\\n\\n.appstle_sub_widget input[type=radio]:checked+label:before {\\n    content: \\\"\\\";\\n    position: absolute;\\n    inset: 0;\\n    border-radius: 12px;\\n \/\/   padding: 4px;\\n\/\/ background: linear-gradient(to right,#Fef58f,#7A3900);\\n\/\/background: #E53D29;\\n  border: 2px transparent;\\n    -webkit-mask: linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);\\n    -webkit-mask-composite: xor;\\n    mask-composite: exclude;\\n    pointer-events: none;\\n    z-index: 0;\\n}\\n\\nspan.appstle_sellingPlan_discountText {\\n    background: rgba(var(--color-foreground));\\n    border-radius: 100px !important;\\n    padding: 0px 8px !important;\\n    height: 20px;\\n    display: flex !important;\\n    justify-content: center;\\n    align-items: center;\\n    letter-spacing: 1px;\\nz-index: 2;\\n}\\nspan.appstle_lowercase.appstle_sellingPlan_price.appstle_onetime_amount_compare {\\ntext-decoration: line-through;\\n}\\n\\n\\nspan.appstle-popular {\\n    position: absolute;\\n    top: -40px;\\n    background: black;\\n    color: rgba(var(--color-background));\\n    z-index: -3;\\n    border-radius: 10px;\\n    padding: 0px 10px 29px 10px;\\nleft: 0;\\n}\\n\\n.widgetSellingPlanWrapper label {\\n    border-radius: 14px;\\n}\\n\\n.widgetSellingPlanWrapper input:checked+label {\\n    overflow: hidden;\\n}\\n\\n\\n.appstle-perday-price {\\ndisplay: none;\\n}\\n\\n    .widgetSellingPlanWrapper {\\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\\n}\\n\\n.widgetSellingPlanWrapper label {\\n    flex-direction: row;\\n    justify-content: space-between !important;\\n    align-items: flex-start !important;\\nwidth: 100% !important;\\n}\\n\\n.widgetSellingPlanWrapper label {\\n    text-align: left;\\n    padding: 16px !important;\\nflex-basis: unset;\\n}\\n\\n.appstle_span_wrapper {\\n    justify-content: flex-end !important;\\n}\\n\\n.appstle-perday-price {\\n    text-align: right;\\n}\\n\\n.widgetSellingPlanWrapper {\\n    gap: 15px !important;\\n}\\n\\nspan.appstle-popular {\\n    width: calc(100% - 20px);\\n    text-align: center;\\n    letter-spacing: 2px;\\n    top: -30px;\\nleft: 0;\\n}\\n\\nspan.appstle_sellingPlan_discountText {    \\nleft: unset !important;\\n    right: 15px;\\n    transform: translate(0, -50%) !important;\\n}\\n.appstle-cancel-text {\\n    text-align: left;\\n}\\n\\n.appstle_input_wrapper label {\\n    text-align: left !important;\\n}\\n\\n.widgetSellingPlanWrapper input:checked+label {\\n    width: 100% !important;\\n    margin: 0 !important;\\n}\\n.appstle_input_wrapper {\\n    width: 100% !important;\\nflex-direction: row;\\n}\\n.widgetSellingPlanWrapper input:checked+label+span {\\n    background: rgba(var(--color-background)) !important;\\n    color:rgba(var(--color-foreground)) !important;\\n    border: 2px solid rgba(var(--color-foreground));\\n}\\n.appstle_onetime_block .appstle_span_wrapper {\\n    grid-column: 2;\\n}\\n.appstle-frequency-description {\\n  text-align: right !important;\\n}\\n\\n\\n.appstle-sm-hide {\\n  display: none;\\n}\\n\\n@media screen and (min-width: 800px) {\\n.appstle-lg-show {\\n  display: block;\\n}\\n.appstle-lg-hide {\\n  display: none;\\n}\\n\\n}\\n\\nspan.appstle_lowercase.appstle_sellingPlan_formattedCompareAtPrice.appstle_price_block {\\n    text-decoration: line-through;\\n    display: block;\\n    margin-right: 3px;\\n    color: rgba(var(--color-foreground));\\n}\\n.widgetSellingPlanWrapper input:checked+label .appstle_sellingPlan_formattedCompareAtPrice {\\ncolor:rgba(var(--color-background));\\n} \\n\\n.appstle_span_wrapper \u003e * {\\nflex-shrink: 0\\n}\\n.appstle-selling-plan-detail-wrapper{\\ncolor: rgba(var(--color-foreground));\\n}\\n.widgetSellingPlanWrapper input:checked+label .appstle-selling-plan-detail-wrapper{\\ncolor: rgba(var(--color-background)) !important;\\n}\\n\\n\u003c\/style\u003e\\n\u003c\/div\u003e{% endraw %}\",\"WIDGET_TYPE_7\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_8\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_2\":\"{% raw %}{% endraw %}\",\"WIDGET_TYPE_3\":\"{% raw %}
15317\u003cdiv id=\\\"appstle-widget-template\\\"\u003e\\n  \u003cdiv class=\\\"appstle_sub_widget\\\" id=\\\"appstle_subscription_widget{{widgetId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle_widget_title\\\"\u003e{{{purchaseOptionsText}}}\u003c\/div\u003e\\n      \u003cdiv class=\\\"widgetSellingPlanWrapper appstle_subscription_wrapper\\\"\u003e\\n{{#showSubOptionBeforeOneTime}}\\n        {{#sellingPlanVariants}}\\n           \u003cdiv class=\\\"appstle_input_wrapper appstle_subscription_option\\\"\u003e\\n             \u003cinput type=\\\"radio\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" id=\\\"{{sellingPlanId}}\\\" value=\\\"{{sellingPlanId}}\\\" name=\\\"selling_plan\\\" {{#isChecked}}checked{{\/isChecked}}\u003e\\n             {{^prepaidFlag}}\\n             \u003clabel for=\\\"{{sellingPlanId}}\\\" class=\\\"appstle_widget_three\\\"\u003e\\n                 {{{name}}}\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{formattedPrice}}}\u003c\/span\u003e\\n{{#showSecondFormattedDiscountText}}{{^isFixedPrice}}\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_discount_block\\\"\u003e\u0026nbsp;({{{secondFormattedDiscountText}}})\u003c\/span\u003e {{\/isFixedPrice}}{{\/showSecondFormattedDiscountText}}\\n\u003c\/div\u003e\\n    \\n             \u003c\/label\u003e\\n        {{\/prepaidFlag}}\\n        {{#prepaidFlag}}\\n             \u003clabel for=\\\"{{sellingPlanId}}\\\" class=\\\"appstle_widget_three\\\"\u003e\\n               {{{name}}}\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{totalPrice}}}\u003c\/span\u003e\\n {{#showSecondFormattedDiscountText}}{{^isFixedPrice}}\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_discount_block\\\"\u003e\u0026nbsp;({{{secondFormattedDiscountText}}})\u003c\/span\u003e{{\/isFixedPrice}}{{\/showSecondFormattedDiscountText}}\\n {{#formattedPrepaidPerDeliveryPriceText}}\u003cspan class=\\\"appstle_formattedPrepaidPerDeliveryPriceText\\\"\u003e\u0026nbsp;({{{formattedPrepaidPerDeliveryPriceText}}})\u003c\/span\u003e{{\/formattedPrepaidPerDeliveryPriceText}}\\n        \u003c\/div\u003e\\n    \\n             \u003c\/label\u003e\\n        {{\/prepaidFlag}}\\n      \\n           \u003c\/div\u003e\\n        {{\/sellingPlanVariants}}\\n{{\/showSubOptionBeforeOneTime}}\\n       {{^requires_selling_plan}}\\n        \u003cdiv class=\\\"appstle_input_wrapper appstle_onetime\\\"\u003e\\n          \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"{{sellingPlanId}}\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\u003e\\n          \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" class=\\\"appstle_widget_three\\\"\u003e\\n            {{oneTimePuchaseText}}\\n      \u003cspan  class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount\\\"\u003e\\n{{#showOneTimeComparePrice}}\\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount_compare\\\"\u003e\\n  {{{oneTimePuchaseComparePriceAmount}}}\\n\u003c\/span\u003e\\n{{\/showOneTimeComparePrice}}\\n{{{oneTimePuchaseAmount}}}\u003c\/span\u003e\\n          \u003c\/label\u003e\\n          \\n        \u003c\/div\u003e\\n        {{\/requires_selling_plan}}\\n{{^showSubOptionBeforeOneTime}}\\n        {{#sellingPlanVariants}}\\n           \u003cdiv class=\\\"appstle_input_wrapper appstle_subscription_option\\\"\u003e\\n             \u003cinput type=\\\"radio\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" id=\\\"{{sellingPlanId}}\\\" value=\\\"{{sellingPlanId}}\\\" name=\\\"selling_plan\\\" {{#isChecked}}checked{{\/isChecked}}\u003e\\n             {{^prepaidFlag}}\\n             \u003clabel for=\\\"{{sellingPlanId}}\\\" class=\\\"appstle_widget_three\\\"\u003e\\n                 {{{name}}}\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{formattedPrice}}}\u003c\/span\u003e\\n{{#showSecondFormattedDiscountText}}{{^isFixedPrice}}\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_discount_block\\\"\u003e\u0026nbsp;({{{secondFormattedDiscountText}}})\u003c\/span\u003e {{\/isFixedPrice}}{{\/showSecondFormattedDiscountText}}\\n\u003c\/div\u003e\\n    \\n             \u003c\/label\u003e\\n        {{\/prepaidFlag}}\\n        {{#prepaidFlag}}\\n             \u003clabel for=\\\"{{sellingPlanId}}\\\" class=\\\"appstle_widget_three\\\"\u003e\\n               {{{name}}}\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{totalPrice}}}\u003c\/span\u003e\\n {{#showSecondFormattedDiscountText}}{{^isFixedPrice}}\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_discount_block\\\"\u003e\u0026nbsp;({{{secondFormattedDiscountText}}})\u003c\/span\u003e{{\/isFixedPrice}}{{\/showSecondFormattedDiscountText}}\\n {{#formattedPrepaidPerDeliveryPriceText}}\u003cspan class=\\\"appstle_formattedPrepaidPerDeliveryPriceText\\\"\u003e\u0026nbsp;({{{formattedPrepaidPerDeliveryPriceText}}})\u003c\/span\u003e{{\/formattedPrepaidPerDeliveryPriceText}}\\n        \u003c\/div\u003e\\n    \\n             \u003c\/label\u003e\\n        {{\/prepaidFlag}}\\n      \\n           \u003c\/div\u003e\\n        {{\/sellingPlanVariants}}\\n{{\/showSubOptionBeforeOneTime}}\\n    \u003c\/div\u003e\\n{{#showStaticTooltip}}\\n\u003cdiv class=\\\"appstle_tooltip_wrapper_static\\\"\u003e{{{toolTipDescription}}}\u003c\/div\u003e\\n{{\/showStaticTooltip}}\\n{{#showTooltip}}\\n    \u003cdiv data-appstle-icon=\\\"\\\" class=\\\"appstle_tooltip_wrapper\\\"\u003e\\n    \u003csvg width=\\\"90\\\" height=\\\"90\\\" viewBox=\\\"0 0 90 90\\\" xmlns=\\\"http:\/\/www.w3.org\/2000\/svg\\\" class=\\\"tooltip_subscription_svg\\\"\u003e\\n    \u003cpath\\n      d=\\\"M45 0C20.1827 0 0 20.1827 0 45C0 69.8173 20.1827 90 45 90C69.8173 90 90 69.8174 90 45C90.0056 44.6025 89.9322 44.2078 89.7839 43.8389C89.6357 43.47 89.4156 43.1342 89.1365 42.8511C88.8573 42.568 88.5247 42.3432 88.158 42.1897C87.7912 42.0363 87.3976 41.9573 87 41.9573C86.6024 41.9573 86.2088 42.0363 85.842 42.1897C85.4753 42.3432 85.1427 42.568 84.8
15317635 42.8511C84.5844 43.1342 84.3643 43.47 84.2161 43.8389C84.0678 44.2078 83.9944 44.6025 84 45C84 66.5748 66.5747 84 45 84C23.4253 84 6 66.5747 6 45C6 23.4254 23.4253 6 45 6C56.1538 6 66.3012 10.5882 73.4375 18H65.4062C65.0087 17.9944 64.614 18.0678 64.2451 18.2161C63.8762 18.3643 63.5405 18.5844 63.2573 18.8635C62.9742 19.1427 62.7494 19.4753 62.596 19.842C62.4425 20.2088 62.3635 20.6024 62.3635 21C62.3635 21.3976 62.4425 21.7912 62.596 22.158C62.7494 22.5247 62.9742 22.8573 63.2573 23.1365C63.5405 23.4156 63.8762 23.6357 64.2451 23.7839C64.614 23.9322 65.0087 24.0056 65.4062 24H79.8125C80.6081 23.9999 81.3711 23.6838 81.9337 23.1212C82.4963 22.5586 82.8124 21.7956 82.8125 21V6.59375C82.821 6.18925 82.7476 5.78722 82.5966 5.41183C82.4457 5.03644 82.2205 4.69545 81.9344 4.40936C81.6483 4.12327 81.3073 3.898 80.9319 3.7471C80.5565 3.5962 80.1545 3.52277 79.75 3.53125C79.356 3.53941 78.9675 3.62511 78.6067 3.78344C78.2458 3.94177 77.9197 4.16963 77.6469 4.45402C77.3741 4.73841 77.16 5.07375 77.0168 5.44089C76.8737 5.80803 76.8042 6.19977 76.8125 6.59375V12.875C68.6156 4.86282 57.3081 0 45 0ZM43.75 20.75C43.356 20.7582 42.9675 20.8439 42.6067 21.0022C42.2458 21.1605 41.9197 21.3884 41.6469 21.6728C41.3741 21.9572 41.16 22.2925 41.0168 22.6596C40.8737 23.0268 40.8042 23.4185 40.8125 23.8125V47.375C40.8116 47.7693 40.8883 48.16 41.0385 48.5246C41.1886 48.8892 41.4092 49.2207 41.6875 49.5L54.0938 61.9375C54.6573 62.5011 55.4217 62.8177 56.2188 62.8177C57.0158 62.8177 57.7802 62.5011 58.3438 61.9375C58.9073 61.3739 59.224 60.6095 59.224 59.8125C59.224 59.0155 58.9073 58.2511 58.3438 57.6875L46.8125 46.1875V23.8125C46.821 23.408 46.7476 23.006 46.5966 22.6306C46.4457 22.2552 46.2205 21.9142 45.9344 21.6281C45.6483 21.342 45.3073 21.1168 44.9319 20.9658C44.5565 20.8149 44.1545 20.7415 43.75 20.75Z\\\"\\n    \u003e\u003c\/path\u003e\\n    \u003c\/svg\u003e\\n    \u003cspan class=\\\"appstle_tooltip_title\\\"\u003e{{{tooltipTitle}}}\u003c\/span\u003e\\n  \u003c\/div\u003e\\n\u003cdiv class=\\\"appstle_tooltip appstle_tooltip_hover\\\"\u003e\\n    \u003cdiv class=\\\"appstle_tooltip_content\\\"\u003e\\n      {{{toolTipDescription}}}\\n    \u003c\/div\u003e\\n   {{#showAppstleLink}}\\n    \u003cdiv class=\\\"appstle_tooltip_appstle\\\"\u003e\\n      \u003ca href=\\\"https:\/\/appstle.com\\\" class=\\\"appstle_link\\\" target=\\\"_blank\\\"\u003e\\n      POWERED BY APPSTLE\\n      \u003c\/a\u003e\\n    \u003c\/div\u003e\\n{{\/showAppstleLink}}\\n    \u003c\/div\u003e\\n{{\/showTooltip}}\\n\u003cstyle\u003e.widgetSellingPlanWrapper {\\n    display: grid;\\n    grid-template-columns: repeat(2, minmax(0, 1fr));\\n    gap: 0.5rem;\\n    grid-auto-rows: 1fr;\\n    margin-bottom: 6px;\\n}\\n.widgetSellingPlanWrapper input {\\n    display: none;\\n}\\n.widgetSellingPlanWrapper label {\\n    border-radius: 8px;\\n    border: 1px solid rgba(var(--color-foreground));\\n    padding: 0.5rem;\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    display: block;\\n    height: 100%;\\n    width: 100%;\\n    text-align: center;\\ncursor: pointer;\\ncolor: rgba(var(--color-foreground));\\n}\\n.widgetSellingPlanWrapper input:checked+label {\\n    background-color: rgba(var(--color-foreground));\\n    color: rgba(var(--color-background));\\n    border: 1px solid rgba(var(--color-background)) !important;\\n}\\n.appstle_lowercase {\\n    text-transform: lowercase;\\n}\\n.appstle_input_wrapper {\\n    position: relative;\\n}\\nspan.appstle_sellingPlan_discountText {\\n    position: absolute;\\n    background-color: color: rgba(var(--color-foreground));\\n    color: rgba(var(--color-background));\\n    border-radius: 3px;\\n    padding: 1px 18px;\\n    left: 50%;\\n    display: block;\\n    transform: translate(-50%, -50%);\\n    white-space: nowrap;\\n}\\nspan.appstle_sellingPlan_discountText:empty {\\n    display: none !important;\\n}\\nspan.appstle_lowercase.appstle_sellingPlan_price {\\n    color: rgba(var(--color-foreground));\\n}\\nspan.appstle_lowercase.appstle_sellingPlan_price.appstle_onetime_amount_compare {\\n    color: rgba(var(--color-foreground));\\n    text-decoration: line-through;\\n    padding: 0 3px;\\n}\\n#appstle_subscription_widget0 .appstle_tooltip_wrapper {\\n   margin-top: 8px;\\n    margin-bottom: 16px;\\n}\\n.appstle_subscription_wrapper {\\n    border: none !important;\\n}\\nlabel.appstle_widget_three {\\n    display: flex;\\n    flex-direction: column;\\n}\\n.widgetSellingPlanWrapper input:checked+label span {\\n   color: rgba(var(--color-background)) !important;\\n}\\n.appstle_sub_widget .appstle_subscription_wrapper{\\n    border-radius:unset !important;\\n}\\nspan.appstle_second_price_block:empty {\\n  display: none !important;\\n}\\n\u003c\/style\u003e\\n\u003c\/div\u003e{% endraw %}\",\"WIDGET_TYPE_4\":\"{% raw %}
15317\u003cdiv id=\\\"appstle-widget-template\\\"\u003e\\n  \u003cdiv class=\\\"appstle_sub_widget\\\" id=\\\"appstle_subscription_widget{{widgetId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle_widget_title\\\"\u003e{{{purchaseOptionsText}}}\u003c\/div\u003e\\n      \u003cdiv class=\\\"widgetSellingPlanWrapper\\\"\u003e\\n{{^requires_selling_plan}}\\n{{^showSubOptionBeforeOneTime}}\\n        \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n          \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\u003e\\n          \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\"\u003e\\n            {{oneTimePuchaseText}}\\n{{#showOneTimeComparePrice}}\\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount_compare\\\"\u003e\\n  {{{oneTimePuchaseComparePriceAmount}}}\\n\u003c\/span\u003e\\n{{\/showOneTimeComparePrice}}\\n      \u003cspan  class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount\\\"\u003e{{{oneTimePuchaseAmount}}}\/{{{oneTimeFrequencyText}}}\u003c\/span\u003e\\n          \u003c\/label\u003e\\n        \u003c\/div\u003e\\n{{\/showSubOptionBeforeOneTime}}\\n{{\/requires_selling_plan}}\\n        {{#sellingPlanVariants}}\\n           \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n      \u003cspan class=\\\"appstle_sellingPlan_discountText\\\"\u003e{{{formattedDiscountText}}}\u003c\/span\u003e\\n             \u003cinput type=\\\"radio\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" id=\\\"{{sellingPlanId}}\\\" value=\\\"{{sellingPlanId}}\\\" name=\\\"selling_plan\\\" {{#isChecked}}checked{{\/isChecked}}\u003e\\n{{^prepaidFlag}}\\n             \u003clabel for=\\\"{{sellingPlanId}}\\\"\u003e\\n                {{{name}}}\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{formattedPrice}}}\u003cspan\u003e\\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_formattext_block\\\"\u003e\/{{{sellingPlanFrequencyText}}}{{#isFrequencySubsequent}}{{\/isFrequencySubsequent}}\u003c\/span\u003e\\n\u003c\/div\u003e\\n \u003c\/label\u003e\\n{{\/prepaidFlag}}\\n{{#prepaidFlag}}\\n\u003clabel for=\\\"{{sellingPlanId}}\\\"\u003e\\n                {{{name}}}\\n\u003cdiv class=\\\"appstle_span_wrapper\\\"\u003e\\n        \u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_price_block\\\"\u003e{{{totalPrice}}}\u003c\/span\u003e\\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_discount_block appstle_formattedPrepaidPerDeliveryPriceText\\\"\u003e\u0026nbsp;{{{formattedPrepaidPerDeliveryPriceText}}}\u003c\/span\u003e\\n\u003c\/div\u003e\\n\u003c\/label\u003e\\n{{\/prepaidFlag}}\\n           \u003c\/div\u003e\\n        {{\/sellingPlanVariants}}\\n{{^requires_selling_plan}}\\n{{#showSubOptionBeforeOneTime}}\\n        \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n          \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\u003e\\n          \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\"\u003e\\n            {{oneTimePuchaseText}}\\n{{#showOneTimeComparePrice}}\\n\u003cspan class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount_compare\\\"\u003e\\n  {{{oneTimePuchaseComparePriceAmount}}}\\n\u003c\/span\u003e\\n{{\/showOneTimeComparePrice}}\\n      \u003cspan  class=\\\"appstle_lowercase appstle_sellingPlan_price appstle_onetime_amount\\\"\u003e{{{oneTimePuchaseAmount}}}\/{{{oneTimeFrequencyText}}}\u003c\/span\u003e\\n          \u003c\/label\u003e\\n        \u003c\/div\u003e\\n{{\/showSubOptionBeforeOneTime}}\\n{{\/requires_selling_plan}}\\n    \u003c\/div\u003e\\n{{#showStaticTooltip}}\\n\u003cdiv class=\\\"appstle_tooltip_wrapper_static\\\"\u003e {{{toolTipDescription}}}\u003c\/div\u003e\\n{{\/showStaticTooltip}}\\n{{#showTooltip}}\\n    \u003cdiv data-appstle-icon=\\\"\\\" class=\\\"appstle_tooltip_wrapper\\\"\u003e\\n    \u003csvg width=\\\"90\\\" height=\\\"90\\\" viewBox=\\\"0 0 90 90\\\" xmlns=\\\"http:\/\/www.w3.org\/2000\/svg\\\" class=\\\"tooltip_subscription_svg\\\"\u003e\\n    \u003cpath\\n      d=\\\"M45 0C20.1827 0 0 20.1827 0 45C0 69.8173 20.1827 90 45 90C69.8173 90 90 69.8174 90 45C90.0056 44.6025 89.9322 44.2078 89.7839 43.8389C89.6357 43.47 89.4156 43.1342 89.1365 42.8511C88.8573 42.568 88.5247 42.3432 88.158 42.1897C87.7912 42.0363 87.3976 41.9573 87 41.9573C86.6024 41.9573 86.2088 42.0363 85.842 42.1897C85.4753 42.3432 85.1427 42.568 84.8
15317635 42.8511C84.5844 43.1342 84.3643 43.47 84.2161 43.8389C84.0678 44.2078 83.9944 44.6025 84 45C84 66.5748 66.5747 84 45 84C23.4253 84 6 66.5747 6 45C6 23.4254 23.4253 6 45 6C56.1538 6 66.3012 10.5882 73.4375 18H65.4062C65.0087 17.9944 64.614 18.0678 64.2451 18.2161C63.8762 18.3643 63.5405 18.5844 63.2573 18.8635C62.9742 19.1427 62.7494 19.4753 62.596 19.842C62.4425 20.2088 62.3635 20.6024 62.3635 21C62.3635 21.3976 62.4425 21.7912 62.596 22.158C62.7494 22.5247 62.9742 22.8573 63.2573 23.1365C63.5405 23.4156 63.8762 23.6357 64.2451 23.7839C64.614 23.9322 65.0087 24.0056 65.4062 24H79.8125C80.6081 23.9999 81.3711 23.6838 81.9337 23.1212C82.4963 22.5586 82.8124 21.7956 82.8125 21V6.59375C82.821 6.18925 82.7476 5.78722 82.5966 5.41183C82.4457 5.03644 82.2205 4.69545 81.9344 4.40936C81.6483 4.12327 81.3073 3.898 80.9319 3.7471C80.5565 3.5962 80.1545 3.52277 79.75 3.53125C79.356 3.53941 78.9675 3.62511 78.6067 3.78344C78.2458 3.94177 77.9197 4.16963 77.6469 4.45402C77.3741 4.73841 77.16 5.07375 77.0168 5.44089C76.8737 5.80803 76.8042 6.19977 76.8125 6.59375V12.875C68.6156 4.86282 57.3081 0 45 0ZM43.75 20.75C43.356 20.7582 42.9675 20.8439 42.6067 21.0022C42.2458 21.1605 41.9197 21.3884 41.6469 21.6728C41.3741 21.9572 41.16 22.2925 41.0168 22.6596C40.8737 23.0268 40.8042 23.4185 40.8125 23.8125V47.375C40.8116 47.7693 40.8883 48.16 41.0385 48.5246C41.1886 48.8892 41.4092 49.2207 41.6875 49.5L54.0938 61.9375C54.6573 62.5011 55.4217 62.8177 56.2188 62.8177C57.0158 62.8177 57.7802 62.5011 58.3438 61.9375C58.9073 61.3739 59.224 60.6095 59.224 59.8125C59.224 59.0155 58.9073 58.2511 58.3438 57.6875L46.8125 46.1875V23.8125C46.821 23.408 46.7476 23.006 46.5966 22.6306C46.4457 22.2552 46.2205 21.9142 45.9344 21.6281C45.6483 21.342 45.3073 21.1168 44.9319 20.9658C44.5565 20.8149 44.1545 20.7415 43.75 20.75Z\\\"\\n    \u003e\u003c\/path\u003e\\n    \u003c\/svg\u003e\\n    \u003cspan class=\\\"appstle_tooltip_title\\\"\u003e{{{tooltipTitle}}}\u003c\/span\u003e\\n  \u003c\/div\u003e\\n    \u003cdiv class=\\\"appstle_tooltip\\\"\u003e\\n    \u003cdiv class=\\\"appstle_tooltip_content\\\"\u003e\\n      {{{toolTipDescription}}}\\n    \u003c\/div\u003e\\n{{#showAppstleLink}}\\n    \u003cdiv class=\\\"appstle_tooltip_appstle\\\"\u003e\\n      \u003ca href=\\\"https:\/\/appstle.com\\\" class=\\\"appstle_link\\\" target=\\\"_blank\\\"\u003e\\n      POWERED BY APPSTLE\\n      \u003c\/a\u003e\\n    \u003c\/div\u003e\\n{{\/showAppstleLink}}\\n    \u003c\/div\u003e\\n{{\/showTooltip}}\\n\u003cstyle\u003e\\n.widgetSellingPlanWrapper {\\n    display: grid;\\n    grid-template-columns: repeat(2, minmax(0, 1fr));\\n    gap: 16px;\\n    grid-auto-rows: 1fr;\\n    margin-bottom: 6px;\\nmargin-top: 10px\\n}\\n.widgetSellingPlanWrapper input {\\n    display: none;\\n}\\n.widgetSellingPlanWrapper label {\\n    border-radius: 10px;\\n    border: 1px solid rgba(var(--color-foreground, 0, 0, 0));\\n    padding: 0.5rem;\\n    display: flex !important;\\n    flex-direction: column;\\n    justify-content: center;\\n    align-items: center;\\n    display: block;\\n    height: 100%;\\n    width: 100%;\\n    text-align: center;\\ncursor: pointer;\\n}\\n.widgetSellingPlanWrapper input:checked+label {\\n    background-color: rgba(var(--color-foreground, 0, 0, 0));\\n}\\n.appstle_lowercase {\\n    text-transform: lowercase;\\n}\\n.appstle_input_wrapper {\\n    position: relative;\\n}\\nspan.appstle_sellingPlan_discountText {\\n    position: absolute;\\n    font-size: 1.2rem;\\n    background-color: rgba(var(--color-foreground, 0, 0, 0));\\n    color: rgba(var(--color-background, 255, 255, 255));\\n    border-radius: 3px;\\n    border: 2px solid rgba(var(--color-background, 255, 255, 255));\\n    padding: 1px 18px;\\n    left: 50%;\\n    display: block;\\n    transform: translate(-50%, -50%);\\n    white-space: nowrap;\\n}\\nspan.appstle_sellingPlan_discountText:empty {\\n    display: none !important;\\n}\\nspan.appstle_lowercase.appstle_sellingPlan_price.appstle_onetime_amount_compare {\\ntext-decoration: line-through;\\n}\\n.appstle_tooltip_wrapper {\\n    margin-bottom:10px;\\n}\\n.widgetSellingPlanWrapper input:checked+label {\\n    background-color: rgba(var(--color-foreground, 0, 0, 0));\\n    color: rgba(var(--color-background, 255, 255, 255));\\n    border: 2px solid rgba(var(--color-background, 255, 255, 255)) !important;\\n}\\n\u003c\/style\u003e\\n\u003c\/div\u003e{% endraw %}\",\"WIDGET_TYPE_5\":\"{% raw %}
15317\u003cdiv id=\\\"appstle-widget-template\\\"\u003e\\n    \u003cdiv class=\\\"appstle_sub_widget\\\" id=\\\"appstle_subscription_widget{{widgetId}}\\\"\u003e\\n\u003cdiv class=\\\"appstle_widget_title\\\"\u003e{{{purchaseOptionsText}}}\u003c\/div\u003e\\n        \u003cdiv class=\\\"widgetSellingPlanWrapper\\\"\u003e\\n{{^showSubOptionBeforeOneTime}}\\n{{^requires_selling_plan}}\\n          \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n            \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\/\u003e\\n            \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\"\u003e\\n              {{{oneTimePuchaseText}}}\\n            \u003c\/label\u003e\\n            \\n          \u003c\/div\u003e\\n{{\/requires_selling_plan}}\\n{{\/showSubOptionBeforeOneTime}}\\n          {{#sellingPlanVariants}}\\n             \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n               \u003cinput type=\\\"radio\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" id=\\\"{{sellingPlanId}}\\\" value=\\\"{{sellingPlanId}}\\\" name=\\\"selling_plan\\\"  {{#isChecked}}checked{{\/isChecked}} \/\u003e\\n               \u003clabel for=\\\"{{sellingPlanId}}\\\"\u003e\\n                  {{{name}}}\\n               \u003c\/label\u003e\\n        \\n             \u003c\/div\u003e\\n          {{\/sellingPlanVariants}}\\n{{#showSubOptionBeforeOneTime}}\\n{{^requires_selling_plan}}\\n          \u003cdiv class=\\\"appstle_input_wrapper\\\"\u003e\\n            \u003cinput type=\\\"radio\\\" id=\\\"appstle_selling_plan_label_1{{widgetId}}\\\" name=\\\"selling_plan\\\" value=\\\"\\\" class=\\\"appstleSellingPlan{{widgetId}}\\\" {{^subscriptionOptionSelectedDefault}}checked{{\/subscriptionOptionSelectedDefault}}\/\u003e\\n            \u003clabel for=\\\"appstle_selling_plan_label_1{{widgetId}}\\\"\u003e\\n              {{{oneTimePuchaseText}}}\\n            \u003c\/label\u003e\\n            \\n          \u003c\/div\u003e\\n{{\/requires_selling_plan}}\\n{{\/showSubOptionBeforeOneTime}}\\n      \u003c\/div\u003e\\n{{#showStaticTooltip}}\\n\u003cdiv class=\\\"appstle_tooltip_wrapper_static\\\"\u003e{{{toolTipDescription}}}\u003c\/div\u003e\\n{{\/showStaticTooltip}}\\n{{#showTooltip}}\\n    \u003cdiv data-appstle-icon=\\\"\\\" class=\\\"appstle_tooltip_wrapper\\\"\u003e\\n    \u003csvg width=\\\"90\\\" height=\\\"90\\\" viewBox=\\\"0 0 90 90\\\" xmlns=\\\"http:\/\/www.w3.org\/2000\/svg\\\" class=\\\"tooltip_subscription_svg\\\"\u003e\\n    \u003cpath\\n      d=\\\"M45 0C20.1827 0 0 20.1827 0 45C0 69.8173 20.1827 90 45 90C69.8173 90 90 69.8174 90 45C90.0056 44.6025 89.9322 44.2078 89.7839 43.8389C89.6357 43.47 89.4156 43.1342 89.1365 42.8511C88.8573 42.568 88.5247 42.3432 88.158 42.1897C87.7912 42.0363 87.3976 41.9573 87 41.9573C86.6024 41.9573 86.2088 42.0363 85.842 42.1897C85.4753 42.3432 85.1427 42.568 84.8635 42.8511C84.5844 43.1342 84.3643 43.47 84.2161 43.8389C84.0678 44.2078 83.9944 44.6025 84 45C84 66.5748 66.5747 84 45 84C23.4253 84 6 66.5747 6 45C6 23.4254 23.4253 6 45 6C56.1538 6 66.3012 10.5882 73.4375 18H65.4062C65.0087 17.9944 64.614 18.0678 64.2451 18.2161C63.8762 18.3643 63.5405 18.5844 63.2573 18.8635C62.9742 19.1427 62.7494 19.4753 62.596 19.842C62.4425 20.2088 62.3635 20.6024 62.3635 21C62.3635 21.3976 62.4425 21.7912 62.596 22.158C62.7494 22.5247 62.9742 22.8573 63.2573 23.1365C63.5405 23.4156 63.8762 23.6357 64.2451 23.7839C64.614 23.9322 65.0087 24.0056 65.4062 24H79.8125C80.6081 23.9999 81.3711 23.6838 81.9337 23.1212C82.4963 22.5586 82.8124 21.7956 82.8125 21V6.59375C82.821 6.18925 82.7476 5.78722 82.5966 5.41183C82.4457 5.03644 82.2205 4.69545 81.9344 4.40936C81.6483 4.12327 81.3073 3.898 80.9319 3.7471C80.5565 3.5962 80.1545 3.52277 79.75 3.53125C79.356 3.53941 78.9675 3.62511 78.6067 3.78344C78.2458 3.94177 77.9197 4.16963 77.6469 4.45402C77.3741 4.73841 77.16 5.07375 77.0168 5.44089C76.8737 5.80803 76.8042 6.19977 76.8125 6.59375V12.875C68.6156 4.86282 57.3081 0 45 0ZM43.75 20.75C43.356 20.7582 42.9675 20.8439 42.6067 21.0022C42.2458 21.1605 41.9197 21.3884 41.6469 21.6728C41.3741 21.9572 41.16 22.2925 41.0168 22.6596C40.8737 23.0268 40.8042 23.4185 40.8125 23.8125V47.375C40.8116 47.7693 40.8883 48.16 41.0385 48.5246C41.1886 48.8892 41.4092 49.2207 41.6875 49.5L54.0938 61.9375C54.6573 62.5011 55.4217 62.8177 56.2188 62.8177C57.0158 62.8177 57.7802 62.5011 58.3438 61.9375C58.9073 61.3739 59.224 60.6095 59.224 59.8125C59.224 59.0155 58.9073 58.2511 58.3438 57.6875L46.8125 46.1875V23.8125C46.821 23.408 46.7476 23.006 46.5966 22.6306C46.4457 22.2552 46.2205 21.9142 45.9344 21.6281C45.6483 21.342 45.3073 21.1168 44.9319 20.9658C44.5565 20.8149 44.1545 20.7415 43.75 20.75Z\\\"\\n    \u003e\u003c\/path\u003e\\n    \u003c\/svg\u003e\\n    \u003cspan class=\\\"appstle_tooltip_title\\\"\u003e{{{tooltipTitle}}}\u003c\/span\u003e\\n  \u003c\/div\u003e\\n\u003cdiv class=\\\"appstle_tooltip appstle_tooltip_hover\\\"\u003e\\n    \u003cdiv class=\\\"appstle_tooltip_content\\\"\u003e\\n      {{{toolTipDescription}}}\\n    \u003c\/div\u003e\\n  {{#showAppstleLink}}\\n    \u003cdiv class=\\\"appstle_tooltip_appstle\\\"\u003e\\n      \u003ca href=\\\"https:\/\/appstle.com\\\" class=\\\"appstle_link\\\" target=\\\"_blank\\\"\u003e\\n      POWERED BY APPSTLE\\n      \u003c\/a\u003e\\n    \u003c\/div\u003e\\n  {{\/showAppstleLink}}\\n    \u003c\/div\u003e\\n{{\/showTooltip}}\\n  \u003cstyle\u003e\\n  .widgetSellingPlanWrapper {\\n      display: grid;\\n      grid-template-columns: repeat(2, minmax(0, 1fr));\\n      gap: 8px;\\n      grid-auto-rows: 1fr;\\n      margin-bottom: 6px;\\n      margin-top: 10px;\\n  }\\n  \\n  .widgetSellingPlanWrapper input {\\n      display: none;\\n  }\\n  \\n  .widgetSellingPlanWrapper label {\\n      border-radius: 4px;\\n      border: 1px solid rgba(var(--color-foreground));\\n      padding: 0.5rem;\\n      display: flex;\\n      justify-content: center;\\n      align-items: center;\\n      display: block;\\n      height: 100%;\\n      width: 100%;\\n      text-align: center;\\n \\t color: rgba(var(--color-foreground));\\ncursor: pointer;\\n  }\\n  \\n  .widgetSellingPlanWrapper input:checked+label {\\n      background-color: rgba(var(--color-foreground));\\n \\t color: rgba(var(--color-background));\\n  }\\n  .appstle_lowercase {\\n      text-transform: lowercase;\\n  }\\n  \\n  \\n  .appstle_input_wrapper {\\n      position: relative;\\n  }\\n  \\n  span.appstle_sellingPlan_discountText {\\n      position: absolute;\\n      background-color: rgba(var(--color-foreground));\\n      color: rgba(var(--color-background));\\n      border-radius: 3px;\\n      padding: 1px 18px;\\n      left: 50%;\\n      display: block;\\n      transform: translate(-50%, -50%);\\n      white-space: nowrap;\\n  }\\n  span.appstle_sellingPlan_discountText:empty {\\n      display: none !important;\\n  }\\n  \u003c\/style\u003e\\n  \u003c\/div\u003e{% endraw %}\"}",
15318                
15319                
15320                  "bundle": {},
15321                
15322                
15323                  "labels": appstleStringSetting("{\\\"appstle.subscription.wg.cartHiddenAttributesSelectorV2\\\":\\\"\\\",\\\"appstle.subscription.wg.daysFrequencyTextV2\\\":\\\"Days\\\",\\\"appstle.subscription.wg.subscribeAndSaveSuccessV2\\\":\\\"Subscription Selected\\\",\\\"appstle.subscription.wg.addToShipmentSuccessTextV2\\\":\\\"Success\\\",\\\"appstle.subscription.wg.monthFrequencyTextV2\\\":\\\"Month\\\",\\\"appstle.subscription.wg.addToShipmentButtonTextV2\\\":\\\"Add to Shipment\\\",\\\"appstle.subscription.wg.onetimeDescriptionTextV2\\\":\\\"\\\",\\\"appstle.subscription.wg.oneTimePurchaseTextV2\\\":\\\"One Time Purchase\\\",\\\"appstle.subscription.wg.loyaltyPerkDescriptionTextV2\\\":\\\"{{#isDiscountTypeFreeProduct}}\u003cdiv style='display: flex;'\u003e\u003cdiv style='height: 60px; width: 60px; flex-shrink: 0; margin-right: 10px;'\u003e\u003cimg style='width: 100%' src={{{featured_image}}}\u003e\u003c\\\/img\u003e\u003c\\\/div\u003e\u003cdiv\u003eAfter {{{billingCycleBlock}}} orders,\u003cspan style='color: #ffc000;font-weight: 700;';\u003e get a FREE {{freeProductName}} \u003c\\\/span\u003e\u003c\\\/div\u003e\u003cdiv\u003e{{\\\/isDiscountTypeFreeProduct}}{{#isDiscountTypePercentage}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan style='color: #ffc000;font-weight: 700;';\u003e{{{discount}}}% OFF your entire order\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypePercentage}}{{#isDiscountTypeShipping}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan style='color: #ffc000;font-weight: 700;';\u003eshipping at {{{formatDiscountedPrice}}}\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypeShipping}}{{#isDiscountTypeFixed}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan style='color: #ffc000;font-weight: 700;';\u003e{{{formatDiscountedPrice}}} OFF your entire order\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypeFixed}}{{#isDiscountTypeFixedPrice}}After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class='appstle-loyalty-billing-cycle-count'\u003e{{{billingCycleBlock}}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget this product at \u003cspan style='color: #ffc000;font-weight: 700;';\u003e{{{formatDiscountedPrice}}}\u003c\\\/span\u003e\u003c\\\/span\u003e.{{\\\/isDiscountTypeFixedPrice}}\\\",\\\"appstle.subscription.wg.bundleDiscountTextV2\\\":\\\"bundle discount extra: {{bundleDiscount}} off\\\",\\\"appstle.subscription.wg.atcButtonTextSelectorV2\\\":\\\"\\\",\\\"appstle.subscription.wg.oneTimeFrequencyTextV2\\\":\\\"One Time\\\",\\\"appstle.subscription.wg.allowFulfilmentCountViaPropertiesV2\\\":\\\"false\\\",\\\"appstle.subscription.wg.valdiateFormSelectorV2\\\":\\\"\\\",\\\"appstle.subscription.wg.monthsFrequencyTextV2\\\":\\\"Months\\\",\\\"appstle.subscription.wg.prepaidSaveBadgeTextV2\\\":\\\"SAVE {{selectedDiscountPercentage}}\\\",\\\"appstle.subscription.wg.manageSubscriptionButtonTextV2\\\":\\\"Manage Subscription\\\",\\\"appstle.subscription.wg.yearFrequencyTextV2\\\":\\\"Year\\\",\\\"appstle.subscription.wg.widgetPriceChangeListenerSelectorV2\\\":\\\"\\\",\\\"appstle.subscription.wg.atcButtonTextV2\\\":\\\"\\\",\\\"appstle.subscription.wg.noSubscriptionLabelTextV2\\\":\\\"No Subscription\\\",\\\"appstle.subscription.wg.cancelAnytimeLabelTextV2\\\":\\\"Cancel Anytime\\\",\\\"appstle.subscription.wg.addToShipmentErrorTextV2\\\":\\\"Error\\\",\\\"appstle.subscription.wg.weeksFrequencyTextV2\\\":\\\"Weeks\\\",\\\"appstle.subscription.wg.weeklyLabelTextV2\\\":\\\"Weekly\\\",\\\"appstle.subscription.wg.displayAddToExistingSubscriptionButtonForNotLoggedInV2\\\":\\\"false\\\",\\\"appstle.subscription.wg.addToShipmentProcessingV2\\\":\\\"Processing...\\\",\\\"appstle.subscription.wg.showWidgetStaticV2\\\":\\\"false\\\",\\\"appstle.subscription.wg.deliveryEveryFrequencyTextV2\\\":\\\"Delivery Frequency\\\",\\\"appstle.subscription.wg.subscribeAndSaveInitalV2\\\":\\\"Subscribe and save\\\",\\\"appstle.subscription.wg.allowRefreshOnCartPageV2\\\":\\\"false\\\",\\\"appstle.subscription.wg.prepaidLabelTextV2\\\":\\\"Prepaid\\\",\\\"appstle.subscription.wg.monthlyLabelTextV2\\\":\\\"Monthly\\\",\\\"appstle.subscription.wg.displayAddToExistingSubscriptionButtonToSubscribersOnlyV2\\\":\\\"false\\\",\\\"appstle.subscription.wg.yearsFrequencyTextV2\\\":\\\"Years\\\",\\\"appstle.subscription.wg.addToShipmentTooltipTextV2\\\":\\\"Please avoid double delivery charges! Login to add this product to an upcoming delivery.\\\",\\\"appstle.subscription.wg.weekFrequencyTextV2\\\":\\\"Week\\\",\\\"appstle.subscription.wg.unsubscribeFrequencyTextV2\\\":\\\"One-time Purchase\\\",\\\"appstle.subscription.wg.widgetVariantChangeListenerSelectorV2\\\":\\\"\\\",\\\"appstle.subscription.wg.atcButtonTextSelectorObserverV2\\\":\\\"\\\",\\\"appstle.subscription.wg.dayFrequencyTextV2\\\":\\\"day\\\",\\\"appstle.subscription.wg.showPrepidPerDeliveryProductPriceV2\\\":\\\"false\\\",\\\"appstle.subscription.wg.offFrequencyTextV2\\\":\\\"Off\\\",\\\"appstle.subscription.wg.prepayLabelTextV2\\\":\\\"Prepay\\\",\\\"appstle.subscription.wg.productPageUnitPriceSelectorV2\\\":\\\"\\\",\\\"appstle.subscription.wg.frequencyCombinedWidgetTextV2\\\":\\\"Frequency\\\",\\\"appstle.subscription.wg.showNewLoyaltyUI\\\":\\\"false\\\",\\\"appstle.subscription.wg.sellingPlanTitleTextNonPrepaid\\\":\\\"{{sellingPlanName}}\\\",\\\"appstle.subscription.wg.selectDeliverOptionV2\\\":\\\"Select Delivery Option\\\",\\\"appstle.subscription.wg.yearlyLabelTextV2\\\":\\\"Yearly\\\"}"),
15324                
15325                "css": {
15326                    "appstle_subscription_widget": {
15327                        "margin-top": appstleStringSetting("") ,
15328                        "margin-bottom": appstleStringSetting(""),
15329                    },
15330
15331                    "appstle_subscription_wrapper": {
15332                        "border-width": appstleStringSetting(""),
15333                        "border-color": appstleStringSetting(""),
15334                    },
15335
15336                    "appstle_circle": {
15337                        "border-color": appstleStringSetting(""),
15338                    },
15339
15340                    "appstle_dot": {
15341                        "background-color": appstleStringSetting(""),
15342                    },
15343
15344                    "appstle_select": {
15345                        "padding-top": appstleStringSetting(""),
15346                        "padding-bottom": appstleStringSetting(""),
15347                        "padding-left": appstleStringSetting(""),
15348                        "padding-right": appstleStringSetting(""),
15349                        "border-width": appstleStringSetting(""),
15350                        "border-style": appstleStringSetting(""),
15351                        "border-color": appstleStringSetting(""),
15352                        "border-radius": appstleStringSetting(""),
15353                    },
15354
15355                    "tooltip_subscription_svg": {
15356                        "fill": appstleStringSetting(""),
15357                    },
15358
15359                    "appstle_tooltip": {
15360                        "color": appstleStringSetting(""),
15361                        "background-color": appstleStringSetting(""),
15362                    },
15363
15364                    "appstle_tooltip_border_top_color": {
15365                        "border-top-color": appstleStringSetting(""),
15366                    },
15367
15368                    "appstle_subscription_final_price": {
15369                        "color": appstleStringSetting(""),
15370                    },
15371                    "appstle_widget_text_color": {
15372                        "color": appstleStringSetting(""),
15373                    },
15374                    "appstle_selected_background": {
15375                        "background": "transparent",
15376                    },
15377                    "elementCSS": appstleStringSetting("[]"),
15378                    "customCSS": appstleStringSetting(""),
15379                    "customerPortalCss": appstleStringSetting(""),
15380                    "externalStyleTag": appstleStringSetting(""),
15381                    "themeCss": appstleStringSetting(""),
15382                }
15383            };
15384          
15385
15386          window.AppstleSubscription = window.AppstleSubscription || JSON.parse(JSON.stringify(RS));
15387
15388          sessionStorage['appstleSubscriptionConfig'] = JSON.stringify(RS.Config);
15389
15390          
15391            try {
15392            
15393                window.appstle_build_a_box_labels = {"perDeliveryLabelTextV2":"\\\/delivery","variantNotAvailable":"Not Available","saveDiscountText":"{{discount}}","bundleSummaryTextV2":"Your bundle is empty. Please add products to your bundl
15393es to see bundle summary here.","freeProductLabelTextV2":"Free","bundleDescriptionTextV2":"Our bundle of all bundles, The Ultimate Superfood Bundle delivers exactly what it promises - a complete superfood solution. With 7 superfood blends each created to empower every aspect of your health and wellbeing - from immunity and gut health to energy \u0026 better focus.","productDetails":"Product Details","failedToAddMsgText":"Your cart can't have more than {{maxProduct}} products","cart":"Cart","reviewBundleTextV2":"Review Bundle","addButtonText":"Add","minimumQuantityToCheckoutV2":"Minimum {{quantity}} quantity to checkout","buildBoxErrormsgV2":"Build a Box token is Invalid, Please reach out to support.","continueShopping":"Continue Shopping","failedToAddTitleText":"Failed to add","spendAmountGetDiscount":"Spend {{amount}} get {{percent}}% discount","maxiumQuantityToCheckoutV2":"Maxium {{quantity}} quantity to checkout","contentsOnModalTextV2":"Contents","nextStepButtonTextV2":"Next Step","choosePlanLifeStyleTextV2":"Choose a plan to match your lifestyle","selectMinimumProductButtonText":"Please select {{minProduct}} minimum product","subtotal":"Subtotal","buyQuantityGetDiscount":"Buy {{quantity}} get {{percent}}% discount","loyaltyTablePercentageTextV2":"After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class=''\u003e{{billingCycle}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan class='appstle-loyalty-discount-amount'\u003e{{discount}}% off\u003c\\\/span\u003e\u003c\\\/span\u003e.","loyaltyTablePriceTextV2":"After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class=''\u003e{{billingCycle}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget at \u003cspan class='appstle-loyalty-discount-amount'\u003e{{price}}\u003c\\\/span\u003e\u003c\\\/span\u003e.","myDeliveryText":"My {{selectedSellingPlanDisplayName}} delivery","removeItem":"Remove","productsToProceedText":"Please select products to proceed","previousStepButtonTextV2":"Previous step","loadMoreTextV2":"Load more","selectedFrequencyLabelText":"Selected Frequency","addToCartButtonTextV2":"Add To Cart","basePriceFormatFieldV2":"{{unitPrice}}\\\/{{quantityUnit}}","title":"Build-A-Box","productPriceFormatField":"{{price}}","reviewOrdeDescriptionTextV2":"Check your items and select your required frequency plan","quantityLabelV2":"Quantity","minimumOrderAmountLabelTextV2":"Minimum order amount {{minOrderAmount}}.","subscriptionNotAvailableButtonV2":"Subscription not available","shoppingCart":"Shopping Cart","checkoutMessage":"Shipping and taxes calculated at checkout.","discountPopupCheckoutMessageV2":"Discount","selectedButtonTextV2":"Selected","congratsMessageText":null,"okBtnText":"Ok","tieredDiscount":"Tiered Discount","choosePlanLifeStyleDescriptionTextV2":"Cutoff each week to amend your meals is midnight on Thursday's. (Delivery Schedule is as follows: Gold Coast - Mondays | Brisbane \u0026 Sunshine Coast - Wednesdays)","orderNoteLabelTextV2":"Order Note","minimumToCheckoutV2":"Minimum {{quantity}} to checkout","loyaltyTableFixedTextV2":"After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class=''\u003e{{billingCycle}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan class='appstle-loyalty-discount-amount'\u003e{{price}} off\u003c\\\/span\u003e\u003c\\\/span\u003e.","editQuantity":"Edit Quantity","chooseProductsTextV2":"Choose Products","loyaltyTableFreeProductTextV2":"After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class=''\u003e{{billingCycle}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan class='appstle-loyalty-discount-amount'\u003eFREE PRODUCT ({{productName}})\u003c\\\/span\u003e\u003c\\\/span\u003e.","loyaltyTableShippingTextV2":"After \u003cspan class='appstle-loyalty-billing-cycle'\u003e\u003cspan class=''\u003e{{billingCycle}}\u003c\\\/span\u003e order\u003c\\\/span\u003e, \u003cspan class='appstle-loyalty-discount'\u003eget \u003cspan class='appstle-loyalty-discount-amount'\u003eshipping at {{price}}\u003c\\\/span\u003e\u003c\\\/span\u003e.","spentText":null,"quantityLabel":null,"addButtonV2":"Add","loyaltyTableFreeTrailTextV2":"Get \u003cspan class='appstle-loyalty-free-trial-discount'\u003e{{discount}} \u003cspan class='appstle-loyalty-free-trial-discount-count' style='text-transform: lowercase;'\u003e{{discountType}} \u003c\\\/span\u003e\u003c\\\/span\u003e \u003cspan class='appstle-loyalty-free-trial-text'\u003efree trial.\u003c\\\/span\u003e","bundleCheckoutTextV2":"Checkout","reviewOrderTextV2":"Review Order","goBackButtonText":"Go Back","selectPlanTextV2":"Select Plan","viewProduct":"View Product","oneTimePurchaseTextV2":"One Time Purchase","bundleOnModalTextV2":"Bundle","proceedToCheckoutButtonText":"Proceed to checkout","pleaseWaitLabelTextV2":"Please wait...","typeToSearchPlaceholderTextV2":"Type to search","selectedProgressLabelTextV2":"Selected","outOfStockTextV2":"Out of stock"};
15394            
15395            } catch (e) {
15396            console.error("Error parsing build a box labels:", e);
15397            }
15398          
15399
15400          var _RSConfig = _RSConfig || {};
15401
15402          _RSConfig.shop = "rocky-mountain-oils.myshopify.com";
15403
15404          
15405
15406          
15407
15408            
15409            _RSConfig.shopMoneyFormat = "${{amount}}";
15410            _RSConfig.shopMoneyFormatWithCurrencyFormat = "${{amount}} USD";
15411            
15412
15413            
15414
15415        }
15416
15417        
15418        
15419            _RSConfig.assetRev = "8ab4de6cd61912f7266d1a8cc6dcac54";
15420        
15421
15422</script>
15422
15423
15424<style id="appstle-payment-button-override">
15425    .shopify-payment-button {display: none;}
15426</style>
15427<script>
15428 let appstleCount = 0
15429 function isAppstleJSInitiated() {
15430    appstleCount++;
15431    if (window?.["RSConfig"] || appstleCount > 20) {
15432        let appstleStyleElement = document.querySelector('#appstle-payment-button-override');
15433        if (appstleStyleElement) {
15434            appstleStyleElement.remove();
15435        }
15436    } else {
15437        setTimeout(isAppstleJSInitiated, 500)
15438    }
15439 }
15440 isAppstleJSInitiated();
15441</script>
15441
15442
15443<script>
15444    var appstleExternalStyle = document.createElement('style');
15445    appstleExternalStyle.textContent = appstleStringSetting("");
15446    document.body.appendChild(appstleExternalStyle);
15447</script>
vendor: 1 bytes, line 15447
15447
15448<script>
15449    function pollAppstleInit() {
15450        if (window?.appstleInit) {
15451        window?.appstleInit()
15452        } else {
15453        setTimeout(pollAppstleInit, 30);
15454        }
15455    }
15456</script>
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472    
15473
15474    
15474<script src="https://subscription-admin.appstle.com/assets/js/appstle-subscription.min.js?shop=rocky-mountain-oils.myshopify.com&v=1784182483761" defer ></script>
15474
15475
15476    
15477
15478    
15479    
15480
15481
15482
15483</div>
15483<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
15483
15484</body>
15485</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.