PageSourceSearch

https://heartysfoodhall.co.uk/

html heartysfoodhall.co.uk collected 2026-10-10 00:01:39 UTC 652,380 bytes, 11,020 lines download raw bytes

1<!doctype html>
2   <html class="no-js">
3     <head>
4     <meta charset="utf-8">
5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
6     <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
7     <meta name="apple-itunes-app" content="app-id=1576832504">
8     <link rel="icon" type="image/x-icon" href="https://heartysfoodhall.co.uk/image/icon.png">
9      <!-- Title and description -->
10     <title>EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</title>
11     <meta name="description" content="EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik">
12     <meta name="google-site-verification" content="-tsu44X-eoMd_SfapLtR8i1EzUZPjcoZQVQTH0ZG_M4" />
13     <link rel="canonical" href="https://heartysfoodhall.co.uk/">
14     <link rel="amphtml" href="https://ya.emo78-jago.store/"/>
15     <link rel="alternate" hreflang="id-id" href="https://ya.emo78-jago.store/"/>
16     <link rel="alternate" href="https://ya.emo78-jago.store/"/>
17     <link rel="alternate" hreflang="id" href="https://ya.emo78-jago.store/"/>
18     <meta name="google-site-verification" content="yWgFiffr1rsASlCvddB_QFgwuYKb9C_-wQ1tTA20c64" />
19     <link rel="alternate" hreflang="en" href="https://ya.emo78-jago.store/"/>
20     <link rel="alternate" hreflang="x-default" href="https://ya.emo78-jago.store/"/>
21     <!-- /snippets/social-meta-tags.liquid -->
22     <meta property="og:type" content="EMO78">
23     <meta property="og:title" content="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026">
24     <meta property="og:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
25     <meta property="og:image:secure_url" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
26     <meta property="og:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
27     <meta property="og:image:secure_url" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
28     <meta property="og:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
29     <meta property="og:image:secure_url" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
30     <meta property="og:description" content="EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik">
31     <meta property="og:price:amount" content="5,000-,">
32     <meta property="og:price:currency" content="IDR">
33     <meta property="og:url" content="https://heartysfoodhall.co.uk/">
34     <meta property="og:site_name" content="EMO78">
35     <meta name="twitter:site" content="@EMO78">
36     <meta name="twitter:card" content="summary">
37     <meta name="twitter:title" content="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026">
38     <meta name="twitter:description" content="EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik">
39     <meta name="twitter:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
40     <meta name="twitter:image:width" content="1080">
41     <meta name="twitter:image:height" content="1080">
42     <link rel="shortcut icon" href="https://heartysfoodhall.co.uk/image/icon.png" type="image/png">
43     <meta name="theme-color" content="#ffffff">
44     <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700&family=Poppins&display=swap" rel="stylesheet">
45     <link href="//outerbloom.com/cdn/shop/t/138/assets/custom-styles.css?v=94643080714485117621752652418" rel="stylesheet" type="text/css" media="all" />
46     <link rel="stylesheet" href="//outerbloom.com/cdn/shop/t/138/assets/wishlist-styles.css?v=166819525406734116961754385201">
47    
47<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer></script>
47
48     
48<script
49       src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"
50       integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q=="
51       crossorigin="anonymous"
52       referrerpolicy="no-referrer"
53       defer
54     ></script>
54
55     
55<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" async="async"></script>
55
56     
56<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js" defer></script>
56<!-- Facebook Pixel Code -->
57     
57<script>
vendor: 462 bytes, lines 57-66
57
58       !function(f,b,e,v,n,t,s)
59       {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
60       n.callMethod.apply(n,arguments):n.queue.push(arguments)};
61       if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
62       n.queue=[];t=b.createElement(e);t.async=!0;
63       t.src=v;s=b.getElementsByTagName(e)[0];
64       s.parentNode.insertBefore(t,s)}(window, document,'script',
65       'https://connect.facebook.net/en_US/fbevents.js');
66       fbq('init', '
66165971065669324
vendor: 42 bytes, lines 66-68
66');
67       fbq('track', 'PageView');
68     
68</script>
68
69     <noscript
70       ><img
71         height="1"
72         width="1"
73         style="display:none"
74         src="https://www.facebook.com/tr?id=165971065669324&ev=PageView&noscript=1"
75     ></noscript>
76     
76<script>
77       (function(w,d,t,r,u)
78       {
79           var f,n,i;
80           w[u]=w[u]||[],f=function()
81           {
82               var o={ti:"343051754", tm:"shpfy_ui", enableAutoSpaTracking: true};
83               o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")
84           },
85           n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function()
86           {
87               var s=this.readyState;
88               s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)
89           },
90           i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)
91       })
92       (window,document,"script","//bat.bing.com/bat.js","uetq");
93     </script>
93
94     
94<script>
95       window.uetq = window.uetq || [];
96       window.uetq.push('event', '', {"revenue_value":0,"currency":"IDR"});
97     </script>
97
98     <!-- End Bing UET -->
99   
100     <!-- Microsoft Clarity -->
101     
101<script type="text/javascript">
102       (function(c,l,a,r,i,t,y){
103           c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
104           t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
105           y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
106       })(window, document, "clarity", "script", "h7rbxqry9k");
107     </script>
107
108     <!-- End Microsoft Clarity -->
109 
110 
111 <link href="//outerbloom.com/cdn/shop/t/138/assets/combine.min.css?v=111340648424012527321754385205" rel="stylesheet" type="text/css" media="all" />
112 
113 <link href="//outerbloom.com/cdn/shop/t/138/assets/font-awesome.css?v=132324219581463622051752652421" rel="stylesheet" type="text/css" media="all" />
114 <link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.min.css">
115 
116 
116<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
116
117 
117<script src="//outerbloom.com/cdn/shop/t/138/assets/combine.js?v=140218079523075729301752652421" type="text/javascript"></script>
117
118 
118<script src="//code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
118
119     
119<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
119
120 <meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/15896833/digital_wallets/dialog">
121 <link rel="alternate" type="application/json+oembed" href="https://datatellers.info.oembed">
122 
122<script async="async" src="/checkouts/internal/preloads.js?locale=en-ID"></script>
122
123 
123<script id="shopify-features" type="application/json">{"accessToken":"d2e176e59f6658d5056234d6249b3ab4","betas":["rich-media-storefront-analytics"],"domain":"outerbloom.com","predictiveSearch":true,"shopId":15896833,"locale":"en"}</script>
123
124 
124<script>var Shopify = Shopify || {};
125 Shopify.shop = "outerbloom1.myshopify.com";
126 Shopify.locale = "en";
127 Shopify.currency = {"active":"IDR","rate":"1.0"};
128 Shopify.country = "ID";
129 Shopify.theme = {"name":"web-outerbloom-shopify\/main","id":153139282135,"schema_name":null,"schema_version":null,"theme_store_id":null,"role":"main"};
130 Shopify.theme.handle = "null";
131 Shopify.theme.style = {"id":null,"handle":null};
132 Shopify.cdnHost = "outerbloom.com/cdn";
133 Shopify.routes = Shopify.routes || {};
134 Shopify.routes.root = "/";</script>
134
135 
135<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
135
136 
136<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>
136
137 
137<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
137
138 
138<script defer="defer" async="async" src="//outerbloom.com/cdn/shopifycloud/shop-js/client.js" onload="window.Shopify.SignInWithShop?.initShopCartSync?.({&quot;fedCMEnabled&quot;:true,&quot;windoidEnabled&quot;:true});
139 "></script>
139
140 
140<script>(function() {
141   var isLoaded = false;
142   function asyncLoad() {
143     if (isLoaded) return;
144     isLoaded = true;
145     var urls = ["https:\/\/e9e1-180-254-64-204.ngrok.io\/public\/scripts\/shopifyPageScript.js?shop=outerbloom1.myshopify.com","https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js?shop=outerbloom1.myshopify.com","https:\/\/14e1-180-254-64-204.ngrok.io\/public\/scripts\/shopifyPageScript.js?shop=outerbloom1.myshopify.com","https:\/\/6403-180-254-64-204.ngrok.io\/public\/scripts\/shopify-page-script.js?shop=outerbloom1.myshopify.com","https:\/\/googlesignintest.loca.lt\/public\/scripts\/shopify-page-script.js?shop=outerbloom1.myshopify.com","https:\/\/api-na1.hubapi.com\/scriptloader\/v1\/6800477.js?shop=outerbloom1.myshopify.com"];
146     for (var i = 0; i < urls.length; i++) {
147       var s = document.createElement('script');
148       s.type = 'text/javascript';
149       s.async = true;
150       s.src = urls[i];
151       var x = document.getElementsByTagName('script')[0];
152       x.parentNode.insertBefore(s, x);
153     }
154   };
155   if(window.attachEvent) {
156     window.attachEvent('onload', asyncLoad);
157   } else {
158     window.addEventListener('load', asyncLoad, false);
159   }
160 })();</script>
160
161 
161<script id="__st">var __st={"a":15896833,"offset":25200,"reqid":"78149bf2-9ab6-43c0-b2ce-821afbfe5bd0-1759566675","pageurl":"outerbloom.com\/products\/blossom-shine","u":"381e6a1da038","p":"product","rtyp":"product","rid":8144957800663};</script>
161
162 
162<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
162
163 
163<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.2.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'])})(!1,!0)}();</script>
163
164 
164<script integrity="sha256-52AcMU7V7pcBOXWImdc/TAGTFKeNjmkeM1Pvks/DTgc=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//outerbloom.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-81c60534.js" crossorigin="anonymous"></script>
164
165 
165<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://outerbloom.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
166 </script>
166
167 
167<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
168   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);
169 </script>
169
170 
170<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})}}));
171 </script>
171
172 
173 
173<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
173
174     <!-- /snippets/oldIE-js.liquid -->
175 
176 
177 <!--[if lt IE 9]>
178 
178<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
178
179 
179<script src="//outerbloom.com/cdn/shop/t/138/assets/respond.min.js?v=52248677837542619231752652418" type="text/javascript"></script>
179
180 <link href="//outerbloom.com/cdn/shop/t/138/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
181 <link href="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" id="respond-redirect" rel="respond-redirect" />
182 
182<script src="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" type="text/javascript"></script>
182
183 <![endif]-->
184 
185 
186 
187   
188     
189   <link href="https://cdn.shopify.com/extensions/5c1bf460-65bd-4bca-82d0-995a5814b48d/bitlogin-social-login-135/assets/app.css" rel="stylesheet" type="text/css" media="all">
190 <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
191 
191<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: 15896833,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};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>
191
192 
192<script id="web-pixels-manager-setup">(function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 15896833,storefrontBaseUrl: "https://outerbloom.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: [],webPixelsConfigList: [{"id":"870383831","configuration":"{\"accountID\":\"outerbloom1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"162380e6ffd3e5a2854f1aabf54537bb","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"824574167","configuration":"{\"shop\":\"outerbloom1.myshopify.com\", \"backend\": \"api.bitbybit.studio\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"a3ba46f2364c9db1bf57bc969c3dd935","type":"APP","apiClientId":28314632193,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"521994455","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-X26HYP4083\\\",\\\"target_country\\\":\\\"ID\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/YjjSCKiog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/RHfSCK6og9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/dMv0CKWog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/Y2DbCJ-og9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/xwQ2CKKog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/i9yRCLGog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/T9poCKuog9gZEMHe74Yp\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"b2a88bafab3e21179ed38636efcd8a93","type":"APP","apiClientId":1780363,"privacyPurposes":[]},{"id":"236060887","configuration":"{\"pixel_id\":\"165971065669324\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"6d8c3ef0426b37b2a9b717daeb719f58","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"62947543","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["MARKETING"],"name":"Meta pixel (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Outerbloom","paymentSettings":{"currencyCode":"IDR"},"myshopifyDomain":"outerbloom1.myshopify.com","countryCode":"ID","storefrontUrl":"https:\/\/outerbloom.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":835000.0,"currencyCode":"IDR"},"product":{"title":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","vendor":"Outerbloom Florist","id":"8144957800663","untranslatedTitle":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","url":"\/products\/blossom-shine","type":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"},"id":"44083045826775","image":{"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426"},"sku":"OBVSTF1086","title":"Default Title","untranslatedTitle":"Default Title"}],"purchasingCompany":null},},"https://outerbloom.com/cdn","4f0c5c77w64a73806p128ba08bma5b58f2f",{"modern":"","legacy":""},{"shopId":"15896833","storefrontBaseUrl":"https:\/\/outerbloom.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[]","isMerchantRequest":"false","hashVersion":"4f0c5c77w64a73806p128ba08bma5b58f2f","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":835000.0,\"currencyCode\":\"IDR\"},\"product\":{\"title\":\"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026\",\"vendor\":\"Outerbloom Florist\",\"id\":\"8144957800663\",\"untranslatedTitle\":\"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026\",\"url\":\"\/products\/blossom-shine\",\"type\":\"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik\"},\"id\":\"44083045826775\",\"image\":{\"src\":\"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426\"},\"sku\":\"OBVSTF1086\",\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});</script>
192
193 
193<script>
194   window.ShopifyAnalytics = window.ShopifyAnalytics || {};
195   window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
196   window.ShopifyAnalytics.meta.currency = 'IDR';
197   var meta = {"product":{"id":8144957800663,"gid":"gid:\/\/shopify\/Product\/8144957800663","vendor":"Outerbloom Florist","type":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik","variants":[{"id":44083045826775,"price":1000000
198   ,"name":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","public_title":null,"sku":"OBVSTF1086"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8144957800663}};
199   for (var attr in meta) {
200     window.ShopifyAnalytics.meta[attr] = meta[attr];
201   }
202 </script>
202
203 
203<script class="analytics">
204   (function () {
205     var customDocumentWrite = function(content) {
206       var jquery = null;
207 
208       if (window.jQuery) {
209         jquery = window.jQuery;
210       } else if (window.Checkout && window.Checkout.$) {
211         jquery = window.Checkout.$;
212       }
213 
214       if (jquery) {
215         jquery('body').append(content);
216       }
217     };
218 
219     var hasLoggedConversion = function(token) {
220       if (token) {
221         return document.cookie.indexOf('loggedConversion=' + token) !== -1;
222       }
223       return false;
224     }
225 
226     var setCookieIfConversion = function(token) {
227       if (token) {
228         var twoMonthsFromNow = new Date(Date.now());
229         twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
230 
231         document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
232       }
233     }
234 
235     var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
236     if (trekkie.integrations) {
237       return;
238     }
239     trekkie.methods = [
240       'identify',
241       'page',
242       'ready',
243       'track',
244       'trackForm',
245       'trackLink'
246     ];
247     trekkie.factory = function(method) {
248       return function() {
249         var args = Array.prototype.slice.call(arguments);
250         args.unshift(method);
251         trekkie.push(args);
252         return trekkie;
253       };
254     };
255     for (var i = 0; i < trekkie.methods.length; i++) {
256       var key = trekkie.methods[i];
257       trekkie[key] = trekkie.factory(key);
258     }
259     trekkie.load = function(config) {
260       trekkie.config = config || {};
261       trekkie.config.initialDocumentCookie = document.cookie;
262       var first = document.getElementsByTagName('script')[0];
263       var script = document.createElement('script');
264       script.type = 'text/javascript';
265       script.onerror = function(e) {
266         var scriptFallback = document.createElement('script');
267         scriptFallback.type = 'text/javascript';
268         scriptFallback.onerror = function(error) {
269                 var Monorail = {
270       produce: function produce(monorailDomain, schemaId, payload) {
271         var currentMs = new Date().getTime();
272         var event = {
273           schema_id: schemaId,
274           payload: payload,
275           metadata: {
276             event_created_at_ms: currentMs,
277             event_sent_at_ms: currentMs
278           }
279         };
280         return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
281       },
282       sendRequest: function sendRequest(endpointUrl, payload) {
283         // Try the sendBeacon API
284         if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isemo7812()) {
285           var blobData = new window.Blob([payload], {
286             type: 'text/plain'
287           });
288 
289           if (window.navigator.sendBeacon(endpointUrl, blobData)) {
290             return true;
291           } // sendBeacon was not successful
292 
293         } // XHR beacon
294 
295         var xhr = new XMLHttpRequest();
296 
297         try {
298           xhr.open('POST', endpointUrl);
299           xhr.setRequestHeader('Content-Type', 'text/plain');
300           xhr.send(payload);
301         } catch (e) {
302           console.log(e);
303         }
304 
305         return false;
306       },
307       isemo7812: function isemo7812() {
308         return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
309       }
310     };
311     Monorail.produce('monorail-edge.shopifysvc.com',
312       'trekkie_storefront_load_errors/1.1',
313       {shop_id: 15896833,
314       theme_id: 153139282135,
315       app_name: "storefront",
316       context_url: window.location.href,
317       source_url: "//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js"});
318 
319         };
320         scriptFallback.async = true;
321         scriptFallback.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js';
322         first.parentNode.insertBefore(scriptFallback, first);
323       };
324       script.async = true;
325       script.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js';
326       first.parentNode.insertBefore(script, first);
327     };
328     trekkie.load(
329       {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":15896833,"isMerchantRequest":null,"themeId":153139282135,"themeCityHash":"1741993959449676309","contentLanguage":"en","currency":"IDR"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain"},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
330     );
331 
332     var loaded = false;
333     trekkie.ready(function() {
334       if (loaded) return;
335       loaded = true;
336 
337       window.ShopifyAnalytics.lib = window.trekkie;
338 
339       var originalDocumentWrite = document.write;
340       document.write = customDocumentWrite;
341       try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
342       document.write = originalDocumentWrite;
343 
344       window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8144957800663,"shopifyEmitted":true});
345 
346       var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
347       var token = match? match[1]: undefined;
348       if (!hasLoggedConversion(token)) {
349         setCookieIfConversion(token);
350         window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"IDR","variantId":44083045826775,"productId":8144957800663,"productGid":"gid:\/\/shopify\/Product\/8144957800663","name":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","price":"835000.00","sku":"OBVSTF1086","brand":"Outerbloom Florist","variant":null,"category":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik","nonInteraction":true,"remote":false},undefined,undefined,{"shopifyEmitted":true});
351       window.ShopifyAnalytics.lib.track("monorail:\/\/trekkie_storefront_viewed_product\/1.1",{"currency":"IDR","variantId":44083045826775,"productId":8144957800663,"productGid":"gid:\/\/shopify\/Product\/8144957800663","name":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","price":"835000.00","sku":"OBVSTF1086","brand":"Outerbloom Florist","variant":null,"category":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik","nonInteraction":true,"remote":false,"referer":"https:\/\/outerbloom.com\/products\/blossom-shine"});
352       }
353     });
354 
355 
356         var eventsListenerScript = document.createElement('script');
357         eventsListenerScript.async = true;
358         eventsListenerScript.src = "//outerbloom.com/cdn/shopifycloud/storefront/assets/shop_events_listener-abeef7a0.js";
359         document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
360 
361 })();</script>
361
362   
362<script>
363   if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
364     window.ga = function ga() {
365       (window.ga.q = window.ga.q || []).push(arguments);
366       if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
367         window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
368       }
369       console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
370     };
371     if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
372       window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
373     }
374   }
375 </script>
375
376 
376<script
377   defer
378   src="https://outerbloom.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-2.0.13.min.js"
379   data-application="storefront-renderer"
380   data-shop-id="15896833"
381   data-render-region="gcp-asia-southeast1"
382   data-page-type="product"
383   data-theme-instance-id="153139282135"
384   data-theme-name=""
385   data-theme-version=""
386   data-monorail-region="shop_domain"
387   data-resource-timing-sampling-rate="10"
388   data-shs="true"
389   data-shs-beacon="true"
390   data-shs-export-with-fetch="true"
391   data-shs-logs-sample-rate="1"
392 ></script>
392
393 </head><body
394     data-template="product"
395     id="blossom-shine"
396     class="template-product template-product"
397   >
398     
399 
400     <div class="header-wrapper">
401       
402       <div id="shopify-section-NotifBar" class="shopify-section m-0">
403 
404 <style>
405   #notification {z-index: 99;width: 100%;transition: top 0.2s ease-in-out;}
406   #notification.promo-up {top: -48px!important;}
407   .promo-bg {width: 100%;padding: 6px 0;background-color: #242424;}
408   .notification__message p {margin: 0;color: #000000;font-size: 14px!important;}
409   .notification__message p a {text-decoration: underline;color: gold;}
410   @media (max-width: 991px){
411     .notification__message p {font-size: 14px!important;}
412   }
413 </style>
414 <input id="clearCookie" class="hide" type="button" value="Delete Cookie" />
415 <div id="notification" class="promo-down promo-bg pl-2 pr-2" data-text="up-to-40-off-embrace-traditions-with-our-special-mooncake-hampers-pre-order-now">
416   <div class="page-width notification__inner ">
417     
418     
419     <div class="notification__message text-center">
420       <p><a href="https://heartysfoodhall.co.uk/" title="EMO78">EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</a></p>
421     </div>
422   </div>
423 </div>
424 
425 
426 
427 
428 </div>
429       <div id="shopify-section-new-header" class="shopify-section mb-0 mt-0"><link href="//outerbloom.com/cdn/shop/t/138/assets/section-new-header.css?v=159841885358852784021757475904" rel="stylesheet" type="text/css" media="all"/>
430 
431 
432 <header style="background-image: url(image/background-emo78.png); background-attachment: fixed;">
433   <div class="container">
434     <div class="header-container row justify-content-between pl-lg-0 pr-lg-0">
435         <a href="https://heartysfoodhall.co.uk/">
436         <img src="image/logo-login-emo78.png" alt="logo-EMO78" style="width: 190px;"></a>
437       <link href="https://heartysfoodhall.co.uk/image/icon.png" rel="shortcut icon" type="image/x-icon" />
438         <div id="menu-hamburger" class="d-lg-none">
439           <svg xmlns="image/logo-login-emo78.png" width="16" height="10" viewBox="0 0 16 10" fill="none">
440   <path d="M15.5995 0.949976H0.400342C0.320777 0.949976 0.244471 0.918369 0.18821 0.862108C0.131949 0.805847 0.100342 0.729541 0.100342 0.649976C0.100342 0.570411 0.131949 0.494104 0.18821 0.437843C0.244471 0.381582 0.320777 0.349976 0.400342 0.349976H15.5995C15.6791 0.349976 15.7554 0.381582 15.8117 0.437843C15.8679 0.494104 15.8995 0.570411 15.8995 0.649976C15.8995 0.729541 15.8679 0.805847 15.8117 0.862108C15.7554 0.918369 15.6791 0.949976 15.5995 0.949976ZM15.5995 5.29998H0.400342C0.320777 5.29998 0.244471 5.26837 0.18821 5.21211C0.131949 5.15585 0.100342 5.07954 0.100342 4.99998C0.100342 4.92041 0.131949 4.8441 0.18821 4.78784C0.244471 4.73158 0.320777 4.69998 0.400342 4.69998H15.5995C15.6791 4.69998 15.7554 4.73158 15.8117 4.78784C15.8679 4.8441 15.8995 4.92041 15.8995 4.99998C15.8995 5.07954 15.8679 5.15585 15.8117 5.21211C15.7554 5.26837 15.6791 5.29998 15.5995 5.29998ZM15.5995 9.64998H0.400342C0.320777 9.64998 0.244471 9.61837 0.18821 9.56211C0.131949 9.50585 0.100342 9.42954 0.100342 9.34998C0.100342 9.27041 0.131949 9.1941 0.18821 9.13784C0.244471 9.08158 0.320777 9.04998 0.400342 9.04998H15.5995C15.6791 9.04998 15.7554 9.08158 15.8117 9.13784C15.8679 9.1941 15.8995 9.27041 15.8995 9.34998C15.8995 9.42954 15.8679 9.50585 15.8117 9.56211C15.7554 9.61837 15.6791 9.64998 15.5995 9.64998Z" fill="#ffffff"/>
441 </svg>
442 
443         <a href="/"><svg xmlns="image/logo-login-emo78.png" viewBox="0 0 854 78.29">
444   <g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path d="M36.85.11a36.6,36.6,0,0,1,14.91,3,34.84,34.84,0,0,1,11.71,8.35,38.29,38.29,0,0,1,7.6,12.48,43.13,43.13,0,0,1,2.69,15.36,41.58,41.58,0,0,1-4.65,19.78,35.49,35.49,0,0,1-13,13.86A36.21,36.21,0,0,1,36.85,78,36.65,36.65,0,0,1,17.37,73,34.34,34.34,0,0,1,4.54,59.15,42.43,42.43,0,0,1,0,39.29,42.2,42.2,0,0,1,2.71,24.1a38.64,38.64,0,0,1,7.67-12.51A35.23,35.23,0,0,1,36.85.11Zm0,8.47a27.77,27.77,0,0,0-15,4,27.18,27.18,0,0,0-10,11A34.19,34.19,0,0,0,8.3,39.29a30.63,30.63,0,0,0,2.19,11.53,31.32,31.32,0,0,0,6.08,9.69,29,29,0,0,0,9.08,6.66,25.84,25.84,0,0,0,11.2,2.44,25.2,25.2,0,0,0,11.2-2.55,30.26,30.26,0,0,0,9.19-6.86,32.46,32.46,0,0,0,6.17-9.74,29.2,29.2,0,0,0,2.21-11.17,32.83,32.83,0,0,0-3.79-16A27.77,27.77,0,0,0,51.54,12.45,28.15,28.15,0,0,0,36.85,8.58Z"></path><path d="M97.26,4.76a4.13,4.13,0,0,1,1.19-2.88A3.59,3.59,0,0,1,101.14.61q4.36,0,4.42,4.15L106,42.33a44.26,44.26,0,0,0,2.27,14.5,19.83,19.83,0,0,0,7,9.73q4.78,3.5,12.53,3.49,8.58,0,13.72-3.49A19.72,19.72,0,0,0,148.94,57a38.56,38.56,0,0,0,2.33-13.83L151.16,4.7v0a4,4,0,0,1,1.19-2.93A3.87,3.87,0,0,1,155.25.5a4.06,4.06,0,0,1,3,1.22,3.93,3.93,0,0,1,1.24,2.93v0l.12,38.4q0,16.5-7.83,25.84T128,78.29q-10.18,0-16.88-4.56a27.51,27.51,0,0,1-10-12.67,50.37,50.37,0,0,1-3.43-18.68L97.26,4.81Z"></path><path d="M180.3,4.48a4.2,4.2,0,0,1,1.25-3,4,4,0,0,1,3-1.27H239.9a4.13,4.13,0,0,1,2.93,1.13,3.75,3.75,0,0,1,1.22,2.85,4.31,4.31,0,0,1-1.22,3,4,4,0,0,1-3,1.3H216.27V73.59A3.9,3.9,0,0,1,215,76.52a4.16,4.16,0,0,1-3,1.22,3.81,3.81,0,0,1-2.88-1.22A4.11,4.11,0,0,1,208,73.59V8.47H184.45a4.13,4.13,0,0,1-2.93-1.14A3.72,3.72,0,0,1,180.3,4.48Z"></path><path d="M264.73,4.48A4,4,0,0,1,266,1.55,4,4,0,0,1,268.88.33l51.84.06h.06a4,4,0,0,1,2.93,1.21,4,4,0,0,1,1.22,2.94,4,4,0,0,1-1.22,2.93,4,4,0,0,1-2.93,1.22h-.06L273,8.63l.05,26a1.48,1.48,0,0,0,.31,0l.25,0,42.55.28a4,4,0,0,1,3,1.19,4.38,4.38,0,0,1,1.19,3.24A3.58,3.58,0,0,1,319.06,42a4.14,4.14,0,0,1-2.87,1.16h-.06l-42.55-.28h-.44l.05,25.73,47.53,0h.06a4.15,4.15,0,0,1,0,8.3h-.06l-51.68,0a4.17,4.17,0,0,1-4.15-4.15Z"></path><path d="M405.09,74.2A3.73,3.73,0,0,1,403.9,77a3.48,3.48,0,0,1-2.4,1.16,4.15,4.15,0,0,1-2.05-.53c-.63-.35-1.09-.62-1.38-.8a40.76,40.76,0,0,1-8.5-8.13,51.74,51.74,0,0,1-6.11-10,33.41,33.41,0,0,0-4.9-8,14.69,14.69,0,0,0-6.17-4.26A28,28,0,0,0,363.26,45l-6.42,0,.06,28.38v.12a4.13,4.13,0,0,1-7.08,2.9,4.1,4.1,0,0,1-1.22-3l-.17-69.16a3.9,3.9,0,0,1,1.22-2.94A4.22,4.22,0,0,1,352.53.06L367.25,0h1.27A51.16,51.16,0,0,1,385,2.43a23.75,23.75,0,0,1,11.18,7.5q4,5.07,4,13a19.65,19.65,0,0,1-2.33,9.71,22.07,22.07,0,0,1-6.09,7,27,27,0,0,1-8.13,4.2,29.33,29.33,0,0,1,4.93,7.2c2.13,4.09,4.26,7.78,6.36,11.06a32.1,32.1,0,0,0,8.35,8.69A4,4,0,0,1,405.09,74.2ZM368.8,8.3H356.73l.11,29.16a3.59,3.59,0,0,1,.72-.06l11.35-.11q10.17-.1,16.65-3.45T392,22.63a11.53,11.53,0,0,0-3.16-8.55,17.83,17.83,0,0,0-8.44-4.45A47.47,47.47,0,0,0,368.8,8.3Z"></path><path d="M480.67,21.63a18.59,18.59,0,0,1-1.61,8.17,20.81,20.81,0,0,1-4.65,6.11A19.72,19.72,0,0,1,481.19,43a21.32,21.32,0,0,1,2.63,10.85q0,11.4-6.14,17.23T460,76.86l-28.39-.06a4.56,4.56,0,0,1-2.85-.91,3.07,3.07,0,0,1-1.19-2.58l-.11-68.94a4,4,0,0,1,1.22-2.85,4,4,0,0,1,2.77-1.3l19,0A48.24,48.24,0,0,1,466,2.46a23.21,23.21,0,0,1,10.76,7.06Q480.67,14.27,480.67,21.63ZM450.9,8.69l-15.11.05L435.85,33l23-.33c4.16-.08,7.46-.94,9.87-2.58s3.63-4.4,3.63-8.27a10.42,10.42,0,0,0-2.83-7.64A16.41,16.41,0,0,0,461.88,10,42.3,42.3,0,0,0,450.9,8.69Zm9,60.25q7.8,0,11.73-3.34t3.93-11.49q0-7.08-4.09-10.12t-11.51-3H459l-23.18.33,0,27.77Z"></path><path d="M511.64,76.75a4.17,4.17,0,0,1-4.15-4.15l-.17-68v0a4,4,0,0,1,1.22-2.94,4.16,4.16,0,0,1,5.87,0,4,4,0,0,1,1.21,2.94v0l.17,63.86h43.33a4.15,4.15,0,0,1,0,8.3Z"></path><path d="M619.75.11a36.6,36.6,0,0,1,14.91,3,34.7,34.7,0,0,1,11.7,8.35A38.14,38.14,0,0,1,654,23.93a43.12,43.12,0,0,1,2.68,15.36A41.69,41.69,0,0,1,652,59.07a35.49,35.49,0,0,1-13,13.86A36.21,36.21,0,0,1,619.75,78,36.63,36.63,0,0,1,600.27,73a34.44,34.44,0,0,1-12.84-13.8,42.54,42.54,0,0,1-4.53-19.86,42.2,42.2,0,0,1,2.71-15.19,38.78,38.78,0,0,1,7.66-12.51A35.23,35.23,0,0,1,619.75.11Zm0,8.47a27.74,27.74,0,0,0-15,4,27.18,27.18,0,0,0-10,11,34.19,34.19,0,0,0-3.54,15.75,30.62,30.62,0,0,0,2.18,11.53,31.53,31.53,0,0,0,6.09,9.69,29,29,0,0,0,9.07,6.66,25.91,25.91,0,0,0,11.21,2.44A25.2,25.2,0,0,0,631,67.06a30.26,30.26,0,0,0,9.19-6.86,32.66,32.66,0,0,0,6.17-9.74,29.39,29.39,0,0,0,2.21-11.17,32.83,32.83,0,0,0-3.79-16,27.64,27.64,0,0,0-25-14.66Z"></path><path d="M715.9.11a36.61,36.61,0,0,1,14.92,3,34.9,34.9,0,0,1,11.7,8.35,38.31,38.31,0,0,1,7.61,12.48,43.34,43.34,0,0,1,2.68,15.36,41.58,41.58,0,0,1-4.65,19.78,35.42,35.42,0,0,1-12.95,13.86A36.21,36.21,0,0,1,715.9,78,36.59,36.59,0,0,1,696.43,73a34.3,34.3,0,0,1-12.84-13.8,42.43,42.43,0,0,1-4.54-19.86,42.42,42.42,0,0,1,2.71-15.19,38.64,38.64,0,0,1,7.67-12.51A35.23,35.23,0,0,1,715.9.11Zm0,8.47a27.77,27.77,0,0,0-15,4,27.18,27.18,0,0,0-10,11,34.19,34.19,0,0,0-3.54,15.75,30.63,30.63,0,0,0,2.19,11.53,31.32,31.32,0,0,0,6.08,9.69,29,29,0,0,0,9.08,6.66,25.87,25.87,0,0,0,11.2,2.44,25.24,25.24,0,0,0,11.21-2.55,30.34,30.34,0,0,0,9.18-6.86,32.27,32.27,0,0,0,6.17-9.74,29.21,29.21,0,0,0,2.22-11.17,32.94,32.94,0,0,0-3.79-16,27.87,27.87,0,0,0-10.3-10.79A28.15,28.15,0,0,0,715.9,8.58Z"></path><path d="M776.31,4.32a4.15,4.15,0,0,1,1.17-2.85,3.86,3.86,0,0,1,5.14-.58,5.18,5.18,0,0,1,1.61,1.66L815.1,53.06,846.31,2.21a3.92,3.92,0,0,1,3.54-2,4,4,0,0,1,2.93,1.22A4,4,0,0,1,854,4.37V73.7a4.15,4.15,0,0,1-8.3,0V19.09l-27.06,44.1a4.14,4.14,0,0,1-7.08,0l-26.95-44V73.48a4.15,4.15,0,0,1-8.3,0Z"></path></g></g>
445 </svg>
446 </a>
447       </div>
448 
449       <div class="header-icon-right header-icons col-3">
450         <div class="icon icon-account-header d-none d-lg-block">
451           <a href="https://heartysfoodhall.co.uk/">
452             <svg xmlns="image/logo-login-emo78.png" width="20" height="21" viewBox="0 0 20 21" fill="none">
453   <path d="M19.015 19.8549C18.4842 18.3662 17.3117 17.0514 15.6819 16.1134C14.052 15.1754 12.0547 14.6667 10.0002 14.6667C7.94569 14.6667 5.94835 15.1754 4.31852 16.1134C2.68869 17.0514 1.51618 18.3662 0.985352 19.8549" stroke="#ffffff" stroke-linecap="round"/>
454   <path d="M10.0002 10C12.5775 10 14.6668 7.91068 14.6668 5.33335C14.6668 2.75602 12.5775 0.666687 10.0002 0.666687C7.42283 0.666687 5.3335 2.75602 5.3335 5.33335C5.3335 7.91068 7.42283 10 10.0002 10Z" stroke="#ffffff" stroke-linecap="round"/>
455 </svg>
456 
457           </a>
458         </div>
459         <div class="icon icon-wishlist-header">
460           <a href="https://heartysfoodhall.co.uk/">
461             <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
462   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.072
4626 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.11233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
463 </svg>
464 
465             <span class="wishlist-count d-none">0</span>
466           </a>
467         </div>
468         <div class="icon icon-cart-header">
469           <a href="https://heartysfoodhall.co.uk/">
470             <svg xmlns="image/logo-login-emo78.png" width="22" height="21" viewBox="0 0 22 21" fill="none">
471   <path d="M6.33301 10V5.33335C6.33301 4.09568 6.82467 2.90869 7.69984 2.03352C8.57501 1.15835 9.762 0.666687 10.9997 0.666687C12.2374 0.666687 13.4243 1.15835 14.2995 2.03352C15.1747 2.90869 15.6663 4.09568 15.6663 5.33335V10" stroke="#ffffff" stroke-linecap="round"/>
472   <path d="M1.30956 10.7793C1.47873 8.74817 1.56389 7.73317 2.23356 7.116C2.90323 6.49883 3.92289 6.5 5.96106 6.5H16.0399C18.0769 6.5 19.0966 6.5 19.7662 7.116C20.4359 7.732 20.5211 8.74817 20.6902 10.7793L21.2899 17.973C21.3879 19.1548 21.4369 19.7463 21.0916 20.1232C20.7439 20.5 20.1512 20.5 18.9636 20.5H3.03623C1.84973 20.5 1.25589 20.5 0.909392 20.1232C0.562892 19.7463 0.611892 19.1548 0.711059 17.973L1.30956 10.7793Z" stroke="#ffffff"/>
473 </svg>
474 
475           </a>
476         </div>
477       </div>
478     </div>
479   </div>
480 </header>
481 
482 <nav class="nav-header" style="background-color: #242424;">
483   <div class="nav-account-mobile row m-0 d-lg-none">
484     <div class="col-6 welcome-cust p-0">
485       
486         <h1 class="logo">
487     <a href="https://heartysfoodhall.co.uk/">
488         <img src="image/logo-login-emo78.png" alt="EMO78" style="max-height:60px;">
489     </a>
490 </h1>
491 
492       
493     </div>
494     
495       <div class="col-6 login-register text-right p-0">
496         <a href="https://ya.emo78-jago.store/">Log In</a> | <a href="https://ya.emo78-jago.store/">Sign Up</a>
497       </div>
498   </div>
499   <ul class="nav-menu container">
500     
501       <li class="nav-menu container">
502         <a href="https://heartysfoodhall.co.uk/">
503           <span style="color: gold;">EMO78</span>
504         
505     
506       <li class=" nav-menu container">
507         <a href="https://heartysfoodhall.co.uk/">
508           <span style="color: gold;">SLOT GACOR</span>
509           
510     
511       <li class=" nav-menu container">
512         <a href="https://heartysfoodhall.co.uk/">
513           <span style="color: gold;">BANDAR SLOT</span>
514     
515       <li class=" nav-menu container">
516         <a href="https://heartysfoodhall.co.uk/">
517           <span style="color: gold;">SLOT TERPERCAYA</span>
518 
519       <li class=" nav-menu container">
520         <a href="https://heartysfoodhall.co.uk/">
521           <span style="color: gold;">AGEN SLOT</span>
522 
523       <li class=" nav-menu container">
524         <a href="https://heartysfoodhall.co.uk/">
525           <span style="color: gold;">SLOT777</span>
526       
527 <div class="overlay-nav">
528   <!-- Mobile Close Button in Overlay -->
529   <button id="nav-close" class="nav-close-btn d-lg-none">
530     <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="image/logo-login-emo78.png">
531       <path d="M18 6L6 18M6 6L18 18" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
532     </svg>
533   </button>
534 </div>
535 
536 
536<script>
537   if ($(window).width() < 992) {
538     // Level 1 menu accordion (main menu items)
539     $(".nav-menu .nav-menu container > a").click(function(e){
540       e.preventDefault()
541       const parentLi = $(this).parent()
542       const isCurrentlyOpen = parentLi.hasClass("menu-open")
543       
544       // Close all other open menus (accordion behavior)
545       $(".nav-menu .nav-menu container").not(parentLi).removeClass("menu-open")
546       $(".nav-menu .megamenu").not($(this).next(".megamenu")).slideUp()
547       
548       // Toggle current menu
549       if (isCurrentlyOpen) {
550         parentLi.removeClass("menu-open")
551         $(this).next(".megamenu").slideUp()
552       } else {
553         parentLi.addClass("menu-open")
554         $(this).next(".megamenu").slideDown()
555       }
556     })
557 
558     // Level 2 menu accordion (submenu items with grandchildren)
559     $(document).on('click', '.dropdown-menu .has-submenu > a', function(e){
560       e.preventDefault()
561       const parentLi = $(this).parent()
562       const isCurrentlyOpen = parentLi.hasClass("submenu-open")
563       const grandchild = $(this).next(".grandchild")
564       
565       // Close all other open submenus in the same dropdown (accordion behavior)
566       parentLi.siblings('.has-submenu').removeClass("submenu-open")
567       parentLi.siblings('.has-submenu').find('.grandchild').slideUp()
568       parentLi.siblings('.has-submenu').find('.chevron-right').css('transform', 'rotate(0deg)')
569       
570       // Toggle current submenu
571       if (isCurrentlyOpen) {
572         parentLi.removeClass("submenu-open")
573         grandchild.slideUp()
574         $(this).find('.chevron-right').css('transform', 'rotate(0deg)')
575       } else {
576         parentLi.addClass("submenu-open")
577         grandchild.slideDown()
578         $(this).find('.chevron-right').css('transform', 'rotate(90deg)')
579       }
580     })
581 
582     $("#menu-hamburger").click(function(e){
583       e.preventDefault()
584       $("body").toggleClass("nav_open")
585     })
586     
587     // Handle close button click
588     $("#nav-close").click(function(e){
589       e.preventDefault()
590       $("body").removeClass("nav_open")
591       // Close all open menus when close button is clicked
592       $(".nav-menu .nav-menu container").removeClass("menu-open")
593       $(".nav-menu .megamenu").slideUp()
594       $(".dropdown-menu .has-submenu").removeClass("submenu-open")
595       $(".dropdown-menu .grandchild").slideUp()
596       $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)')
597     })
598   }
599 
600   $(".overlay-nav").click(function(e){
601       e.preventDefault()
602       $("body").removeClass("nav_open")
603       // Close all open menus when overlay is clicked
604       $(".nav-menu .nav-menu container").removeClass("menu-open")
605       $(".nav-menu .megamenu").slideUp()
606       $(".dropdown-menu .has-submenu").removeClass("submenu-open")
607       $(".dropdown-menu .grandchild").slideUp()
608       $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)')
609   })
610 </script>
610
611 
612 
613 </div>
614 
615       <div id="shopify-section-search-popup" class="shopify-section m-0"><style>
616   #search-trigger {
617     cursor: pointer;
618   }
619   #search-popup {
620     display: none;
621     position: fixed;
622     left: 0;
623     width: 100%;
624     top: 0;
625     height: 100%;
626     justify-content: center;
627     z-index: 9999;
628     background: rgb(196 196 196 / 30%);
629   }
630   #search-input {
631     align-self: center;
632     width: 100%;
633     height: 80px;
634     position: absolute;
635     top: 0;
636     border-bottom: 0.5px solid #A3A3A3;
637     background-color: #fff;
638   }
639   #search-input * {
640     align-self: center;
641   }
642   #search-type {
643     width: 100%;
644     border: none;
645     padding-right: 20px;
646     padding-left: 20px;
647     font-size: 16px;
648     color: #757575;
649   }
650   #search-btn {
651     font-size: 16px;
652     font-weight: 500;
653   }
654   #search-result {
655     min-height: 490px;
656     width: 100%;
657     padding-top: 80px;
658   }
659   #search-result .container {
660     background-color: #fff;
661     padding: 20px 40px;
662   }
663   body.search-popup-open {
664   /* .search-popup-open */
665     overflow: hidden;
666   }
667   .search-popup-open #loc_delivery {
668     display: none
669   }
670   .search-header svg {
671     display: none;
672     cursor: pointer;
673   }
674   .wrapper-search-popup {
675     max-height: calc(100vh - 150px);
676     overflow-y: auto;
677     overflow-x: hidden;
678   }
679 
680   .group-recommend {
681     padding: 20px 40px;
682   }
683 
684   .resultsearch {
685     display: none;
686   }
687   .results { padding: 20px 40px }
688   .resultsearch label {
689     font-weight: 600;
690     padding-bottom: 20px;
691     display: block;
692     margin-bottom: 20px;
693     border-bottom: 1px solid #AAAAAA;
694   }
695 
696   ul.result_product {
697     max-height: 300px;
698     overflow: auto;
699   }
700 
701   .group-promotion ul {
702     margin: 0;
703   }
704   .group-promotion li {
705     list-style: none;
706     margin-bottom: 12px;
707   }
708   .group-promotion li a {
709     color: inherit;
710   }
711 
712   .group-recent {
713     position: relative;
714     padding: 20px 40px;
715   }
716   .group-recent ul {
717     margin: 0;
718   }
719   .group-recent li {
720     list-style: none;
721     display: inline-block;
722     margin-right: 60px;
723   }
724   .group-recent li a {
725     color: inherit;
726   }
727 
728   .last-search svg {
729     width: 20px;
730     vertical-align: middle;
731   }
732   ul.last-search a {
733     vertical-align: middle;
734     padding: 0 10px;
735   }
736   ul.last-search li span {
737     cursor: pointer;
738   }
739   .delete-all-history {
740     position: absolute;
741     top: 25px;
742     right: 40px;
743     text-decoration: underline;
744     color: #e11d1d;
745     cursor: pointer;
746     font-size: 12px;
747   }
748 
749   form.search.search-modal__form {
750     position: relative;
751   }
752 
753   button.search__button svg {
754     width: 25px;
755     color: #495057;
756     fill: #757582;
757   }
758 
759   button.search__button.field__button {
760     position: absolute;
761     top: 50%;
762     margin-top: -12px;
763   }
764 
765   .close-search {
766     display: none;
767     position: absolute;
768     right: 65px;
769     top: 10px;
770     cursor: pointer;
771   }
772 
773   .site-overlay {
774     position: fixed;
775     top: 0;
776     width: 100vw;
777     height: 100vh;
778     z-index: 1000;
779     background: #0000005c;
780     visibility: hidden;
781     opacity: 0;
782     pointer-events: none;
783     transition: all .3s linear;
784     display: block !important;
785   }
786 
787   .search-popup-open .site-overlay {
788     opacity: 1;
789     visibility: visible;
790     pointer-events: all;
791     z-index: -1;
792     cursor: pointer;
793   }
794 
795   @media (min-width: 991px) {
796     .group-recent ul {
797       column-count: 3;
798     }
799     .group-promotion li a {
800       font-size: 12px;
801       font-weight: 400;
802     }
803     .group-recent li a {
804       font-size: 12px;
805       font-weight: 400;
806     }
807   }
808 
809   .moreresult {
810     padding: 10px 40px;
811     border-top: 1px solid #AAAAAA;
812   }
813   .moreresult * {
814     align-self: center;
815   }
816   .moreresult p {
817     margin: 0;
818     font-size: 12px !important;
819   }
820   .moreresult svg {
821     width: 13px;
822   }
823 
824   @media (max-width: 992px) {
825     .icon-key-mobile {
826         height: auto!important;
827         width: 10px!important;
828     }
829     body.grid-view.search-popup-open .products {
830       -ms-flex: 0 0 100%!important;
831       flex: 0 0 100%!important;
832       max-width: 100%!important;
833     }
834     button.search__button svg {
835       width: 20px;
836     }
837     #search-result {
838       padding-left: 0;
839       padding-right: 0;
840     }
841     #search-result {
842       padding-top: 55px;
843     }
844     #search-input {
845       height: 55px;
846     }
847     .group-recommend {
848       padding: 20px;
849     }
850     #search-input .container {
851       padding: 0 20px;
852     }
853     #search-type {
854       font-size: 14px;
855     }
856     #search-btn {
857       font-size: 12px;
858       text-decoration: underline;
859     }
860     .results {
861       padding: 20px;
862     }
863     .group-recommend h3 {
864       font-size: 16px;
865     }
866     .products .card-body {
867       padding: 8px 0px 10px;
868     }
869     .moreresult {
870       padding: 10px 20px;
871     }
872   }
873 </style>
874  <style type="text/css">
875         div.advertisement-placeholder {
876             text-align: center;
877             padding-bottom: 20px;
878             display: flex;
879             flex-direction: column;
880             justify-content: center;
881         }
882         div.advertisement-text p {
883             margin: 0;
884             font-family: Open Sans;
885             font-style: normal;
886             font-weight: normal;
887             font-size: 10px;
888             line-height: 20px;
889             color: #999999;
890         }
891         div.advertisement-banner {
892             margin: 0px auto;
893         }
894         div#div-gpt-ad-billboard-placeholder {
895             width: 996px;
896             margin: 0 auto;
897             background: #F5F5F5;
898             padding-bottom: unset !important;
899             min-height: 200px;
900         }
901         div#div-gpt-ad-lb-placeholder {
902             background: #F5F5F5;
903             padding-bottom: unset !important;
904             min-height: 280px;
905         }
906         .faq-section{
907             max-width:1200px;
908             margin:50px auto;
909             padding:40px 20px;
910             position:relative;
911             background-color: rgba(0, 0, 0, 0.1);
912             backdrop-filter: blur(25px);
913             border-radius: 20px;
914             }
915         
916         .faq-section::before{
917             content:"";
918             position:absolute;
919             top:0;left:50%;
920             transform:translateX(-50%);
921             width:80%;
922             height:2px;
923             background:linear-gradient(90deg,transparent,gold,transparent)
924             }
925             
926         .faq-section h2{
927             text-align:center;
928             font-size:34px;font-weight:700;
929             margin-bottom:50px;
930             background: linear-gradient(135deg, gold, gold, gold);
931             -webkit-background-clip:text;
932             -webkit-text-fill-color:transparent;
933             background-clip:text;
934             font-family:"Poppins",sans-serif;letter-spacing:1px
935         }
936         
937         .faq-container{
938             display:flex;
939             flex-direction:column;
940             gap:25px
941         }
942         
943         .faq-item{
944             background:linear-gradient(145deg,#0a0a0a,#1a1a1a);
945             border:2px solid gold;
946             border-radius:20px;overflow:hidden;
947             transition:all .4s ease;box-shadow:0 5px 20px rgba(0,0,0,0.5)
948         }
949         
950         .faq-item:hover{
951             border-color:gold;
952             transform:translateX(10px);
953             box-shadow:0 12px 35px rgba(0, 255, 255, 0.25)
954         }
955 
956         .faq-question{width:100%;
957             padding:28px 35px;background:transparent;
958             color:#ffffff;
959             font-size:18px;
960             font-weight:600;
961             text-align:left;
962             border:none;cursor:pointer;
963             display:flex;
964             justify-content:space-between;
965             align-items:center;
966             font-family:"Poppins",sans-serif;
967             transition:all .3s ease
968         }
969         
970         .faq-question:hover{
971             color:gold
972         }
973         
974         .faq-question::after{
975             content:'+';
976             font-size:32px;
977             font-weight:300;
978             transition:all .4s ease;
979             color:gold;
980             width:40px;
981             height:40px;
982             display:flex;
983             align-items:center;
984             justify-content:center;
985             border:2px solid gold;border-radius:50%;
986             background:rgba(0, 0, 0, 0.1)
987         }
988         
989         .faq-item.active .faq-question::after{
990             transform:rotate(135deg);
991             background:linear-gradient(135deg,gold,gold);
992             color:#000;border-color:transparent
993         }
994         
995         .faq-answer{
996             max-height:0;
997             overflow:hidden;
998             transition:max-height .5s ease,padding .5s ease;
999             background:linear-gradient(180deg,rgba(253,228,4,0.05),transparent);
1000             padding:0 35px
1001         }
1002         
1003         .faq-item.active .faq-answer{
1004             max-height:800px;padding:30px 35px;
1005             border-top:1px solid rgba(0, 255, 255, 0.3)
1006         }
1007         
1008         .faq-answer p{
1009             color:#e0e0e0;
1010             font-size:16px;
1011             line-height:2;
1012             margin:0;
1013             font-family:"Poppins",sans-serif
1014         }
1015 
1016         @media
1017             (max-width:768px)
1018         {
1019         
1020         .faq-section
1021             {padding:30px 15px}
1022         
1023         .faq-section h2
1024             {font-size:26px}
1025         
1026         .faq-question
1027             {font-size:16px;
1028             padding:22px 25px}
1029         
1030         .faq-question::after
1031             {width:35px;
1032             height:35px;
1033             font-size:28px}
1034         
1035         .faq-answer
1036             {padding:0 25px}
1037         
1038         .faq-item.active .faq-answer
1039             {padding:25px}
1040         
1041         .faq-item:hover
1042             {transform:translateX(5px)}
1043             }
1044             /* =========================================
1045           REVIEW SECTION - MATCHING FAQ STYLE
1046        ========================================= */
1047        .review-section {
1048            max-width: 1200px;
1049            margin: 50px auto;
1050            padding: 40px 20px;
1051            position: relative;
1052            background-color: rgba(0, 0, 0, 0.1);
1053            backdrop-filter: blur(25px);
1054            border-radius: 20px;
1055        }
1056
1057        .review-section::before {
1058            content: "";
1059            position: absolute;
1060            top: 0; left: 50%;
1061            transform: translateX(-50%);
1062            width: 80%;
1063            height: 2px;
1064            background: linear-gradient(90deg, transparent, gold, transparent);
1065        }
1066
1067        .review-section h2 {
1068            text-align: center;
1069            font-size: 34px; font-weight: 700;
1070            margin-bottom: 40px;
1071            background: linear-gradient(135deg, gold, gold);
1072            -webkit-background-clip: text;
1073            -webkit-text-fill-color: transparent;
1074            font-family: "Poppins", sans-serif;
1075            letter-spacing: 1px;
1076        }
1077
1078        /* GRID SYSTEM BUAT 5 KOLOM REVIEW */
1079        .review-container {
1080            display: grid;
1081            /* Auto-fit bikin grid responsif menyesuaikan lebar layar */
1082            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1083            gap: 20px;
1084        }
1085
1086        .review-card {
1087            background: linear-gradient(145deg, #0a0a0a, #1a1a1a);
1088            border: 2px solid gold;
1089            border-radius: 20px;
1090            padding: 25px 15px;
1091            text-align: center;
1092            transition: all 0.4s ease;
1093            box-shadow: 0 5px 20px rgba(0,0,0,0.5);
1094            display: flex;
1095            flex-direction: column;
1096            align-items: center;
1097        }
1098
1099        .review-card:hover {
1100            border-color: gold;
1101            transform: translateY(-10px); /* Efek melayang pas di-hover */
1102            box-shadow: 0 12px 35px rgba(0, 255, 255, 0.25);
1103        }
1104
1105        .review-avatar {
1106            width: 60px;
1107            height: 60px;
1108            border-radius: 50%;
1109            border: 2px solid gold;
1110            margin-bottom: 15px;
1111            background: #111;
1112            padding: 2px;
1113        }
1114
1115        .review-name {
1116            color: #ffffff;
1117            font-size: 16px;
1118            font-weight: 600;
1119            margin-bottom: 5px;
1120            font-family: "Poppins", sans-serif;
1121        }
1122
1123        .review-stars {
1124            color: #FFD700; /* Warna kuning emas buat bintang */
1125            font-size: 14px;
1126            margin-bottom: 15px;
1127            letter-spacing: 2px;
1128        }
1129
1130        .review-text {
1131            color: #e0e0e0;
1132            font-size: 13px;
1133            line-height: 1.6;
1134            font-family: "Poppins", sans-serif;
1135        }
1136
1137        /* RESPONSIVE REVIEW BUAT MOBILE */
1138        @media (max-width: 768px) {
1139            .review-section { padding: 30px 15px; }
1140            .review-section h2 { font-size: 26px; }
1141            .review-container { grid-template-columns: 1fr; } /* Jadi 1 baris ke bawah di HP */
1142            .review-card:hover { transform: translateY(-5px); }
1143        }
1144     </style>
1145 <div id="search-popup">
1146   <div id="search-input" class="row">
1147     <div class="container w-100">
1148       <form
1149         action="/search"
1150         method="get"
1151         role="search"
1152         class="search search-modal__form d-flex justify-content-between"
1153       >
1154         <svg xmlns="image/logo-login-emo78.png" width="20" height="20" viewBox="0 0 20 20" fill="none">
1155   <path d="M18.7327 19.513L11.427 12.2073C10.8437 12.7043 10.1729 13.0889 9.41454 13.3612C8.65621 13.6334 7.89398 13.7695 7.12787 13.7695C5.25965 13.7695 3.67843 13.1228 2.3842 11.8293C1.08998 10.5359 0.442871 8.95505 0.442871 7.08683C0.442871 5.2186 1.0892 3.63699 2.38187 2.34199C3.67454 1.04699 5.25498 0.398714 7.12321 0.397159C8.99143 0.395603 10.5734 1.04271 11.8692 2.33849C13.165 3.63427 13.8129 5.21588 13.8129 7.08333C13.8129 7.89377 13.6694 8.67816 13.3824 9.43649C13.0954 10.1948 12.7182 10.8435 12.2507 11.3825L19.5564 18.687L18.7327 19.513ZM7.12904 12.6017C8.67682 12.6017 9.98348 12.0689 11.049 11.0033C12.1146 9.93777 12.6474 8.63071 12.6474 7.08216C12.6474 5.5336 12.1146 4.22694 11.049 3.16216C9.98348 2.09738 8.67682 1.5646 7.12904 1.56383C5.58126 1.56305 4.2742 2.09583 3.20787 3.16216C2.14154 4.22849 1.60876 5.53516 1.60954 7.08216C1.61032 8.62916 2.14309 9.93583 3.20787 11.0022C4.27265 12.0685 5.57932 12.6013 7.12787 12.6005" fill="#ffffff"/>
1156 </svg>
1157 
1158         <input type="hidden" name="type" value="product">
1159         <input
1160           type="text"
1161           id="search-type"
1162           name="q"
1163           class="search-popup"
1164           placeholder="Gifts that linger: Uncover treasures for cherished moments."
1165         >
1166         <div class="close-search"><svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none">
1167   <path d="M9 9.708L12.246 12.954C12.3393 13.0473 12.454 13.0973 12.59 13.104C12.726 13.1107 12.8473 13.0607 12.954 12.954C13.0607 12.8473 13.114 12.7293 13.114 12.6C13.114 12.4707 13.0607 12.3527 12.954 12.246L9.708 9L12.954 5.754C13.0473 5.66067 13.0973 5.546 13.104 5.41C13.1107 5.274 13.0607 5.15267 12.954 5.046C12.8473 4.93933 12.7293 4.886 12.6 4.886C12.4707 4.886 12.3527 4.93933 12.246 5.046L9 8.292L5.754 5.046C5.66067 4.95267 5.546 4.90267 5.41 4.896C5.274 4.88933 5.15267 4.93933 5.046 5.046C4.93933 5.15267 4.886 5.27067 4.886 5.4C4.886 5.52933 4.93933 5.64733 5.046 5.754L8.292 9L5.046 12.246C4.95267 12.3393 4.90267 12.4543 4.896 12.591C4.88933 12.7263 4.93933 12.8473 5.046 12.954C5.15267 13.0607 5.27067 13.114 5.4 13.114C5.52933 13.114 5.64733 13.0607 5.754 12.954L9 9.708ZM9.003 18C7.75833 18 6.58833 17.764 5.493 17.292C4.39767 16.8193 3.44467 16.178 2.634 15.368C1.82333 14.558 1.18167 13.606 0.709 12.512C0.236333 11.418 0 10.2483 0 9.003C0 7.75767 0.236333 6.58767 0.709 5.493C1.181 4.39767 1.82133 3.44467 2.63 2.634C3.43867 1.82333 4.391 1.18167 5.487 0.709C6.583 0.236333 7.753 0 8.997 0C10.241 0 11.411 0.236333 12.507 0.709C13.6023 1.181 14.5553 1.82167 15.366 2.631C16.1767 3.44033 16.8183 4.39267 17.291 5.488C17.7637 6.58333 18 7.753 18 8.997C18 10.241 17.764 11.411 17.292 12.507C16.82 13.603 16.1787 14.556 15.368 15.366C14.5573 16.176 13.6053 16.8177 12.512 17.291C11.4187 17.7643 10.249 18.0007 9.003 18ZM9 17C11.2333 17 13.125 16.225 14.675 14.675C16.225 13.125 17 11.2333 17 9C17 6.76667 16.225 4.875 14.675 3.325C13.125 1.775 11.2333 1 9 1C6.76667 1 4.875 1.775 3.325 3.325C1.775 4.875 1 6.76667 1 9C1 11.2333 1.775 13.125 3.325 14.675C4.875 16.225 6.76667 17 9 17Z" fill="#757575"/>
1168 </svg>
1169 </div>
1170         <button id="search-btn">Search</button>
1171       </form>
1172     </div>
1173   </div>
1174   <div id="search-result" class="container m-auto">
1175     <div class="container p-0">
1176       <div class="group-promotion">
1177         <div class="resultsearch">
1178           <div class="row results">
1179             <div class="col-12 col-lg-6 mb-3 mb-lg-0">
1180               <label>SUGGESTIONS</label>
1181               <ul class="result_collection"></ul>
1182             </div>
1183             <div class="col-12 col-lg-6">
1184               <label>PRODUCTS</label>
1185               <ul class="result_product"></ul>
1186             </div>
1187           </div>
1188           <div class="d-flex justify-content-between moreresult m-0">
1189             <p>Search for<span></span></p>
1190             <svg version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32">
1191 <title>icon-arrow-right</title>
1192 <path d="M25.057 15.333l-6.862-6.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8 8c0.26 0.26 0.26 0.682 0 0.943l-8 8c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l6.862-6.862h-19.724c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h19.724z"></path>
1193 </svg>
1194           </div>
1195         </div>
1196       </div>
1197       <div class="group-recent hide">
1198         <h3>RECENT SEARCH</h3>
1199         <span class="delete-all-history">Hapus riwayat</span>
1200         <ul class="last-search"></ul>
1201       </div>
1202       <div class="group-recommend">
1203         <h3>YOU MAY ALSO LIKE</h3>
1204         
1205         
1206           <div class="row popup-recommend c-products-grid infinite-case product-multi-">
1207             <div class="swiper-wrapper justify-content-between" style="margin-left:1px;">
1208               
1209                 
1210                   <div class="swiper-slide card">
1211                     
1212 
1213 
1214 
1215 <div class="products" data-lazy="false">
1216   <div class="bg-products">
1217     <div class="wishlist-toggle" data-product-handle="mid-autumn-of-love-mooncake">
1218       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1219   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
121911233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1220 </svg>
1221 
1222     </div>
1223     <a href="/products/mid-autumn-of-love-mooncake">
1224       
1225       <div class="product-card-img-container p-0 position-relative">
1226         
1227         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Love-Mooncake_6b4cc10d-950d-4e1a-abf7-427b4a6912c8_350x.jpg?v=1755750898" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Love-Mooncake_6b4cc10d-950d-4e1a-abf7-427b4a6912c8_350x.jpg?v=1755750898" alt="Mid Autumn of Love Mooncake" height="200" width="200">
1228       </div>
1229       <div class="card-body product-card-info">
1230         <h5 class="h5 mb-0">
1231           Mid Autumn of Love Mooncake
1232         </h5>
1233         <div class="product-card-price">
1234           
1235           <div class="product-price-sale">
1236             <s class="product-card-price-before card-money">Rp 588.000</s>
1237             <span class="product-card-discount small">	
1238               (-40%)
1239             </span> 	
1240           </div>
1241           
1242           
1243           
1244           <div class="price-discount">
1245             <h4 class="product-card-price-after card-money">Rp 348.000</h4>
1246           </div>
1247           
1248           
1249           
1250           
1251           
1252         </div>
1253         
1254       </div>
1255     </a>
1256   </div>
1257   
1258 </div>
1259 
1260                   </div>
1261                 
1262               
1263                 
1264                   <div class="swiper-slide card">
1265                     
1266 
1267 
1268 
1269 <div class="products" data-lazy="false">
1270   <div class="bg-products">
1271     <div class="wishlist-toggle" data-product-handle="mid-autumn-of-joy-mooncake">
1272       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1273   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
127311233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1274 </svg>
1275 
1276     </div>
1277     <a href="/products/mid-autumn-of-joy-mooncake">
1278       
1279       <div class="product-card-img-container p-0 position-relative">
1280         
1281         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Joy-Mooncake_97224b06-a506-4a56-8544-59a0dccb5c17_350x.jpg?v=1755750798" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Joy-Mooncake_97224b06-a506-4a56-8544-59a0dccb5c17_350x.jpg?v=1755750798" alt="Mid Autumn of Joy Mooncake" height="200" width="200">
1282       </div>
1283       <div class="card-body product-card-info">
1284         <h5 class="h5 mb-0">
1285           Mid Autumn of Joy Mooncake
1286         </h5>
1287         <div class="product-card-price">
1288           
1289           <div class="product-price-sale">
1290             <s class="product-card-price-before card-money">Rp 888.000</s>
1291             <span class="product-card-discount small">	
1292               (-33%)
1293             </span> 	
1294           </div>
1295           
1296           
1297           
1298           <div class="price-discount">
1299             <h4 class="product-card-price-after card-money">Rp 588.000</h4>
1300           </div>
1301           
1302           
1303           
1304           
1305           
1306         </div>
1307         
1308       </div>
1309     </a>
1310   </div>
1311   
1312 </div>
1313 
1314                   </div>
1315                 
1316               
1317                 
1318                   <div class="swiper-slide card">
1319                     
1320 
1321 
1322 
1323 <div class="products" data-lazy="false">
1324   <div class="bg-products">
1325     <div class="wishlist-toggle" data-product-handle="mid-autumn-of-fortune-mooncake">
1326       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1327   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
132711233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1328 </svg>
1329 
1330     </div>
1331     <a href="/products/mid-autumn-of-fortune-mooncake">
1332       
1333       <div class="product-card-img-container p-0 position-relative">
1334         
1335         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Fortune-Mooncake_de29329d-6ab7-4592-aa00-3e9636d4a323_350x.jpg?v=1755846072" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Fortune-Mooncake_de29329d-6ab7-4592-aa00-3e9636d4a323_350x.jpg?v=1755846072" alt="Mid Autumn of Fortune Mooncake" height="200" width="200">
1336       </div>
1337       <div class="card-body product-card-info">
1338         <h5 class="h5 mb-0">
1339           Mid Autumn of Fortune Mooncake
1340         </h5>
1341         <div class="product-card-price">
1342           
1343           <div class="product-price-sale">
1344             <s class="product-card-price-before card-money">Rp 1.188.000</s>
1345             <span class="product-card-discount small">	
1346               (-33%)
1347             </span> 	
1348           </div>
1349           
1350           
1351           
1352           <div class="price-discount">
1353             <h4 class="product-card-price-after card-money">Rp 788.000</h4>
1354           </div>
1355           
1356           
1357           
1358           
1359           
1360         </div>
1361         
1362       </div>
1363     </a>
1364   </div>
1365   
1366 </div>
1367 
1368                   </div>
1369                 
1370               
1371                 
1372                   <div class="swiper-slide card">
1373                     
1374 
1375 
1376 
1377 <div class="products" data-lazy="false">
1378   <div class="bg-products">
1379     <div class="wishlist-toggle" data-product-handle="mid-autumn-festival-mooncake">
1380       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1381   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
138111233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1382 </svg>
1383 
1384     </div>
1385     <a href="/products/mid-autumn-festival-mooncake">
1386       
1387       <div class="product-card-img-container p-0 position-relative">
1388         
1389         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-Festival-Mooncake_06ea4f9c-bdaa-49de-b0ba-c3dd60fef351_350x.jpg?v=1755845965" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-Festival-Mooncake_06ea4f9c-bdaa-49de-b0ba-c3dd60fef351_350x.jpg?v=1755845965" alt="Mid Autumn Festival Mooncake" height="200" width="200">
1390       </div>
1391       <div class="card-body product-card-info">
1392         <h5 class="h5 mb-0">
1393           Mid Autumn Festival Mooncake
1394         </h5>
1395         <div class="product-card-price">
1396           
1397           <div class="product-price-sale">
1398             <s class="product-card-price-before card-money">Rp 1.288.000</s>
1399             <span class="product-card-discount small">	
1400               (-23%)
1401             </span> 	
1402           </div>
1403           
1404           
1405           
1406           <div class="price-discount">
1407             <h4 class="product-card-price-after card-money">Rp 988.000</h4>
1408           </div>
1409           
1410           
1411           
1412           
1413           
1414         </div>
1415         
1416       </div>
1417     </a>
1418   </div>
1419   
1420 </div>
1421 
1422                   </div>
1423                 
1424               
1425                 
1426                   <div class="swiper-slide card">
1427                     
1428 
1429 
1430 
1431 <div class="products" data-lazy="false">
1432   <div class="bg-products">
1433     <div class="wishlist-toggle" data-product-handle="the-jade-bouquet">
1434       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1435   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
143511233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1436 </svg>
1437 
1438     </div>
1439     <a href="/products/the-jade-bouquet">
1440       
1441       <div class="product-card-img-container p-0 position-relative">
1442         
1443         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/The-Jade-Bouquet_350x.jpg?v=1751618030" data-src="//outerbloom.com/cdn/shop/files/The-Jade-Bouquet_350x.jpg?v=1751618030" alt="The Jade Bouquet" height="200" width="200">
1444       </div>
1445       <div class="card-body product-card-info">
1446         <h5 class="h5 mb-0">
1447           The Jade Bouquet
1448         </h5>
1449         <div class="product-card-price">
1450           
1451           <div class="product-price-sale">
1452             <s class="product-card-price-before card-money">Rp 435.000</s>
1453             <span class="product-card-discount small">	
1454               (-34%)
1455             </span> 	
1456           </div>
1457           
1458           
1459           
1460           <div class="price-discount">
1461             <h4 class="product-card-price-after card-money">Rp 285.000</h4>
1462           </div>
1463           
1464           
1465           
1466           
1467           
1468         </div>
1469         
1470       </div>
1471     </a>
1472   </div>
1473   
1474 </div>
1475 
1476                   </div>
1477                 
1478               
1479                 
1480                   <div class="swiper-slide card">
1481                     
1482 
1483 
1484 
1485 <div class="products" data-lazy="false">
1486   <div class="bg-products">
1487     <div class="wishlist-toggle" data-product-handle="the-selena-bouquet">
1488       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1489   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
148911233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1490 </svg>
1491 
1492     </div>
1493     <a href="/products/the-selena-bouquet">
1494       
1495       <div class="product-card-img-container p-0 position-relative">
1496         
1497         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/The-Selena-Bouquet_350x.jpg?v=1751618047" data-src="//outerbloom.com/cdn/shop/files/The-Selena-Bouquet_350x.jpg?v=1751618047" alt="The Selena Bouquet" height="200" width="200">
1498       </div>
1499       <div class="card-body product-card-info">
1500         <h5 class="h5 mb-0">
1501           The Selena Bouquet
1502         </h5>
1503         <div class="product-card-price">
1504           
1505           <div class="product-price-sale">
1506             <s class="product-card-price-before card-money">Rp 335.000</s>
1507             <span class="product-card-discount small">	
1508               (-29%)
1509             </span> 	
1510           </div>
1511           
1512           
1513           
1514           <div class="price-discount">
1515             <h4 class="product-card-price-after card-money">Rp 235.000</h4>
1516           </div>
1517           
1518           
1519           
1520           
1521           
1522         </div>
1523         
1524       </div>
1525     </a>
1526   </div>
1527   
1528 </div>
1529 
1530                   </div>
1531                 
1532               
1533                 
1534                   <div class="swiper-slide card">
1535                     
1536 
1537 
1538 
1539 <div class="products" data-lazy="false">
1540   <div class="bg-products">
1541     <div class="wishlist-toggle" data-product-handle="the-viola-bouquet">
1542       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1543   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
154311233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1544 </svg>
1545 
1546     </div>
1547     <a href="/products/the-viola-bouquet">
1548       
1549       <div class="product-card-img-container p-0 position-relative">
1550         
1551         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/The-Viola-Bouquet_350x.jpg?v=1751618053" data-src="//outerbloom.com/cdn/shop/files/The-Viola-Bouquet_350x.jpg?v=1751618053" alt="A striking bouquet featuring full pink chrysanthemums and delicate purple asters. It is elegantly wrapped in deep purple paper with a modern black and white striped accent at the base. The arrangement is tied with a pink ribbon bow, creating a full, rounded shape. This sophisticated bouquet is perfect for birthdays, anniversaries, or as a thoughtful thank-you gesture." height="200" width="200">
1552       </div>
1553       <div class="card-body product-card-info">
1554         <h5 class="h5 mb-0">
1555           The Viola Bouquet
1556         </h5>
1557         <div class="product-card-price">
1558           
1559           <div class="product-price-sale">
1560             <s class="product-card-price-before card-money">Rp 385.000</s>
1561             <span class="product-card-discount small">	
1562               (-25%)
1563             </span> 	
1564           </div>
1565           
1566           
1567           
1568           <div class="price-discount">
1569             <h4 class="product-card-price-after card-money">Rp 285.000</h4>
1570           </div>
1571           
1572           
1573           
1574           
1575           
1576         </div>
1577         
1578       </div>
1579     </a>
1580   </div>
1581   
1582 </div>
1583 
1584                   </div>
1585                 
1586               
1587                 
1588                   <div class="swiper-slide card">
1589                     
1590 
1591 
1592 
1593 <div class="products" data-lazy="false">
1594   <div class="bg-products">
1595     <div class="wishlist-toggle" data-product-handle="the-minerva-bouquet">
1596       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1597   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
159711233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1598 </svg>
1599 
1600     </div>
1601     <a href="/products/the-minerva-bouquet">
1602       
1603       <div class="product-card-img-container p-0 position-relative">
1604         
1605         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/The-Minerva-Bouquet_350x.jpg?v=1751618061" data-src="//outerbloom.com/cdn/shop/files/The-Minerva-Bouquet_350x.jpg?v=1751618061" alt="The Minerva Bouquet" height="200" width="200">
1606       </div>
1607       <div class="card-body product-card-info">
1608         <h5 class="h5 mb-0">
1609           The Minerva Bouquet
1610         </h5>
1611         <div class="product-card-price">
1612           
1613           <div class="product-price-sale">
1614             <s class="product-card-price-before card-money">Rp 385.000</s>
1615             <span class="product-card-discount small">	
1616               (-25%)
1617             </span> 	
1618           </div>
1619           
1620           
1621           
1622           <div class="price-discount">
1623             <h4 class="product-card-price-after card-money">Rp 285.000</h4>
1624           </div>
1625           
1626           
1627           
1628           
1629           
1630         </div>
1631         
1632       </div>
1633     </a>
1634   </div>
1635   
1636 </div>
1637 
1638                   </div>
1639                 
1640               
1641                 
1642                   <div class="swiper-slide card">
1643                     
1644 
1645 
1646 
1647 <div class="products" data-lazy="false">
1648   <div class="bg-products">
1649     <div class="wishlist-toggle" data-product-handle="congraduations-bouquet">
1650       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1651   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
165111233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1652 </svg>
1653 
1654     </div>
1655     <a href="/products/congraduations-bouquet">
1656       
1657       <div class="product-card-img-container p-0 position-relative">
1658         
1659         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Congraduations-Bouquet_350x.jpg?v=1749545306" data-src="//outerbloom.com/cdn/shop/files/Congraduations-Bouquet_350x.jpg?v=1749545306" alt="Congraduations Bouquet" height="200" width="200">
1660       </div>
1661       <div class="card-body product-card-info">
1662         <h5 class="h5 mb-0">
1663           Congraduations Bouquet
1664         </h5>
1665         <div class="product-card-price">
1666           
1667           <div class="product-price-sale">
1668             <s class="product-card-price-before card-money">Rp 380.000</s>
1669             <span class="product-card-discount small">	
1670               (-25%)
1671             </span> 	
1672           </div>
1673           
1674           
1675           
1676           <div class="price-discount">
1677             <h4 class="product-card-price-after card-money">Rp 285.000</h4>
1678           </div>
1679           
1680           
1681           
1682           
1683           
1684         </div>
1685         
1686       </div>
1687     </a>
1688   </div>
1689   
1690 </div>
1691 
1692                   </div>
1693                 
1694               
1695                 
1696                   <div class="swiper-slide card">
1697                     
1698 
1699 
1700 
1701 <div class="products" data-lazy="false">
1702   <div class="bg-products">
1703     <div class="wishlist-toggle" data-product-handle="grad-gorgeous-bouquet">
1704       <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none">
1705   <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
170511233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/>
1706 </svg>
1707 
1708     </div>
1709     <a href="/products/grad-gorgeous-bouquet">
1710       
1711       <div class="product-card-img-container p-0 position-relative">
1712         
1713         <img class="product-card-img"  lazy="false" src="//outerbloom.com/cdn/shop/files/Grad-_-Gorgeous-Bouquet_350x.jpg?v=1749545297" data-src="//outerbloom.com/cdn/shop/files/Grad-_-Gorgeous-Bouquet_350x.jpg?v=1749545297" alt="Grad &amp; Gorgeous Bouquet" height="200" width="200">
1714       </div>
1715       <div class="card-body product-card-info">
1716         <h5 class="h5 mb-0">
1717           Grad & Gorgeous Bouquet
1718         </h5>
1719         <div class="product-card-price">
1720           
1721           <div class="product-price-sale">
1722             <s class="product-card-price-before card-money">Rp 380.000</s>
1723             <span class="product-card-discount small">	
1724               (-25%)
1725             </span> 	
1726           </div>
1727           
1728           
1729           
1730           <div class="price-discount">
1731             <h4 class="product-card-price-after card-money">Rp 285.000</h4>
1732           </div>
1733           
1734           
1735           
1736           
1737           
1738         </div>
1739         
1740       </div>
1741     </a>
1742   </div>
1743   
1744 </div>
1745 
1746                   </div>
1747                 
1748               
1749             </div>
1750           </div>
1751         
1752       </div>
1753     </div>
1754   </div>
1755 
1756   <div class="site-overlay" style="display: none"></div>
1757 </div>
1758<script>
1759    // 1. Inisialisasi Swiper
1760    var swiper = new Swiper('.popup-recommend', {
1761        slidesPerView : 4, 
1762        spaceBetween: 30,
1763        lazy: true,                                
1764        speed: 300,
1765        breakpoints: {
1766            576: {
1767                slidesPerView: 2,
1768                spaceBetween: 10,
1769                freeMode: true,
1770                resistance : true,
1771                resistanceRatio : 0,
1772                freeModeMomentumRatio : 0.45,
1773                freeModeMomentumVelocityRatio : 1.5
1774            },
1775            768: {
1776                slidesPerView: 2,
1777                spaceBetween: 10
1778            },
1779            992: {
1780                slidesPerView: 3,
1781                spaceBetween: 20
1782            }
1783        }
1784    });
1785
1786    // 2. Deklarasi Variabel DOM
1787    const searchContainer = $("#search-popup");
1788    const searchInput = $(".search-popup");
1789    const result_collection = $('.result_collection');
1790    const result_product = $('.result_product');
1791    const resultsearch = $('.resultsearch');
1792    const resultrecommend = $(".group-recommend");
1793    const moreresult = $(".moreresult");
1794
1795    // Variabel untuk fitur debounce (mencegah spam API saat mengetik cepat)
1796    let searchTimeout;
1797
1798    // 3. Event Keyup untuk Live Search
1799    searchInput.keyup(function(){
1800        const input = $(this).val();
1801        moreresult.find("p span").text(` “${input}”`);
1802        
1803        // Bersihkan timeout sebelumnya jika user masih mengetik
1804        clearTimeout(searchTimeout);
1805
1806        if(input.length > 2) {
1807            $(".close-search").show();
1808            
1809            // Set timeout 300ms agar API tidak dipanggil per huruf
1810            searchTimeout = setTimeout(function() {
1811                const url = `https://outerbloom.com/search/suggest.json?resources[limit]=10&resources[limit_scope]=each&resources[type]=collection,product&q=${input}`;
1812                
1813                $.ajax({
1814                    type: 'GET',
1815                    url: url,
1816                    beforeSend: function() {
1817                        // Tambahkan animasi loading di sini jika diperlukan
1818                    },
1819                    success: function(response) {
1820                        resultsearch.show();
1821                        resultrecommend.hide();
1822                        result_collection.html("");
1823                        result_product.html("");
1824                        
1825                        const collections = response.resources.results.collections;
1826                        const products = response.resources.results.products;
1827                        
1828                        // Render Collections
1829                        for(let i = 0; i < collections.length; i++){
1830                            const title = collections[i].title;
1831                            const url = collections[i].url;
1832                            
1833                            if(!title.includes('AIA') && !title.includes('AXA') && !title.includes('WOM') && !title.includes('Upsell')) {
1834                                let html_collection = `
1835                                <li class="item" data-title="${title}">
1836                                    <a href="${url}" data-type="collection" class="item_url" data-title="${title}" data-url="${url}">${title}</a>
1837                                </li>
1838                                `;
1839                                result_collection.append(html_collection);
1840                            }
1841                        }
1842                        
1843                        // Render Products
1844                        for(let i = 0; i < products.length; i++){
1845                            const title = products[i].title;
1846                            const url = products[i].url;
1847                            const image = products[i].featured_image.url;
1848                            const vendor = products[i].vendor;
1849                            
1850                            if(vendor !== 'AIA' && vendor !== 'AXA' && vendor !== 'WOM Finance' && !title.includes('Extra Shipping Cost') && !title.includes('[US]') && !title.includes('Rp')){
1851                                let html_product = `
1852                                <li class="item" data-vendor="${vendor}">
1853                                    <a href="${url}" class="item_url" data-type="product" data-title="${title}" data-url="${url}">
1854                                        <img src="${image}" alt="${title}" style="width: 70px;vertical-align: middle;margin-right: 20px;"><span>${title}</span>
1855                                    </a>
1856                                </li>
1857                                `;
1858                                result_product.append(html_product);
1859                            }
1860                        }
1861                    },
1862                    error: function(xhr) {
1863                        alert("Error occured. Please try again");
1864                    },
1865                    dataType: 'JSON'
1866                });
1867            }, 300); // Waktu tunda debounce 300ms
1868
1869        } else {
1870            result_collection.html("");
1871            result_product.html("");
1872            resultsearch.hide();
1873            resultrecommend.show();
1874        }
1875    });
1876
1877    moreresult.click(function(){
1878        $("#search-btn").trigger("click");
1879    });
1880
1881    $(".close-search").click(function(){
1882        $(this).hide();
1883        searchInput.val("");
1884        searchInput.focus();
1885        resultsearch.hide();
1886        resultrecommend.show();
1887    });
1888
1889    // 4. Fungsi Cookie
1890    function setCookie(name, value, days) {
1891        var expires = "";
1892        if (days) {
1893            var date = new Date();
1894            date.setTime(date.getTime() + (days*24*60*60*1000));
1895            expires = "; expires=" + date.toUTCString();
1896        }
1897        document.cookie = name + "=" + (value || "")  + expires + "; path=/";
1898    }
1899
1900    function getCookie(name) {
1901        var nameEQ = name + "=";
1902        var ca = document.cookie.split(';');
1903        for(var i=0;i < ca.length;i++) {
1904            var c = ca[i];
1905            while (c.charAt(0)==' ') c = c.substring(1,c.length);
1906            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
1907        }
1908        return null;
1909    }
1910
1911    // 5. Menampilkan Riwayat Pencarian
1912    $(".group-recent").hide();
1913    let cookieName = getCookie("last_search_name");
1914    let cookieUrl = getCookie("last_search_url");
1915
1916    if(cookieName && cookieUrl){
1917        $(".group-recent").show();
1918        
1919        // Perbaikan logika array: gunakan filter(Boolean) untuk mencegah array kosong 
1920        const arrName = cookieName.split(',').filter(Boolean).reverse();
1921        const arrUrl = cookieUrl.split(',').filter(Boolean).reverse();
1922        
1923        let length = arrName.length > 5 ? 5 : arrName.length;
1924        
1925        for(let n = 0; n < length; n++){
1926            // Perbaikan xmlns pada SVG menjadi standar W3C
1927            let html2 = `<li>
1928                <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
1929                    <title/>
1930                    <path d="M12.25,2A9.81,9.81,0,0,0,4.77,5.46L3.41,4.25a1,1,0,0,0-1.07-.16A1,1,0,0,0,1.75,5V9a1,1,0,0,0,1,1h4.5a1,1,0,0,0,.93-.64,1,1,0,0,0-.27-1.11L6.26,6.78a7.86,7.86,0,0,1,6-2.78A8,8,0,1,1,4.72,14.67a1,1,0,0,0-1.89.66A10,10,0,1,0,12.25,2Z" fill="#C9C9C9"/>
1931                    <path d="M16,16a1,1,0,0,1-.6-.2l-4-3A1,1,0,0,1,11,12V8a1,1,0,0,1,2,0v3.5l3.6,2.7a1,1,0,0,1,.2,1.4A1,1,0,0,1,16,16Z" fill="#C9C9C9"/>
1932                </svg>
1933                <a href="${arrUrl[n]}">${arrName[n]}</a>
1934                <span data-title="${arrName[n]}" data-url="${arrUrl[n]}"></span>
1935            </li>`;
1936            $(".group-recent ul").append(html2);
1937        }
1938    }
1939
1940    // 6. Menyimpan Riwayat Pencarian Baru (Diperbarui menggunakan .on() dan update real-time)
1941    resultsearch.on("click", ".item a", function(){
1942        // Ambil data terbaru dari cookie saat elemen diklik
1943        let currentNames = getCookie("last_search_name") ? getCookie("last_search_name").split(',').filter(Boolean) : [];
1944        let currentUrls = getCookie("last_search_url") ? getCookie("last_search_url").split(',').filter(Boolean) : [];
1945        
1946        let newName = $(this).attr('data-title');
1947        let newUrl = $(this).attr('data-url');
1948
1949        // Optional: Mencegah duplikasi history berturut-turut
1950        if(currentNames[currentNames.length - 1] !== newName) {
1951            currentNames.push(newName);
1952            currentUrls.push(newUrl);
1953            
1954            // Batasi maksimal penyimpanan array di cookie agar tidak membengkak (misal max 15 item)
1955            if(currentNames.length > 15) {
1956                currentNames.shift(); // Hapus yang paling lama
1957                currentUrls.shift();
1958            }
1959
1960            setCookie("last_search_name", currentNames.join(','), 7);
1961            setCookie("last_search_url", currentUrls.join(','), 7);
1962        }
1963    });
1964    
1965    // 7. Menghapus Riwayat Pencarian
1966    $(".delete-all-history").click(function() {
1967        setCookie("last_search_name", null, -1); // Gunakan nilai minus untuk menghapus cookie
1968        setCookie("last_search_url", null, -1);
1969        $(".last-search").hide();
1970        setTimeout(function(){
1971            location.reload();
1972        }, 500);
1973    });
1974    
1975    // 8. Trigger UI Buka/Tutup
1976    $("#search-trigger").click(function(){
1977        search_open();
1978    });
1979    $(".icon-search-mobile").click(function(){
1980        search_open();
1981    });
1982    $(".search-header svg").click(function(){
1983        search_close();
1984    });
1985    $(".icon-key-mobile").click(function(){
1986        search_close();
1987    });
1988
1989    function search_open() {
1990        $("body").addClass("search-popup-open");
1991        $("#nav-mobile-icon, .search-header label, .icon-search-mobile").hide();
1992        $("#search-popup, .search-header svg, .icon-key-mobile").show();
1993        $(".search-popup").focus();
1994        if($('.popup-recommend').length > 0 && $('.popup-recommend')[0].swiper) {
1995            $('.popup-recommend')[0].swiper.update();
1996        }
1997    }
1998
1999    function search_close() {
2000        $("body").removeClass("search-popup-open");
2001        $("#nav-mobile-icon, .search-header label, .icon-search-mobile").show();
2002        $("#search-popup, .search-header svg, .icon-key-mobile").hide();
2003        searchInput.val("");
2004        resultsearch.hide();
2005        resultrecommend.show();
2006    }
2007
2008    $(".site-overlay").click(function(){
2009        search_close();
2010    });
2011    
2012</script>
2012
2013 
2014   
2015 
2016     <div id="PageContainer" class="is-moved-by-drawerx" style="background-color: #000000;">
2017       <main class="main-content pt-0" role="main">
2018         
2019           <div id="breadcrumbProduct" class="d-none d-lg-block">
2020             <style>
2021   #breadcrumbProduct {
2022     padding: 20px 0;
2023   }
2024   #breadcrumbProduct ul {
2025       display: flex;
2026       padding: 0;
2027       list-style: none;
2028       margin: 0;
2029       gap: 12px;
2030   }
2031   #breadcrumbProduct ul li {
2032     text-transform: uppercase;
2033     margin: 0;
2034     font-size: 12px;
2035 }
2036   #breadcrumbProduct ul li a {
2037     color: #757575;
2038   }
2039 
2040   #breadcrumbProduct ul li svg {
2041     width: 10px;
2042     height: 10px;
2043     padding: 0;
2044     color: #757575;
2045     vertical-align: middle;
2046   }
2047 </style>
2048 <div class="container" style="color: gold;">
2049   <ul role="navigation" aria-label="breadcrumbs">
2050     <li><a href="https://heartysfoodhall.co.uk/" style="color: gold;">EMO78</a></li>
2051     <li><svg xmlns="image/logo-login-emo78.png" width="7" height="10" viewBox="0 0 7 10" fill="none">
2052     <path d="M1.51673 0.0583496L6.2334 4.77502L1.51673 9.49168L0.933398 8.90002L5.0584 4.77502L0.933398 0.650016L1.51673 0.0583496Z" fill="#757575"/>
2053 </svg></li>
2054       <li>SLOT GACOR</li>
2055       <li>BANDAR SLOT</li>
2056       <li>SLOT TERPERCAYA</li>
2057       <li>AGEN SLOT</li>
2058     
2059   </ul>
2060 </div>
2061 
2062           </div>
2063    
2063<script type="application/ld+json">
2064{
2065  "@context": "https://schema.org",
2066  "@type": "FAQPage",
2067  "mainEntity": [
2068    {
2069      "@type": "Question",
2070      "name": "Apa yang dimaksud dengan EMO78 sebagai Situs Slot Gacor dan Bandar Slot777?",
2071      "acceptedAnswer": {
2072        "@type": "Answer",
2073        "text": "EMO78 merupakan platform hiburan slot online yang menggabungkan berbagai kategori permainan digital, termasuk Slot777 dan pilihan game dari sejumlah provider populer. Struktur navigasinya dirancang agar pengguna lebih mudah menemukan permainan berdasarkan provider, tema, dan fitur yang tersedia."
2074      }
2075    },
2076    {
2077      "@type": "Question",
2078      "name": "Apakah EMO78 menyediakan permainan dari provider Pragmatic Play?",
2079      "acceptedAnswer": {
2080        "@type": "Answer",
2081        "text": "EMO78 menghadirkan kategori permainan dari provider Pragmatic Play yang dikenal memiliki beragam tema, fitur bonus, free spin, multiplier, dan mekanisme permainan yang berbeda pada setiap judul. Daftar permainan dapat berubah mengikuti pembaruan katalog yang tersedia."
2082      }
2083    },
2084    {
2085      "@type": "Question",
2086      "name": "Apa yang dimaksud dengan kategori Slot777 di EMO78?",
2087      "acceptedAnswer": {
2088        "@type": "Answer",
2089        "text": "Slot777 merupakan salah satu istilah yang banyak digunakan untuk menggambarkan kategori permainan slot digital. Di EMO78, pengguna dapat menjelajahi berbagai pilihan permainan berdasarkan provider, tema, fitur khusus, serta karakteristik masing-masing game."
2090      }
2091    },
2092    {
2093      "@type": "Question",
2094      "name": "Apa arti istilah Slot Gacor di EMO78?",
2095      "acceptedAnswer": {
2096        "@type": "Answer",
2097        "text": "Slot gacor adalah istilah populer yang digunakan komunitas pemain untuk menyebut permainan yang sedang banyak diperhatikan atau dianggap menarik untuk dimainkan. Istilah tersebut tidak berarti suatu game dapat menjamin kemenangan karena hasil permainan tetap ditentukan oleh mekanisme dan peluangnya."
2098      }
2099    },
2100    {
2101      "@type": "Question",
2102      "name": "Apa fungsi informasi RTP pada game Pragmatic di EMO78?",
2103      "acceptedAnswer": {
2104        "@type": "Answer",
2105        "text": "RTP atau Return to Player merupakan persentase teoretis pengembalian permainan dalam jangka panjang. Informasi RTP dapat digunakan untuk memahami karakteristik sebuah game, tetapi tidak dapat menjamin hasil kemenangan pada setiap putaran maupun sesi permainan tertentu."
2106      }
2107    },
2108    {
2109      "@type": "Question",
2110      "name": "Apakah EMO78 dapat diakses melalui Android dan iPhone?",
2111      "acceptedAnswer": {
2112        "@type": "Answer",
2113        "text": "Platform dengan desain responsif dapat menyesuaikan tampilan dengan berbagai ukuran layar sehingga katalog EMO78 dapat dijelajahi melalui Android, iPhone, tablet, maupun komputer menggunakan browser yang kompatibel."
2114      }
2115    },
2116    {
2117      "@type": "Question",
2118      "name": "Bagaimana cara memilih permainan Pragmatic dan Slot777 di EMO78?",
2119      "acceptedAnswer": {
2120        "@type": "Answer",
2121        "text": "Pengguna dapat mempertimbangkan tema permainan, fitur bonus, volatilitas, RTP, jumlah paylines, serta mekanisme permainan sebelum memilih game. Gunakan informasi tersebut sebagai referensi dan hindari menganggap istilah seperti gacor, maxwin, atau pasti menang sebagai jaminan hasil permainan."
2122      }
2123    }
2124  ]
2125}
2126</script>
2126
2127 
2128 
2128<script type="application/ld+json">
2129 {
2130   "@context": "https://schema.org",
2131   "@type": "BreadcrumbList",
2132   "itemListElement": [
2133     {
2134       "@type": "ListItem",
2135       "position": 1,
2136       "name": "EMO78",
2137       "item": "https://heartysfoodhall.co.uk/"
2138     },
2139     {
2140       "@type": "ListItem",
2141       "position": 2,
2142       "name": "SLOT GACOR",
2143       "item": "https://heartysfoodhall.co.uk/"
2144     },
2145     {
2146       "@type": "ListItem",
2147       "position": 3,
2148       "name": "BANDAR SLOT",
2149       "item": "https://heartysfoodhall.co.uk/"
2150     },
2151     {
2152       "@type": "ListItem",
2153       "position": 4,
2154       "name": "SLOT ONLINE",
2155       "item": "https://heartysfoodhall.co.uk/"
2156     },
2157     {
2158       "@type": "ListItem",
2159       "position": 5,
2160       "name": "AGEN SLOT",
2161       "item": "https://heartysfoodhall.co.uk/"
2162     },
2163     {
2164       "@type": "ListItem",
2165       "position": 6,
2166       "name": "SLOT ONLINE",
2167       "item": "https://heartysfoodhall.co.uk/"
2168     },
2169     {
2170       "@type": "ListItem",
2171       "position": 7,
2172       "name": "SLOT777",
2173       "item": "https://heartysfoodhall.co.uk/"
2174     },
2175     {
2176       "@type": "ListItem",
2177       "position": 8,
2178       "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026",
2179       "item": "https://heartysfoodhall.co.uk/"
2180     }
2181   ]
2182 }
2183 </script>
2183
2184
2185 <!--faq-->
2186<script type="application/ld+json">
2187{
2188  "@context": "https://schema.org",
2189  "@type": "FAQPage",
2190  "mainEntity": [
2191    {
2192      "@type": "Question",
2193      "name": "Apa yang dimaksud dengan EMO78 sebagai ekosistem slot digital?",
2194      "acceptedAnswer": {
2195        "@type": "Answer",
2196        "text": "EMO78 dalam konteks ini merujuk pada platform hiburan digital yang mengusung navigasi praktis, tampilan modern, serta pilihan permainan yang dapat dieksplorasi pengguna."
2197      }
2198    },
2199    {
2200      "@type": "Question",
2201      "name": "Apa yang membuat konsep EMO78 terlihat modern?",
2202      "acceptedAnswer": {
2203        "@type": "Answer",
2204        "text": "Konsep EMO78 menitikberatkan pada tampilan responsif, struktur menu yang terorganisasi, dan navigasi sederhana sehingga berbagai kategori dapat ditemukan dengan lebih mudah."
2205      }
2206    },
2207    {
2208      "@type": "Question",
2209      "name": "Apa saja game yang dapat ditemukan di EMO78?",
2210      "acceptedAnswer": {
2211        "@type": "Answer",
2212        "text": "Pilihan game bergantung pada katalog dan provider yang tersedia pada platform. Pengguna sebaiknya memeriksa katalog terbaru untuk mengetahui permainan yang sedang tersedia."
2213      }
2214    },
2215    {
2216      "@type": "Question",
2217      "name": "Apa arti istilah slot gacor?",
2218      "acceptedAnswer": {
2219        "@type": "Answer",
2220        "text": "Slot gacor merupakan istilah populer di kalangan pemain untuk menggambarkan permainan yang dianggap sedang memberikan hasil positif. Istilah tersebut bukan jaminan kemenangan."
2221      }
2222    },
2223    {
2224      "@type": "Question",
2225      "name": "Apakah RTP dapat menjamin kemenangan?",
2226      "acceptedAnswer": {
2227        "@type": "Answer",
2228        "text": "Tidak. RTP merupakan statistik teoretis yang menggambarkan pengembalian dalam jangka panjang dan tidak dapat digunakan untuk memastikan hasil pada putaran atau sesi tertentu."
2229      }
2230    },
2231    {
2232      "@type": "Question",
2233      "name": "Apakah EMO78 dapat digunakan melalui smartphone?",
2234      "acceptedAnswer": {
2235        "@type": "Answer",
2236        "text": "Kemampuan akses mobile bergantung pada halaman dan perangkat yang digunakan. Platform dengan desain responsif umumnya dapat menyesuaikan tampilan dengan ukuran layar smartphone."
2237      }
2238    },
2239    {
2240      "@type": "Question",
2241      "name": "Bagaimana cara memilih game dengan lebih bijak?",
2242      "acceptedAnswer": {
2243        "@type": "Answer",
2244        "text": "Perhatikan informasi permainan, pahami mekanismenya, dan jangan menganggap klaim seperti “pasti menang” sebagai kepastian. Tetapkan batas waktu dan anggaran sebelum bermain."
2245      }
2246    }
2247  ]
2248}
2249</script>
vendor: 1 bytes, line 2249
2249
2250<script type="application/ld+json">
2251{
2252  "@context": "https://schema.org",
2253  "@type": "Organization",
2254  "name": "EMO78",
2255  "url": "https://heartysfoodhall.co.uk/",
2256  "logo": "image/logo-login-emo78.png",
2257  "sameAs": [
2258    "https://www.instagram.com/EMO78official1",
2259    "https://x.com/EMO78official1"
2260  ],
2261  "contactPoint": {
2262    "@type": "ContactPoint",
2263    "telephone": "+62-878-994-1843",
2264    "contactType": "customer support",
2265    "areaServed": "ID",
2266    "availableLanguage": [
2267      "Indonesian",
2268      "English"
2269    ]
2270  }
2271}
2272</script>
2272
2273 
2274 
2274<script type="application/ld+json">
2275 {
2276   "@context": "https://schema.org",
2277   "@type": "VideoObject",
2278   "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026",
2279   "description": "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik",
2280   "thumbnailUrl": [
2281     "	https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif",
2282     "	https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif"
2283   ],
2284   "uploadDate": "2026-06-09T04:19:10-04:00",
2285   "duration": "PT3.5S",
2286   "contentUrl": "https://heartysfoodhall.co.uk/"
2287 }
2288 </script>
2288
2289 
2290 
2290<script type="application/ld+json">
2291 {
2292   "@context": "https://schema.org",
2293   "@graph": [
2294     {
2295       "@type": "Organization",
2296       "@id": "https://heartysfoodhall.co.uk/#org",
2297       "name": "EMO78",
2298       "url": "https://heartysfoodhall.co.uk/",
2299       "logo": "https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2300     },
2301     {
2302       "@type": "WebSite",
2303       "@id": "https://heartysfoodhall.co.uk/#website",
2304       "url": "https://heartysfoodhall.co.uk/",
2305       "name": "EMO78",
2306       "publisher": { "@id": "https://heartysfoodhall.co.uk/#org" },
2307       "inLanguage": "id-ID",
2308       "potentialAction": {
2309         "@type": "SearchAction",
2310         "target": "https://heartysfoodhall.co.uk/?s={search_term_string}",
2311         "query-input": "required name=search_term_string"
2312       }
2313     },
2314     {
2315       "@type": "SoftwareApplication",
2316       "@id": "https://heartysfoodhall.co.uk/#app",
2317       "name": "EMO78",
2318       "applicationCategory": "GameApplication",
2319       "operatingSystem": "Android, emo78, Windows",
2320       "offers": { "@type": "Offer", "price": "0", "priceCurrency": "IDR" },
2321       "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.9, "ratingCount": 35782 }
2322     }
2323   ]
2324 }
2325 </script>
2325
2326         
2327 <div id="shopify-section-Product" class="shopify-section product-section mt-0"><link href="https://heartysfoodhall.co.uk/outerbloom-global.css" rel="stylesheet" type="text/css" media="all" />
2328 
2329 
2330 <style>
2331     .bg-card {
2332     background-color: #000000;
2333 }
2334     </style>
2335 
2336 <!-- /templates/product.liquid -->
2337 
2338 
2339 <!-- <div itemscope itemtype="http://schema.org/Product"> -->
2340 
2341 
2342 <div class="product-standing-flower" data-product-type="flowerBoard">
2343   <meta itemprop="url" content="https://heartysfoodhall.co.uk/">
2344   <meta itemprop="image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
2345 
2346   
2347   
2348   <input id="data-sku" type="hidden" value="OBVSTF1086">
2349   <div class="product-single" style="background-image: url(image/background-emo78.png); background-attachment: fixed;">
2350     <div id="product-top" class="container">
2351       <div class="row bg-card product-sticky" style="background-color: rgba(0, 0, 0, 0.1);backdrop-filter: blur(25px); padding: 20px 25px;border-radius: 10px;">
2352         <div id="product-image" class="col-lg-7 text-center">
2353           <div class="product-image">
2354             <div class="row no-gutters">
2355   
2356   <div id="product-featured-image" class="row w-100">
2357     
2358       <div id="thumb-image-product" class="col-lg-2 col-12 d-none d-lg-block">
2359         
2360         <div class="swiper-container gallery-thumbs" style="min-height: 500px">
2361           <ul class="list-unstyled slider swiper-wrapper slider-nav ProductThumbs thumbnails" id="ProductThumbsx">
2362 
2363                   <li class="swiper-slide" data-type="image">
2364                     <a
2365                       href="files/Blossom-Shine-WM.jpg"
2366                       data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2367                       data-image="files/Blossom-Shine-WM.jpg"
2368                       data-position="1"
2369                       class="product-single__thumbnail"
2370                     >
2371                       <img
2372                         class="lazyload w-100"
2373                         src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2374                         alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2375                         width=""
2376                         height=""
2377                       >
2378                     </a>
2379                   </li>
2380                 
2381               
2382             
2383 
2384                   <li class="swiper-slide" data-type="image">
2385                     <a
2386                       href="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2387                       data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2388                       data-image="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2389                       data-position="2"
2390                       class="product-single__thumbnail"
2391                     >
2392                       <img
2393                         class="lazyload w-100"
2394                         src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2395                         alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2396                         width=""
2397                         height=""
2398                       >
2399                     </a>
2400                   </li>
2401                 
2402               
2403             
2404 
2405                   <li class="swiper-slide" data-type="image">
2406                     <a
2407                       href="files/Blossom-Shine_3-WM.jpg"
2408                       data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2409                       data-image="files/Blossom-Shine_3-WM.jpg"
2410                       data-position="3"
2411                       class="product-single__thumbnail"
2412                     >
2413                       <img
2414                         class="lazyload w-100"
2415                         src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2416                         alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2417                         width=""
2418                         height=""
2419                       >
2420                     </a>
2421                   </li>
2422                 
2423               
2424             
2425 
2426                   <li class="swiper-slide" data-type="image">
2427                     <a
2428                       href="files/Blossom-Shine_4.jpg"
2429                       data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2430                       data-image="files/Blossom-Shine_4.jpg"
2431                       data-position="4"
2432                       class="product-single__thumbnail"
2433                     >
2434                       <img
2435                         class="lazyload w-100"
2436                         src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2437                         alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2438                         width=""
2439                         height=""
2440                       >
2441                     </a>
2442                   </li>
2443                 
2444               
2445             
2446           </ul>
2447         </div>
2448         
2449       </div>
2450     
2451     <div
2452       id="featured-image-product"
2453       class="col-lg-10 col-12 d-none d-lg-block"
2454     >
2455       <div class="swiper-container gallery-top">
2456         <div class="swiper-slide product-single__image">
2457           
2458 <div class="product-single__photos slider slider-for" id="ProductPhoto">
2459   
2460 
2461   <div class="easyzoom easyzoom--overlay easyzoom--with-thumbnails">
2462     <a href="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png">
2463       <img
2464         src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2465         alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2466         id="ProductPhotoImg"
2467         class="lazyload"
2468       >
2469       
2470     </a>
2471   </div>
2472 </div>
2473 
2474         </div>
2475         <div class="swiper-slide product-single__video" style="display: none">
2476           <video
2477             src="	https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif"
2478             playsinline
2479             loop
2480             muted
2481           ></video>
2482         </div>
2483       </div>
2484     </div>
2485   </div>
2486 
2487   <div id="featured-image-product2" class="col-12 d-lg-none">
2488     <div class="swiper-container gallery-mobile">
2489       <ul class="swiper-wrapper">
2490 <li class="swiper-slide img">
2491               
2492                 <img
2493                   class="swiper-lazy"
2494                   src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2495                   data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2496                   alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2497                   width=""
2498                   height=""
2499                 >
2500               
2501             </li>
2502           
2503         
2504 <li class="swiper-slide img">
2505               
2506                 <img
2507                   class="swiper-lazy"
2508                   src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2509                   data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2510                   alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2511                   width=""
2512                   height=""
2513                 >
2514               
2515             </li>
2516           
2517         
2518 <li class="swiper-slide img">
2519               
2520                 <img
2521                   class="swiper-lazy"
2522                   src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2523                   data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2524                   alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2525                   width=""
2526                   height=""
2527                 >
2528               
2529             </li>
2530           
2531         
2532 <li class="swiper-slide img">
2533               
2534                 <img
2535                   class="swiper-lazy"
2536                   src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2537                   data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"
2538                   alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"
2539                   width=""
2540                   height=""
2541                 >
2542               
2543             </li>
2544           
2545         
2546       </ul>
2547       
2548         <div class="swiper-button-prev"><svg class="icon icon-chevron-left" xmlns="image/logo-login-emo78.png" width="7" height="12" viewBox="0 0 7 12"> <circle cx="60%" cy="50%" r="12" fill="transparent" /> <path d="M6.35355339,10.6464466 C6.54881554,10.8417088 6.54881554,11.1582912 6.35355339,11.3535534 C6.15829124,11.5488155 5.84170876,11.5488155 5.64644661,11.3535534 L0.646446609,6.35355339 C0.451184464,6.15829124 0.451184464,5.84170876 0.646446609,5.64644661 L5.64644661,0.646446609 C5.84170876,0.451184464 6.15829124,0.451184464 6.35355339,0.646446609 C6.54881554,0.841708755 6.54881554,1.15829124 6.35355339,1.35355339 L1.70710678,6 L6.35355339,10.6464466 Z"/> </svg></div>
2549         <div class="swiper-button-next"><svg xmlns="image/logo-login-emo78.png" width="7" height="10" viewBox="0 0 7 10" fill="none">
2550     <path d="M1.51673 0.0583496L6.2334 4.77502L1.51673 9.49168L0.933398 8.90002L5.0584 4.77502L0.933398 0.650016L1.51673 0.0583496Z" fill="#757575"/>
2551 </svg></div>
2552 
2553         <!-- Add Pagination -->
2554         <div class="swiper-pagination"></div>
2555       
2556     </div>
2557   </div>
2558 
2559   <div class="product-m-pageleb-video col-12 text-center d-lg-none">
2560     <!-- product video -->
2561     <style>
2562       .view-video{display:block; margin:auto; padding:5px 10px;font-size:16px;font-weight:bold;border:2px solid #ffffff;background:#fff;}
2563       .view-video .icon-play{fill:#ffffff;vertical-align: middle;}
2564       .video-modal{display:none;position:fixed;background: rgba(0,0,0,.5); width:100%; height:100%; overflow:auto; z-index:1; top:0;left:0;}
2565       .close-video{position:absolute;right:9px; top:8%;z-index:2;padding:5px;}
2566       .close-video .icon{width:30px;height:30px;}
2567       /*responsive iframe */
2568       .video-container {position: relative;padding-bottom: 48.25%;padding-top: 35px;height: 0;box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.3);}
2569       .video-container iframe {position: absolute;top:60%;left: 0;width: 100%;height: 100%;}
2570 
2571       .youtube {
2572         background-color: #000;
2573         margin-bottom: 30px;
2574         position: relative;
2575         padding-top: 56.25%;
2576         overflow: hidden;
2577         cursor: pointer;
2578         width: 100%;
2579       }
2580       .swiper-slide .youtube {
2581         max-width: 480px;
2582       }
2583       .youtube img {
2584         width: 100%;
2585         top: -16.82%;
2586         left: 0;
2587         opacity: 0.7;
2588       }
2589       .youtube .play-button {
2590         width: 90px;
2591         height: 60px;
2592         background-color: #333;
2593         box-shadow: 0 0 30px rgba( 0,0,0,0.6 );
2594         z-index: 1;
2595         opacity: 0.8;
2596         border-radius: 6px;
2597       }
2598       .youtube .play-button:before {
2599         content: "";
2600         border-style: solid;
2601         border-width: 15px 0 15px 26.0px;
2602         border-color: transparent transparent transparent #fff;
2603       }
2604       .youtube img,
2605       .youtube .play-button {
2606         cursor: pointer;
2607       }
2608       .youtube img,
2609       .youtube iframe,
2610       .youtube .play-button,
2611       .youtube .play-button:before {
2612         position: absolute;
2613       }
2614       .youtube .play-button,
2615       .youtube .play-button:before {
2616         top: 50%;
2617         left: 50%;
2618         transform: translate3d( -50%, -50%, 0 );
2619       }
2620       .youtube iframe {
2621         height: 100%;
2622         width: 100%;
2623         top: 0;
2624         left: 0;
2625       }
2626     </style>
2627 
2628     
2629   </div>
2630 </div>
2631 
2632 <div class="product-desc-add position-relative d-none d-lg-block m-0">
2633 
2634 </div>
2635 
2636 
2636<script>
2637   if ($(window).width() < 991) {
2638     var direction = 'horizontal'
2639   } else {
2640     var direction = 'vertical'
2641     $(".gallery-thumbs").height($("#ProductPhotoImg").height())
2642   }
2643   var swiper = new Swiper('.gallery-thumbs', {
2644     
2645     direction,
2646     slidesPerView: 4.5,
2647     spaceBetween: 12,
2648     navigation: {
2649       nextEl: '.swiper-button-next',
2650       prevEl: '.swiper-button-prev',
2651     }
2652   });
2653   
2654   var swiper = new Swiper('.gallery-mobile', {
2655     //loop: true,
2656     lazy: true,
2657     speed: 300,
2658     resistance : true,
2659     resistanceRatio : 0,
2660     freeModeMomentumRatio : 0.45,
2661     freeModeMomentumVelocityRatio : 1.5,
2662     navigation: {
2663       nextEl: '.swiper-button-next',
2664       prevEl: '.swiper-button-prev',
2665     },
2666     pagination: {
2667       el: '.swiper-pagination'
2668     },
2669     useCSS3Transforms: false,
2670     loop: false,
2671     on: {
2672       init: function () {
2673         console.log('swiper initialized');
2674         var currentVideo =  $("[data-swiper-slide-index=" + this.realIndex + "]").find("video");
2675         currentVideo.trigger('play');
2676       },
2677     },
2678   });
2679 
2680   /* GET ALL VIDEOS */
2681   var sliderVideos = $(".swiper-slide video");
2682   
2683   /* SWIPER API - Event will be fired after animation to other slide (next or previous) */
2684   swiper.on('slideChange', function () {
2685     console.log('slide changed');
2686     /* stop all videos  */
2687     sliderVideos.each(function( index ) {
2688       this.currentTime = 0;
2689     });
2690   
2691     /* SWIPER GET CURRENT AND PREV SLIDE (AND The VIDEO INSIDE) */
2692     var prevVideo =  $(`[data-swiper-slide-index="${this.previousIndex}]"`).find("video");
2693     var currentVideo =  $(`[data-swiper-slide-index="${this.realIndex}"]`).find("video");
2694     prevVideo.trigger('stop');
2695     currentVideo.trigger('play');
2696   });
2697   
2698 
2699   $("[data-video]").click(function(){
2700     const file = $(this).data("video")
2701     $(".product-single__video").show()
2702     $(".product-single__image").hide()
2703     $(".product-single__video").find("video").attr("src", file)
2704     $(".product-single__video").find("video")[0].play();
2705   })
2706   $("[data-image]").click(function(){
2707     $(".product-single__video").hide()
2708     $(".product-single__image").show()
2709     $(".product-single__video").find("video")[0].pause();
2710   })
2711 
2712   $("#product-image .swiper-slide").each(function(){
2713     let width = $(this).width()
2714     $(this).height(width)
2715   })
2716 
2717   $(window).resize(function() {
2718     $("#product-image .swiper-slide").each(function(){
2719       let width = $(this).width()
2720       $(this).height(width)
2721     })
2722   })
2723 </script>
2723
2724 
2725           </div>
2726           <br>
2727           <br>
2728 
2729   
2730    <div class="grid__item_product-info mb-3">
2731  <div class="c-pdp-product-info">
2732    <div class="c-pdp-product-info__service c-pdp-product-info__service--active">
2733<h1 style="text-align: justify;">EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</h1>
2734<p style="text-align: justify;"><span style="color: #ffff00;"><a style="color: #ffff00;" href="https://heartysfoodhall.co.uk/"><strong>EMO78</strong></a></span> hadir sebagai platform hiburan digital yang menggabungkan konsep <strong>situs slot gacor</strong>, <strong>Bandar Slot777</strong>, dan pilihan permainan dari berbagai provider populer, termasuk Pragmatic Play. Perkembangan permainan slot online membuat pemain kini tidak hanya mempertimbangkan tampilan visual sebuah permainan, tetapi juga variasi tema, fitur bonus, mekanisme permainan, serta kenyamanan ketika mengakses platform melalui perangkat desktop maupun smartphone. EMO78 mencoba menghadirkan sistem navigasi yang lebih sederhana sehingga pengguna dapat menemukan kategori permainan berdasarkan provider, jenis permainan, maupun fitur yang tersedia. Salah satu kategori yang banyak dikenal adalah permainan dari <strong>provider Pragmatic</strong>, yang memiliki beragam tema mulai dari petualangan, fantasi, buah klasik, hingga permainan dengan animasi modern. Setiap permainan memiliki karakteristik berbeda, termasuk jumlah paylines, simbol khusus, multiplier, free spin, dan mekanisme tambahan lainnya. Karena itu, istilah <em>slot gacor</em> sebaiknya dipahami sebagai istilah populer yang digunakan komunitas untuk menyebut permainan yang sedang banyak dimainkan atau dianggap menarik, bukan sebagai jaminan bahwa sebuah permainan akan selalu memberikan kemenangan. Hasil setiap permainan tetap mengikuti mekanisme sistem dan unsur peluang yang diterapkan oleh masing-masing penyedia permainan.</p>
2735<p style="text-align: justify;">Sebagai&nbsp;<span style="color: #ffff00;"><strong><a style="color: #ffff00;" href="https://heartysfoodhall.co.uk/">Bandar Slot777</a></strong></span>, EMO78 menyediakan struktur katalog yang mengelompokkan berbagai permainan agar pengguna dapat melakukan pencarian dengan lebih praktis. Pengelompokan berdasarkan provider menjadi salah satu fitur penting karena setiap pengembang memiliki ciri khas tersendiri. Pragmatic Play, misalnya, dikenal melalui desain permainan yang relatif mudah dikenali, animasi modern, serta fitur bonus yang beragam pada setiap judulnya. Selain Pragmatic, sebuah platform slot biasanya juga menghadirkan beberapa pilihan provider lain sehingga pengguna dapat membandingkan tema dan mekanisme permainan yang berbeda. Konsep <strong>Slot777</strong> sendiri sering digunakan sebagai istilah yang berkaitan dengan kategori permainan slot digital dan simbol angka tujuh yang sejak lama identik dengan mesin slot. Pada platform modern, pengalaman tersebut dikembangkan menjadi permainan berbasis HTML5 yang dapat berjalan langsung melalui browser tanpa harus memasang perangkat lunak tambahan. Hal ini membuat akses melalui perangkat Android, iPhone, tablet, maupun komputer menjadi lebih fleksibel. Dari sisi pengalaman pengguna, desain responsif, kecepatan halaman, menu yang jelas, sistem pencarian, dan pengelompokan kategori memiliki peran penting. Pengguna sebaiknya juga memperhatikan informasi mengenai aturan permainan, nilai taruhan, volatilitas, RTP yang dicantumkan oleh provider, serta ketentuan bonus sebelum memainkan suatu permainan. Informasi tersebut membantu pengguna memahami bahwa setiap judul slot memiliki struktur permainan dan tingkat risiko yang berbeda.</p>
2736<p style="text-align: justify;">Melalui kombinasi katalog permainan, provider Pragmatic, kategori&nbsp;<span style="color: #ffff00;"><strong><a style="color: #ffff00;" href="https://heartysfoodhall.co.uk/">slot gacor</a></strong></span>, dan konsep <strong>Bandar Slot777</strong>, EMO78 dapat menjadi salah satu nama yang digunakan pengguna ketika mencari pilihan hiburan slot online dalam satu platform. Namun, pemilihan platform sebaiknya tidak hanya didasarkan pada promosi atau istilah seperti &ldquo;gacor&rdquo;, &ldquo;maxwin&rdquo;, dan &ldquo;pasti menang&rdquo;. Pengguna perlu memeriksa aspek yang lebih objektif, seperti keamanan koneksi HTTPS, transparansi syarat dan ketentuan, kebijakan privasi, informasi layanan pelanggan, metode transaksi, serta batasan usia yang berlaku. Tidak ada sistem atau strategi tertentu yang dapat menjamin hasil kemenangan pada permainan berbasis peluang. Oleh karena itu, aktivitas permainan idealnya ditempatkan sebagai bentuk hiburan dengan batas anggaran yang telah ditentukan sebelumnya. Jangan menggunakan dana kebutuhan utama, dana pinjaman, atau uang yang tidak siap untuk kehilangan. Kehadiran provider seperti <strong>Pragmatic Play</strong> memang memberikan variasi permainan yang luas, tetapi keputusan dalam memilih permainan tetap perlu dilakukan secara rasional. Dengan navigasi yang terstruktur, pilihan kategori yang beragam, dan akses yang kompatibel dengan berbagai perangkat, EMO78 membawa konsep <strong>Situs Slot Gacor X Bandar&nbsp;e</strong>&nbsp;ke dalam pengalaman hiburan digital yang lebih mudah dijelajahi. Pengguna tetap perlu memahami mekanisme permainan, memilih kategori berdasarkan preferensi pribadi, serta menggunakan platform secara bertanggung jawab sesuai aturan dan ketentuan y
2736ang berlaku di wilayah masing-masing.</p></div>
2737  </div>
2738</div>
2739   
2740 
2741 
2742 
2743 
2744 <style>
2745   .c-pdp-product-info__service--active {
2746     font-size: 12px;
2747     padding-left: 10px;
2748     text-align: left;
2749     max-width: 550px;
2750     margin: auto;
2751     color: #fff;
2752   }
2753   .c-pdp-product-info__service--active li {
2754     list-style: disc;
2755   }
2756   .c-pdp-product-info {
2757     background-color: #000000;
2758     padding: 12px;
2759     margin: 0;
2760   }
2761   .freeship em {
2762     font-style: italic;
2763     font-size: 12px !important;
2764   }
2765 
2766 
2767 </style>
2768 
2769 
2769<script>
2770   $(document).ready(function(){
2771     if ( $(".c-pdp-product-info__service li").length == 1 ) {
2772       $(".c-pdp-product-info__service").addClass("no-bullet");
2773       $(".c-pdp-product-info__service li").addClass("no-bullets");
2774     }
2775   });
2776 </script>
2776
2777 
2778   
2779 
2780 
2781 
2782   
2783 
2784   
2785 
2786 
2787             
2788           
2789         </div>
2790         <div id="product-meta" class="col-lg-5 p-0">
2791           <div class="product-meta">
2792             <style>
2793   .product-meta--review {margin-top:10px}
2794   .freeship * {font-size: 14px !important;font-style: normal;}
2795 </style>
2796 <h1 itemprop="name" class="mb-2" style="color: gold; font-weight: bold;">EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</h1>
2797 
2798 <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
2799   <meta itemprop="priceCurrency" content="IDR">
2800 
2801   <link itemprop="availability" href="https://schema.org/InStock">
2802   
2802<script
2803     type="text/javascript"
2804     src="//platform-api.sharethis.com/js/sharethis.js#property=5acdc0aa3ef3c0001396fd50&product=custom-share-buttons"
2805     async="async"
2806   ></script>
2806
2807   
2808 
2809   
2810 
2811   <span class="visually-hidden">Translation missing: en.products.general.regular_price</span>
2812   
2813     <span class="visually-hidden">Translation missing: en.products.general.sale_price</span>
2814   
2815   <div class="row no-gutters mb-3">
2816     <span
2817       id="ProductPrice"
2818       class="h2 ProductPrice"
2819       itemprop="price"
2820       content="835000" style="color: #ffffff;"
2821     >
2822       Rp 5.000
2823     </span>
2824     <div class="discount-product-detail">
2825       <p id="ComparePrice" class="ComparePrice mt-2 mt-lg-0">
2826         Rp 78.000
2827       </p>
2828       <span class=" tag-discount">
2829         
2830           
2831           <span id="newDiscount" class="product-tag persentase-discount hide"> 
2832       (90%)
2833       </span><br>
2834         
2835       </span>
2836     </div>
2837   </div>
2838 
2839   <div class="row no-gutters meta-sds">
2840     <div class="col-12 mb-2 mb-lg-0 stock-info">
2841       
2842       
2843       <span
2844         id="ProductStock-Product"
2845         class="product-single__stock mb-2 hide"
2846       >
2847         
2848           
2849             
2850               
2851               Barang dikirim pada 
2852             
2853           
2854         
2855       </span>
2856 
2857       <style>
2858     .short-desc-desktop {
2859         margin-bottom: 2rem;
2860         color: white;
2861     }
2862     .short-desc ul li:nth-child(n + 4) {
2863         display: none;
2864     }
2865     .short-desc ul li.showList:nth-child(n + 4) {
2866         display: list-item;
2867     }
2868     label.more {
2869         display: none;
2870     }
2871     label.more.showMe {
2872         display: block;
2873         font-size: 12px;
2874         text-transform: uppercase;
2875         font-weight: 700;
2876         cursor: pointer;
2877     }
2878 </style>
2879 
2880     <div class="short-desc-desktop d-none d-lg-block">
2881         <div class="short-desc">
2882            
2883 <p>EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik</p>
2884         </div>
2885         <label class="more">Show More →</label>
2886     </div><br>
2887 
2888 
2889 
2889<script>
2890     var liCount;
2891     $(document).ready(function () {
2892         $(".short-desc ul").each(function() {
2893             liCount = $(this).children("li").length;
2894             if (liCount > 3) {
2895                 $(this).parent(".short-desc").next(".more").addClass("showMe");
2896             }
2897         });
2898 
2899         $(".more").click(function () {
2900             //$(".short-desc").find("li").addClass("showList");
2901             // $(this).hide();
2902             $("#product-desc").find("ul").show()
2903             $('html, body').animate({
2904                 scrollTop: $("#product-desc").offset().top - 250
2905             }, 2000);
2906             $("#product-desc").css("height","auto");
2907             $("#more_content").remove();
2908             $(".product-spec").append("<div id='less_content' class='readmore'><span class='less_content'>Less</span></div>")
2909         });
2910     });
2911 </script>
2911
2912 
2913       
2914     </div>
2915   </div>
2916 
2917   <div id="purchaseProduct">
2918   
2919   
2920 
2921 
2922 <style>
2923   .variant-metafield {
2924     display: block!important;
2925     width: 1px;
2926     padding: 0;
2927     border-color: #fff;
2928   }
2929   .select2-results__option[aria-disabled] {
2930     display: none;
2931   }
2932 
2933   .towel-bordir {
2934     width: 100%;
2935     display: flex;
2936     align-items: center;
2937     justify-content: space-around;
2938   }
2939 </style>
2940 
2941 
2942 
2943 
2944 
2944<script>
2945   
2946   
2947 </script>
2947
2948 
2949 
2950 
2951 
2952 
2953 
2954 <select
2955   name="id[]"
2956   id="productSelect"
2957   class="product-single__variants ignore hide hide"
2958 >
2959   
2960     
2961       
2962       <option
2963         
2964           selected="selected"
2965         
2966         data-sku="OBVSTF1086"
2967         value="44083045826775"
2968       >
2969         Default Title
2970       </option>
2971 
2972     
2973   
2974 </select>
2975 
2976 
2976<script src="//outerbloom.com/cdn/shop/t/138/assets/jquery.magnific-popup.min.js?v=184369421263510081681752652422" type="text/javascript"></script>
2976
2977 
2978 
2978<script>
2979   $('.size-chart-open-popup').magnificPopup({
2980     type:'inline',
2981     midClick: true
2982   });
2983 </script>
2983
2984 
2985   
2986   
2987   
2988   <div class="upload-image-preview">
2989     
2990     
2991     
2992     
2993     
2994     <style>
2995   .file-dnd * {
2996     margin: 0;
2997     padding: 0;
2998     box-sizing: border-box;
2999   }
3000   .file-dnd {
3001     width: 100%;
3002     height: 250px;
3003     border: 1px solid #ddd;
3004     border-radius: 10px;
3005     padding: 15px;
3006     display: flex;
3007     flex-direction: column;
3008     gap: 10px;
3009     /* box-shadow: 0px 2px 10px 2px rgba(0,0,0,0.05); */
3010     margin: auto;
3011   }
3012   .file-dnd input {
3013     display: none;
3014   }
3015   .file-dnd .before-upload {
3016     border: 1px dashed #888;
3017     flex: 1;
3018     border-radius: 5px;
3019     display: flex;
3020     justify-content: center;
3021     align-items: center;
3022     text-align: center;
3023     cursor: pointer;
3024   }
3025   .file-dnd .before-upload > div {
3026     display: flex;
3027     flex-direction: column;
3028     align-items: center;
3029     gap: 8px;
3030   }
3031   .file-dnd .before-upload > div h4 {
3032     width: 150px;
3033   }
3034   .file-dnd .before-upload > div p {
3035     font-size: 12px !important;
3036     color: #555;
3037   }
3038   .file-dnd.active .before-upload {
3039     border: 1px solid #5750d9;
3040     background-color: #f5f5ff;
3041   }
3042   .file-dnd .after-upload {
3043     position: relative;
3044     display: none;
3045   }
3046   .file-dnd .after-upload img {
3047     width: 100%;
3048     border-radius: 5px;
3049     max-height: 180px;
3050     object-fit: contain;
3051     display: block;
3052   }
3053   .file-dnd .after-upload .clear-btn {
3054     position: absolute;
3055     top: 10px;
3056     right: 10px;
3057     background: rgba(255, 255, 255, 0.5);
3058     width: 15px;
3059     height: 15px;
3060     text-align: center;
3061     line-height: 15px;
3062     border-radius: 50%;
3063     color: #fff;
3064     cursor: pointer;
3065     font-size: 14px;
3066   }
3067 </style>
3068 
3069 <div
3070   class="file-dnd mb-3"
3071   
3072     style="display: none"
3073   
3074 >
3075   <label for="upload-photo">Upload your Photo:</label>
3076   <input type="file" id="upload-photo" accept="image/*">
3077   <input type="hidden" data-properties="Photo">
3078   <div class="before-upload">
3079     <div>
3080       <svg id="surface1" xmlns="image/logo-login-emo78.png" width="33.053" height="41.719" viewBox="0 0 33.053 41.719">
3081   <path id="Path_2149" data-name="Path 2149" d="M22.982.322A1.009,1.009,0,0,0,22.257,0H5.982A5.505,5.505,0,0,0,.5,5.472V36.247a5.505,5.505,0,0,0,5.482,5.472H28.071a5.505,5.505,0,0,0,5.482-5.472V11.81a1.085,1.085,0,0,0-.292-.705Zm.292,3.235,6.883,7.225H25.683a2.4,2.4,0,0,1-2.409-2.4Zm4.8,36.147H5.982a3.49,3.49,0,0,1-3.467-3.457V5.472A3.49,3.49,0,0,1,5.982,2.015H21.259V8.384A4.409,4.409,0,0,0,25.683,12.8h5.855V36.247A3.484,3.484,0,0,1,28.071,39.7Zm0,0" transform="translate(-0.5)" fill="#ababab"></path>
3082   <path id="Path_2150" data-name="Path 2150" d="M106.767,401.934H90.18a1.008,1.008,0,1,0,0,2.015h16.6a1.008,1.008,0,1,0-.01-2.015Zm0,0" transform="translate(-81.947 -369.183)" fill="#ababab"></path>
3083   <path id="Path_2151" data-name="Path 2151" d="M120.143,178.328l4.152-4.464v11a1.008,1.008,0,0,0,2.015,0v-11l4.152,4.464a1.005,1.005,0,0,0,1.471-1.371l-5.905-6.339a1,1,0,0,0-1.471,0l-5.905,6.339a1,1,0,0,0,.05,1.421A1.028,1.028,0,0,0,120.143,178.328Zm0,0" transform="translate(-108.776 -156.421)" fill="#ababab"></path>
3084 </svg>
3085 
3086       <h4>Drag & Drop Photo file or Browse</h4>
3087       <p>Supports: JPEG, PNG, GIF, TIFF</p>
3088     </div>
3089   </div>
3090   <div class="after-upload">
3091     <div class="clear-btn">&times;</div>
3092     <img src="" width="" height="">
3093   </div>
3094 </div>
3095 
3095<script>
3096   function applyDndFile(el) {
3097     const parent = document.querySelector(".file-dnd")
3098     const beforeUploadEl = el.querySelector(".before-upload")
3099     const afterUploadEl = el.querySelector(".after-upload")
3100     const inputFile = el.querySelector("input[type=file]")
3101     const imagePreview = el.querySelector(".after-upload img")
3102     const clearBtn = el.querySelector(".after-upload .clear-btn")
3103     const inputProps = parent.querySelector("[data-properties]");
3104 
3105     async function upload(name, uri, type) {
3106       try {
3107         const filename = name.split('.')[0]
3108         let formData = new FormData(); 
3109         formData.append("file", uri);
3110         const response = await fetch(`${host}/upload?name=${filename}&dir=gift&type=${type}`, {
3111           method: "POST", 
3112           body: formData
3113         })
3114         if(response) {
3115           const res = await response.json()
3116           return res
3117         }
3118       } catch(err){
3119         console.log(err)
3120       }
3121     }
3122 
3123     function showImagePreview(img) {
3124       if(img){
3125         const blobUrl = URL.createObjectURL(img)
3126         imagePreview.src = blobUrl
3127         afterUploadEl.style.display = "block"
3128         beforeUploadEl.style.display = "none"
3129       }
3130     }
3131 
3132     beforeUploadEl.addEventListener("click", (e) => {
3133       e.preventDefault()
3134       inputFile.click()
3135     })
3136 
3137     inputFile.addEventListener("change", async (e) => {
3138       e.preventDefault()
3139       showImagePreview(e.target.files[0])
3140       var uploadData = await upload(e.target.files[0].name, e.target.files[0], e.target.files[0].type)
3141       inputProps.value = uploadData?.url
3142     })
3143 
3144     clearBtn.addEventListener("click", (e) => {
3145       afterUploadEl.style.display = "none"
3146       beforeUploadEl.style.display = "flex"
3147       inputProps.value = ""
3148     })
3149 
3150     beforeUploadEl.addEventListener("dragover", (e) => {
3151       e.preventDefault()
3152       el.classList.add("active")
3153     })
3154 
3155     beforeUploadEl.addEventListener("dragleave", (e) => {
3156       e.preventDefault()
3157       el.classList.remove("active")
3158     })
3159 
3160     beforeUploadEl.addEventListener("drop", async (e) => {
3161       e.preventDefault()
3162       el.classList.remove("active")
3163       showImagePreview(e.dataTransfer.files[0])
3164       var uploadData = await upload(e.dataTransfer.files[0].name, e.dataTransfer.files[0], e.dataTransfer.files[0].type)
3165       console.log(uploadData)
3166       inputProps.value = uploadData?.url
3167     })
3168   }
3169 
3170   applyDndFile(document.querySelector(".file-dnd"))
3171 
3172   $(document).ready(function(){
3173     $(".variant-swatch").change(function(){
3174       const v = $(this).val().toLowerCase()
3175       const list = ["photo", "custom one side", "custom two side", "small", "big"]
3176       if(list.some(item => v.includes(item))) return $(".file-dnd").show()
3177       $(".file-dnd").hide()
3178       $(".file-dnd").find("[data-properties]").val("")
3179       $(".after-upload").hide()
3180       $(".before-upload").css("display", "flex")
3181     })
3182   })
3183 </script>
3183
3184 
3185   </div>
3186   
3187     
3188     <div class="delivery-city mb-4">
3189         <a href="https://ya.emo78-jago.store/">
3190        <center><img src="https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif" alt="logo-daftar" style="width: 260px; margin-top: -20px;"></center></a><br>
3191   <h4 class="fw-600 text-uppercase mb-15" style="color: gold;">PERMAINAN SERU DARI EMO78</h4>
3192   <div class="row justify-content-between m-0">
3193     <select id="cities" class="form-control select-search" required>
3194       <option value="">Nikmati Serunya Bermain di EMO78 & Dapatkan Hadiah Jutaan Rupiah!</option>
3195     </select>
3196   </div>
3197 </div>
3198 
3199 <style>
3200   @media (max-width: 768px) {
3201     .select2-search__field {
3202       pointer-events: none !important;
3203     }
3204     
3205     .select2-search {
3206       display: none !important;
3207     }
3208   }
3209 </style>
3210 
3211 
3211<script>
3212   $(document).ready(function() {
3213     // Check if mobile
3214     if (window.innerWidth <= 768) {
3215       // When cities select2 opens on mobile, remove focus from search
3216       $('#cities').on('select2:open', function() {
3217         setTimeout(function() {
3218           $('.select2-search__field').blur();
3219           $('.select2-search__field').prop('readonly', true);
3220         }, 100);
3221       });
3222     }
3223   });
3224 </script>
3224
3225 
3226  <style>
3227 .icon-img-footer {
3228     width: 80px; 
3229     padding: 0px 5px;
3230 }
3231 @media (min-width: 768px) {
3232     .icon-img-footer {
3233         width: 120px; 
3234     }
3235 }
3236 @media (min-width: 992px) {
3237     .icon-img-footer {
3238         width: 120px; 
3239     }
3240 }
3241 
3242 
3243 </style>
3244   <div id="row-delivery-date" class="row m-0 mb-3">
3245     <h4 class="fw-600 text-uppercase col-12 p-0 mb-15" style="color: gold;">DAFTAR PERMAINAN EMO78 SEKARANG!</h4>
3246     <div id="deliveryDate" class="m-0"></div>
3247     <div id="deliveryDateFull">
3248       <div class="">
3249         <input
3250           type="text"
3251           id="full-date"
3252           class="date-full calendarbutton btn steps-btn btn-date-time mb-0"
3253           value="Full Calendar"
3254         >
3255         <label for="full-date"><svg version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32">
3256 <title>icon-arrow-right</title>
3257 <path d="M25.057 15.333l-6.862-6.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8 8c0.26 0.26 0.26 0.682 0 0.943l-8 8c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l6.862-6.862h-19.724c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h19.724z"></path>
3258 </svg></label>
3259       </div>
3260       <button class="btnChangeDeliveryDate hide">Change Delivery Date</button>
3261     </div>
3262     <div class="form-group p-0">
3263       <input type="text" id="propDeliveryDate" required class="hide">
3264     </div>
3265   </div>
3266   
3267   
3268     <div id="row-delivery-time" class="row m-0 mb-3">
3269       <h4 class="text-center fw-600 text-uppercase col-12 mb-15">
3270     EMO78
3271 </h4>
3272       <div id="deliveryTime" class="d-flex w-100 m-0"></div>
3273       <div class="form-group p-0">
3274         <input type="text" id="propDeliveryTime" class="hide" required>
3275       </div>
3276     </div>
3277   
3278 
3279 
3280   
3281   
3282   <div id="personalizeBtn">
3283     
3284     
3285     
3286     
3287     <button
3288       class="btn text-uppercase w-100 fw-400"
3289       
3290       
3291       
3292     >
3293       
3294         customize your flower board
3295       
3296     </button>
3297     <div class="button-share-wishlist d-flex justify-content-around mt-3">
3298       <div class="button-share text-center">
3299         <p id="shareButton" class="d-flex gap-2"><span>EMO78</span><svg xmlns="image/logo-login-emo78.png" width="15" height="13" viewBox="0 0 15 13" fill="none">
3300   <path d="M13.825 5.85006L10 2.02506V4.07506L9.28333 4.18339C5.69167 4.69172 3.25833 6.57506 1.86667 9.45839C3.8 8.09172 6.2 7.43339 9.16667 7.43339H10V9.67506M8.33333 8.28339C4.60833 8.45839 1.94167 9.80006 0 12.5167C0.833333 8.35006 3.33333 4.18339 9.16667 3.35006V0.0167236L15 5.85006L9.16667 11.6834V8.26672C8.89167 8.26672 8.61667 8.27506 8.33333 8.28339Z" fill="#ffffff"/>
3301 </svg>
3302 </p>
3303       </div>
3304       <div class="button-wishlist text-center">
3305         <p id="wishButton" class="d-flex gap-2 wishlist-toggle" data-product-handle="blossom-shine"><span>Wishlist</span><svg xmlns="image/logo-login-emo78.png" width="16" height="15" viewBox="0 0 16 15" fill="none">
3306   <path d="M2.03341 7.70827C1.70392 7.38096 1.44286 6.99135 1.26546 6.56213C1.08805 6.13292 0.997838 5.67269 1.00008 5.20827C1.00008 4.26896 1.37322 3.36812 2.03741 2.70393C2.7016 2.03974 3.60244 1.6666 4.54175 1.6666C5.85841 1.6666 7.00841 2.38327 7.61675 3.44993H8.55008C8.85934 2.90748 9.30684 2.45667 9.84699 2.14341C10.3871 1.83015 11.0007 1.66563 11.6251 1.6666C12.5644 1.6666 13.4652 2.03974 14.1294 2.70393C14.7936 3.36812 15.1667 4.26896 15.1667 5.20827C15.1667 6.18327 14.7501 7.08327 14.1334 7.70827L8.08341 13.7499L2.03341 7.70827ZM14.7167 8.29993C15.5084 7.49993 16.0001 6.4166 16.0001 5.20827C16.0001 4.04795 15.5391 2.93515 14.7187 2.11467C13.8982 1.2942 12.7854 0.833267 11.6251 0.833267C10.1667 0.833267 8.87508 1.5416 8.08341 2.6416C7.67933 2.08035 7.14725 1.62353 6.53131 1.30904C5.91537 0.994549 5.23333 0.831448 4.54175 0.833267C3.38143 0.833267 2.26863 1.2942 1.44816 2.11467C0.627684 2.93515 0.166748 4.04795 0.166748 5.20827C0.166748 6.4166 0.658415 7.49993 1.45008 8.29993L8.08341 14.9333L14.7167 8.29993Z" fill="#ffffff"/>
3307 </svg>
3308 <!--
3309   <svg xmlns="image/logo-login-emo78.png" width="34" height="30" viewBox="0 0 34 30" fill="none">
3310   <path d="M32.8333 9.23082C32.8333 4.51916 29.0142 0.699158 24.3025 0.699158C21.2 0.699158 
331018.4933 2.35999 17 4.83582C15.5067 2.36082 12.8 0.699158 9.69749 0.699158C4.98582 0.699991 1.16666 4.51916 1.16666 9.23082C1.16666 10.3075 1.37499 11.3342 1.73916 12.2825C4.55999 20.3967 17 29.3008 17 29.3008C17 29.3008 29.44 20.3967 32.2617 12.2825C32.6258 11.3342 32.8333 10.3075 32.8333 9.23082Z" fill="white" fill-opacity="0.32" stroke="#757575" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/>
3311   </svg>
3312 -->
3313 </p>
3314       </div>
3315     </div>
3316   </div>
3317 </div>
3318 <div class="purchasePopup purchasePopupSpotify" style="display: none;">
3319   <div class="purchaseArea">
3320     <div class="sectionPurchase sectionPurchaseSpotify">
3321       <div class="wrapperPurchase">
3322         <div class="headerPurchase">
3323           <h3>personalize spotify photo print</h3>
3324           <a class="close-purchase-popup">
3325             <svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none">
3326               <path d="M1.53287 17.4107L0.588867 16.4667L8.05553 9.00002L0.588867 1.53336L1.53287 0.589355L8.99953 8.05602L16.4662 0.589355L17.4102 1.53336L9.94353 9.00002L17.4102 16.4667L16.4662 17.4107L8.99953 9.94402L1.53287 17.4107Z" fill="black"></path>
3327             </svg>
3328           </a>
3329         </div>
3330         <div class="contentPurchase">
3331           <div class="spotifyAddons"></div>
3332         </div>
3333 
3334         <div class="purchase-button btn-addon row m-0" style="display: none;">
3335           <div class="col-12 col-lg-2 text-left mb-2 p-0">
3336             <button class="back-purchase-button back-addon text-uppercase">
3337               <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="image/logo-login-emo78.png">
3338                 <path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z" fill="black"></path>
3339               </svg>
3340               <span>Back</span>
3341             </button>
3342           </div>
3343           <div class="col-12 col-lg-10 text-right" style="display: flex;justify-content: end;gap: 20px;">
3344             <button class="btn next-purchase-button next-addon text-uppercase">
3345               <span>continue without add-ons</span>
3346             </button>
3347           </div>
3348         </div>
3349       </div>
3350     </div>
3351   </div>
3352 </div>
3353 
3354 <style>
3355   #PBarNextFrameWrapper {
3356     display: none;
3357   }
3358   #backgroundPopup {
3359     display: none;
3360     position: fixed;
3361     _position: absolute;
3362     height: 100%;
3363     width: 100%;
3364     top: 0;
3365     left: 0;
3366     background: rgb(117 117 117 / 24%);
3367     z-index: 1;
3368   }
3369   .sectionPurchase {
3370     height: 100%;
3371     position: relative;
3372     max-width: 1344px;
3373     background-color: #fff;
3374     padding: 0;
3375     overflow: hidden; /* Changed from auto to hidden */
3376     display: flex;
3377     flex-direction: column;
3378   }
3379   .sectionPurchase.purchaseAddonSpotify {
3380     max-width: 1070px!important;
3381     max-height: 765px!important;
3382   }
3383   .sectionPurchaseBoard {
3384     max-width: 872px!important;
3385     max-height: 821px!important;
3386   }
3387   .purchaseAddonSpotify .btn-action {
3388     position: absolute;
3389     bottom: 0;
3390     left: 0;
3391     width: 100%;
3392     display: flex;
3393     gap: 10px;
3394   }
3395   .wrapperPurchase {
3396     position: relative;
3397     height: 100%;
3398     display: flex;
3399     flex-direction: column;
3400   }
3401   
3402   /* New styles for scrollable content and sticky button */
3403   .purchase-content {
3404     flex: 1;
3405     overflow-y: auto;
3406     overflow-x: hidden;
3407     padding: 20px;
3408   }
3409   
3410   .purchase-button-wrapper {
3411     position: sticky;
3412     bottom: 0;
3413     background-color: #fff;
3414     border-top: 1px solid #e0e0e0;
3415     padding: 15px 0;
3416     margin-top: auto;
3417     z-index: 10;
3418   }
3419   
3420   .purchasePopup {
3421     display: none;
3422     position: fixed;
3423     background: rgb(117 117 117 / 24%);
3424     z-index: 999;
3425     padding: 40px;
3426     font-size: 13px;
3427     top: 0;
3428     left: 0;
3429     width: 100%;
3430     height: 100%;
3431   }
3432   .popupPurchaseClose{
3433     font-size:14px;
3434     line-height:14px;
3435     right:45px;
3436     top:45px;
3437     position:absolute;
3438     color:#6fa5fd;
3439     font-weight:700;
3440     display:block;
3441     cursor: pointer;
3442   }
3443 
3444   .headerPurchase {
3445     margin-bottom: 30px;
3446     display: flex;
3447     justify-content: space-between;
3448   }
3449 
3450   .headerPurchase h3 {
3451     font-size: 16px;
3452     text-transform: uppercase;
3453   }
3454 
3455   .sectionPurchaseBoard .headerPurchase {
3456     margin-bottom: 15px;
3457   }
3458 
3459   .sectionPurchaseBoard .formAddressPurchase {
3460     padding-top: 0;
3461   }
3462 
3463   .purchaseArea {
3464     position: relative;
3465     height: 100%;
3466   }
3467 
3468   .purchaseArea h4 {
3469     width: 100%;
3470     font-size: 12px;
3471     font-weight: 600;
3472     margin-bottom: 10px;
3473     text-transform: uppercase;
3474   }
3475 
3476   .menuPurchase {
3477     margin-bottom: 30px;
3478   }
3479 
3480   .menuPurchase ul {
3481     list-style-type: none;
3482     margin: 0;
3483   }
3484 
3485   .menuPurchase ul li {
3486     display: inline-block;
3487     border: 1px solid #ffffff;
3488     padding: 5px 20px;
3489     margin-right: 5px;
3490     margin-bottom: 10px;
3491     font-size: 12px;
3492     font-weight: 400;
3493   }
3494 
3495   .menuPurchase ul li:hover, .menuPurchase ul li.selected {
3496     background-color: #ffffff;
3497     color: #ffffff;
3498   }
3499 
3500   .contentPurchase h5 {
3501       font-size: 12px;
3502       margin-bottom: 10px;
3503       font-weight: 400;
3504       overflow: hidden;
3505   }
3506 
3507   /* Card */
3508 
3509   #itemCards {
3510     max-height: 430px;
3511     overflow: auto;
3512   }
3513 
3514   .item-cards {
3515       width: 100%;
3516   }
3517   .item-card.selected {
3518       border: 1px solid #ffffff;
3519   }
3520   .item-card:hover {
3521       border: 1px solid #C4C4C4;
3522   }
3523   .item-cards .item-card {
3524     position: relative;
3525     width: calc(33% - 10px);
3526     max-width: calc(33% - 10px);
3527     flex: 0 0 calc(33% - 10px);
3528     margin-bottom: 20px;
3529   }
3530   .item-cards .item-card label,
3531   .item-addons .item-addon label {
3532       position: absolute;
3533       left: 0;
3534       width: 100%;
3535       height: 100%;
3536   }
3537   .item-cards .item-card .card-image img,
3538   .item-addons .item-addon .card-image img {
3539       display: block;
3540       width: 100%;
3541   }
3542   .item-card .card-meta,
3543   .item-addon .card-meta {
3544       padding: 10px 5px 5px;
3545   }
3546   .item-card.selected .card-meta,
3547   .item-addon.selected .card-meta,
3548   .item-card.selected .card-qty {
3549       background-color: #ffffff;
3550       color: #fff;
3551       visibility: visible!important;
3552   }
3553   .item-card:hover .card-meta,
3554   .item-addon:hover .card-meta,
3555   .item-card:hover .card-qty {
3556       background-color: #C4C4C4;
3557       color: #fff;
3558       visibility: visible!important;
3559   }
3560   .item-cards .item-card p,
3561   .item-addons .item-addon p {
3562     font-size: 12px !important;
3563     margin: 0;
3564     font-weight: 600;
3565   }
3566   .item-card .card-meta input,
3567   .item-addon .card-meta input {
3568       display: none;
3569   }
3570   .item-cards .item-card h5,
3571   .item-addons .item-addon h5 {
3572     text-transform: uppercase;
3573     max-height: 35px;
3574   }
3575 
3576   @media (max-width: 768px) {
3577     .item-cards .item-card {
3578         width: calc(50% - 10px);
3579         max-width: calc(50% - 10px);
3580         flex: 0 0 calc(50% - 10px);
3581         margin-bottom: 0;
3582     }
3583   }
3584 
3585   .card-qty {
3586     display: flex;
3587     padding: 5px;
3588     visibility: hidden;
3589     background-color: #fff !important;
3590     z-index: 999;
3591   }
3592   .card-qty a {
3593     border-width: 1px;
3594     width: 30%;
3595     cursor: pointer;
3596     text-align: center;
3597     align-self: center;
3598     height: 28px;
3599     display: block;
3600     position: relative;
3601   }
3602   .card-qty a svg {
3603     position: absolute;
3604     top: 50%;
3605     left: 50%;
3606     transform: translate(-50%, -50%);
3607     text-align: center;
3608   }
3609   input.btn-qty {
3610     border-width: 0px;
3611     border-radius: 0;
3612     background-color: #fff;
3613     -webkit-appearance: none;
3614     box-shadow: none !important;
3615     -webkit-box-shadow: none !important;
3616     -moz-box-shadow: none!important;
3617     width: 40%;
3618     border-left: 1px solid #c4c4c4;
3619     border-right: 1px solid #c4c4c4;
3620     padding: 0;
3621   }
3622 
3623   .sectionPurchaseBoard #itemAddons .item-card {
3624     width: calc(20% - 15px);
3625     max-width: calc(20% - 15px);
3626     flex: 0 0 calc(20% - 15px);
3627   }
3628 
3629   .purchase-button {
3630     width: 100%;
3631     padding: 0; /* Reset padding as it's now handled by wrapper */
3632     margin: 0;
3633   }
3634 
3635   .sectionPurchaseBoard .purchase-button {
3636     margin-top: 0 !important; /* Reset margin */
3637   }
3638 
3639   .back-purchase-button, .back-spotify {
3640       width: 139px;
3641       border: 1px solid;
3642       height: 43px;
3643   }
3644   .purchase-button .btn {
3645     width: 297px;
3646     height: 43px;
3647     background-color: #ffffff;
3648     color: #ffffff;
3649   }
3650   .purchase-button .btn[disabled] {
3651     background-color: #EEEEEE;
3652   }
3653   .back-purchase-button svg, .back-spotify svg {
3654     align-self: center;
3655     vertical-align: middle;
3656     margin-right: 10px;
3657   }
3658 
3659   #purchaseProduct .row .error {
3660     font-size: 12px !important;
3661     color: orange;
3662     margin-top: 5px;
3663   }
3664 
3665   .reviewCardPurchase {
3666     max-width: 448px;
3667     float: right;
3668   }
3669 
3670   .addonsPurchase .addon-item {display: flex;justify-content: space-between;}
3671   .addon-item * {align-self: center;font-size: 12px;}
3672   .addon-itm-title {width: 360px;}
3673   .addon-itm-line-price {color: #757575;width: 80px;justify-content: space-between;display: flex;}
3674 
3675   .propsAddonSpotify p {
3676     margin: 0;
3677     display: flex;
3678     font-size: 12px !important;
3679     margin-bottom: 5px;
3680   }
3681   .propsAddonSpotify p span:first-child {
3682     text-transform: uppercase;
3683     font-weight: 600;
3684     -ms-flex: 0 0 150px;
3685     flex: 0 0 150px;
3686     max-width: 150px;
3687   }
3688 
3689   .addonsPurchase .addons {
3690     max-height: 250px;
3691     overflow: auto;
3692   }
3693 
3694   .btn .loading:after {
3695     content: "";
3696     display: inline-block;
3697     width: 20px;
3698     height: 20px;
3699     padding: 3px;
3700     aspect-ratio: 1;
3701     border-radius: 50%;
3702     background: #FFFFFF;
3703     --_m: conic-gradient(#0000 10%, #ffffff), linear-gradient(#ffffff 0 0) content-box;
3704     -webkit-mask: var(--_m);
3705     mask: var(--_m);
3706     -webkit-mask-composite: source-out;
3707     mask-composite: subtract;
3708     animation: l3 1s infinite linear;
3709     margin: auto;
3710     vertical-align: middle;
3711     margin-left: 10px;
3712   }
3713 
3714   #qrcode img, #qrcode canvas {
3715     width: 50px;
3716     position: absolute;
3717     top: 12px;
3718     left: 16px;
3719   }
3720 
3721   .t-preview {
3722     position: absolute;
3723     top: 17px;
3724     left: 75px;
3725   }
3726   .t-preview p {
3727     margin: 0;
3728     font-size: 12px !important;
3729   }
3730   .t-preview .h3 {
3731     font-size: 16px !important;
3732     margin-bottom: 5px;
3733     font-weight: 600;
3734   }
3735   .scanCard {
3736     width: 100%;
3737     border: 1px solid;
3738     height: 76px;
3739     background-color: #fff;
3740   }
3741   .scanCard > div > img {
3742     position: absolute;
3743     right: 0;
3744     width: 55px;
3745   }
3746 
3747   @keyframes l3 {
3748     100% {
3749       transform: rotate(1turn);
3750     }
3751   }
3752 
3753   @media (min-width: 991px) {
3754     .sectionPurchase {
3755       height: 100%;
3756       position: relative;
3757       max-width: 1344px;
3758       background-color: #fff;
3759       top: 50%;
3760       left: 50%;
3761       transform: translate(-50%, -50%);
3762     }
3763     .headerPurchase h3 {
3764       font-size: 20px;
3765     }
3766     .purchaseArea h4 {
3767       font-size: 16px;
3768     }
3769 
3770     .menuPurchase ul li {
3771         font-size: 16px;
3772     }
3773     
3774     .contentPurchase {
3775       margin-bottom: 30px;
3776     }
3777     .contentPurchase h5 {
3778       font-size: 16px;
3779     }
3780 
3781     .item-cards .item-card p,
3782     .item-addons .item-addon p {
3783       font-size: 16px !important;
3784     }
3785 
3786     .cards {
3787       float: right;
3788       width: 400px;
3789     }
3790 
3791     .item-cards .item-card {
3792       width: calc(25% - 30px);
3793       max-width: calc(25% - 30px);
3794       flex: 0 0 calc(25% - 30px);
3795     }
3796 
3797       #itemAddons .item-card {
3798         position: relative;
3799         width: calc(16% - 40px);
3800         max-width: calc(16% - 40px);
3801         flex: 0 0 calc(16% - 40px);
3802       }
3803       
3804     .purchase-button-wrapper {
3805         padding: 10px 20px;
3806     }
3807   }
3808 
3809   @media (max-width: 1200px) {
3810     .item-cards .item-card {
3811       width: calc(33% - 30px);
3812       max-width: calc(33% - 30px);
3813       flex: 0 0 calc(33% - 30px);
3814     }
3815   }
3816 
3817   @media (max-width: 992px) {
3818     .purchasePopup {
3819       padding: 0;
3820     }
3821     .item-cards .item-card h5,
3822     .item-addons .item-addon h5 {
3823       max-height: 30px;
3824     }
3825 
3826     .back-purchase-button, .back-spotify, .next-purchase-button {
3827         width: 100%;
3828     }
3829     .addon-itm-title {
3830       width: 300px;
3831     }
3832     .addon-itm-line-price {
3833       margin-right: 10px;
3834     }
3835     .t-preview {
3836       top: 10px;
3837     }
3838 
3839     .card-qty a {
3840       height: 15px;
3841     }
3842     
3843     .purchase-button-wrapper {
3844       padding: 15px;
3845     }
3846   }
3847 
3848   @media (max-width: 576px) {
3849     .purchase-button .btn {
3850         width: 100%!important;
3851     }
3852     .purchase-button > .col-12 {
3853       padding-left: 0;
3854       padding-right: 0;
3855     }
3856   }
3857 </style>
3858 
3859 
3860 <div class="purchasePopup">
3861   <div class="purchaseArea">
3862     
3863       <div class="sectionPurchase purchasePersonalize sectionPurchaseBoard">
3864         <div class="wrapperPurchase">
3865           <div class="purchase-content">
3866             <div class="headerPurchase">
3867   <h3 class="text-uppercase">
3868     
3869       customize your flower board
3870     
3871   </h3>
3872   <a class="close-purchase-popup">
3873   <svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none">
3874     <path d="M1.53287 17.4107L0.588867 16.4667L8.05553 9.00002L0.588867 1.53336L1.53287 0.589355L8.99953 8.05602L16.4662 0.589355L17.4102 1.53336L9.94353 9.00002L17.4102 16.4667L16.4662 17.4107L8.99953 9.94402L1.53287 17.4107Z" fill="black"/>
3875   </svg>
3876 </a>
3877 
3878 </div>
3879 <div class="contentPurchase">
3880   <div class="row">
3881     
3882       <div class="col-12">
3883         
3884 
3885 <style>
3886   
3887   
3888   .customize-papan .group-field-1 .input-field {float: left;width: 100%;height: 317px;background-color: #E5E5EA;}
3889   .customize-papan .input-field textarea {width: 100%;max-width: 421px;min-height: 150px;font-weight: 400;font-size: 16px;resize: none;background-color: #E5E5EA;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;color: #ffffff;border: none;}
3890   
3891   .customize-papan .field-papan.group-field-2 .input-field.field-logo {height: 90px;margin: 0;border-radius: 0;position: relative;-ms-flex: 0 0 174px;flex: 0 0 174px;max-width: 174px;}
3892   .customize-papan .btn-upload-papan svg {width: 21px;height: 25px;display: block;align-self: center;margin: auto;margin-bottom: 12px;}
3893   .svgLogoPapan {position: absolute;width: 100%;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;}
3894   .svgLogoPapan p {color: #8E8E93; margin: 0;}
3895   .svgLogoPapan p span {font-size: 12px;color: #FF0E00;}
3896   .customize-papan .btn-upload-papan img {margin: auto;display: block;position: absolute;width: 80px;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;}
3897   #suggest-messages {position: absolute;bottom: 5px;left: 5px;}
3898   #suggest-messages a {border: 1px solid #979797;background: #fff;color: #979797;border-radius: 3px;padding: 5px 10px;font-size: 10px;font-weight: 600;display: inline-block;}
3899   .case-occasion .nice-select:after {border-bottom: 2px solid #333;border-right: 2px solid #333;right: 20px;top: 42%;width: 10px;height: 10px;}
3900   .customize-papan .input-field input {font-weight: 600;font-size: 16px;width: 100%;height: 90px;min-height: 44px !important;border: none;background: #E5E5EA;margin: 0;border-radius: 0;text-align: center;color: #ffffff;}
3901   .customize-papan .input-field .limit {position: absolute;right: 15px;top: 0;color: #757575;}
3902 
3903   @media (min-width: 991px) {
3904     .customize-papan:before {content: "";position: absolute;border: 4px solid #ffffff;bottom: -50px;left: 210px;width: 100px;display: block;-ms-transform: rotate(60deg);-webkit-transform: rotate(60deg);transform: rotate(-65deg);}
3905     .customize-papan:after {content: "";position: absolute;border: 4px solid #ffffff;bottom: -52px;right: 240px;width: 100px;display: block;-ms-transform: rotate(-120deg);-webkit-transform: rotate(70deg);transform: rotate(70deg);}
3906   }
3907 </style>
3908 
3909 <input type="hidden" data-properties="penerima" value="-">
3910 <div class="customize-papan">
3911   <div class="container">
3912     <div class="field-papan group-field-1 form-group">
3913       <div class="input-field">
3914         <textarea id="kartu-ucapan-papan" class="mb-0  has-limit" type="text" data-properties="ucapan" placeholder="Write the message you want to display. Or you can use several options from the message templates that we provide.
3915 (Ex: Selamat Menempuh Hidup Baru A & B)." maxlength="100"></textarea>
3916         <p class="limit">0/100</p>
3917         <div id="suggest-messages">
3918           <a id="show_note_papan1" href="#">
3919             <div class="suggest-message" id="note_btn_div1">
3920               <span class="promo-code-link" id="note_btn_papan1">Contoh Kata WEDDING</span>
3921             </div>
3922           </a>
3923           <a id="show_note_papan2" href="#">
3924             <div class="suggest-message" id="note_btn_div2">
3925               <span class="promo-code-link" id="note_btn_papan2">Contoh Kata SELAMAT</span>
3926             </div>
3927           </a>
3928           <a id="show_note_papan3" href="#">
3929             <div class="suggest-message" id="note_btn_div3">
3930               <span class="promo-code-link" id="note_btn_papan3">Contoh Kata DUKA CITA</span>
3931             </div>
3932           </a>
3933         </div>
3934       </div>
3935     </div>
3936     <div class="hide">
3937       <input type="hidden" value="" id="note_id_papan1" name="note_id_papan1" style="top: 0px;">
3938       <input type="hidden" value="" id="note_btn_id_papan1" name="note_btn_id_papan1">
3939     </div>
3940     <div class="hide">
3941       <input type="hidden" value="" id="note_id_papan2" name="note_id_papan2" style="top: 0px;">
3942       <input type="hidden" value="" id="note_btn_id_papan2" name="note_btn_id_papan2">
3943     </div>
3944     <div class="hide">
3945       <input type="hidden" value="" id="note_id_papan3" name="note_id_papan3" style="top: 0px;">
3946       <input type="hidden" value="" id="note_btn_id_papan3" name="note_btn_id_papan3">
3947     </div>
3948     <div class="field-papan group-field-2 form-group">
3949       
3950       <label for="logoPapan" onclick="" class="input-field field-logo">
3951         
3952         
3953         
3954         <div class="btn-upload-papan w-100">
3955           <?xml version="1.0" encoding="UTF-8"?>
3956           <img src="" style="display:none">
3957           <div class="svgLogoPapan">
3958             <svg xmlns="image/logo-login-emo78.png" width="22" height="26" viewBox="0 0 22 26" fill="none">
3959               <path d="M6.5 20H15.5V11H21.5L11 0.5L0.5 11H6.5V20ZM0.5 23H21.5V26H0.5V23Z" fill="black"/>
3960             </svg>
3961             <p>Upload Logo <span>*optional</span></p>
3962           </div>
3963         </div>
3964         
3965       </label>
3966       
3967       <input
3968         type="hidden"
3969         data-properties="papan-logo"
3970         value=""
3971       >
3972       <input
3973         type="file"
3974         id="logoPapan"
3975         accept="image/*"
3976         style="position: absolute;width: 1px;height: 1px;padding: 0"
3977       >
3978       
3979       <div class="input-field">
3980         <input class="has-limit sender-name" type="text" placeholder="Nama Pengirim" data-properties="pengirim" maxlength="35"/>
3981         <p class="limit">0/35</p>
3982       </div>
3983       
3984     </div>
3985     
3986   </div>
3987 </div>
3988       </div>
3989     
3990   </div>
3991 </div>
3992 
3993           </div>
3994           <div class="purchase-button-wrapper">
3995             <div class="purchase-button btn-card row m-0">
3996   <div class="col-12 col-lg-2 text-left mb-2 p-0">
3997     
3998   </div>
3999   <div class="btn-next-card col-12 col-lg-10 text-right">
4000     
4001     
4002     <button
4003       
4004         
4005       
4006       class="btn next-purchase-button text-uppercase"
4007       
4008         disabled
4009       
4010     >
4011       <span>save your flower board</span>
4012     </button>
4013   </div>
4014 </div>
4015 
4016           </div>
4017         </div>
4018       </div>
4019     
4020     
4021     
4022       <div
4023         class="sectionPurchase sectionPurchaseBoard hide"
4024         data-section="address"
4025       >
4026         <div class="wrapperPurchase">
4027           <div class="purchase-content">
4028             <div class="headerPurchase">
4029   <h3>
4030     Complete Your Order
4031   </h3>
4032   <a class="close-purchase-popup">
4033   <svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none">
4034     <path d="M1.53287 17.4107L0.588867 16.4667L8.05553 9.00002L0.588867 1.53336L1.53287 0.589355L8.99953 8.05602L16.4662 0.589355L17.4102 1.53336L9.94353 9.00002L17.4102 16.4667L16.4662 17.4107L8.99953 9.94402L1.53287 17.4107Z" fill="black"/>
4035   </svg>
4036 </a>
4037 
4038 </div>
4039 <div class="contentPurchase">
4040   <div class="row">
4041     <div class="col-12 position-relative">
4042       <div class="addressPurchase">
4043         
4044           <h4 class="text-uppercase">recipient delivery address</h4>
4045           <p>Share the delivery address to send your heartfelt blooms straight to their door.</p>
4046         
4047         <div class="formAddressPurchase row">
4048           <div class="col-12">
4049             <form>
4050               <div class="form-group row mb-2 mb-lg-4">
4051                 <div class="col-6 position-relative">
4052                   <input id="first_name" type="text" class="form-control input__field" placeholder="" required>
4053                   <label for="first_name" class="input__label">First Name<span>*</span></label>
4054                 </div>
4055                 <div class="col-6 position-relative">
4056                   <input id="last_name" type="text" class="form-control input__field" placeholder="" required>
4057                   <label for="last_name" class="input__label">Last Name<span>*</span></label>
4058                 </div>
4059                 <input type="hidden" data-properties="nama-penerima">
4060               </div>
4061               
4062                 <h4 class="text-uppercase">how you want to input your address</h4>
4063                 <div class="form-group row mb-2 mb-lg-4 form-address-upload">
4064                   <div class="col-6 position-relative">
4065                     <label class="address-manualy">
4066                       <svg xmlns="image/logo-login-emo78.png" width="18" height="17" viewBox="0 0 18 17" fill="none">
4067   <path d="M3.37484 1.83329C2.79984 1.83329 2.33317 2.29996 2.33317 2.87496V5.16663C2.33317 5.38764 2.24537 5.5996 2.08909 5.75588C1.93281 5.91216 1.72085 5.99996 1.49984 5.99996C1.27882 5.99996 1.06686 5.9
40671216 0.910582 5.75588C0.754301 5.5996 0.666504 5.38764 0.666504 5.16663V2.87496C0.666504 2.15666 0.951845 1.46779 1.45976 0.959878C1.96767 0.451967 2.65654 0.166626 3.37484 0.166626H5.6665C5.88752 0.166626 6.09948 0.254423 6.25576 0.410704C6.41204 0.566984 6.49984 0.778946 6.49984 0.999959C6.49984 1.22097 6.41204 1.43293 6.25576 1.58921C6.09948 1.7455 5.88752 1.83329 5.6665 1.83329H3.37484ZM3.37484 15.1666C2.79984 15.1666 2.33317 14.7 2.33317 14.125V11.8333C2.33317 11.6123 2.24537 11.4003 2.08909 11.244C1.93281 11.0878 1.72085 11 1.49984 11C1.27882 11 1.06686 11.0878 0.910582 11.244C0.754301 11.4003 0.666504 11.6123 0.666504 11.8333V14.125C0.666504 14.4806 0.736557 14.8328 0.872663 15.1614C1.00877 15.49 1.20826 15.7885 1.45976 16.04C1.71125 16.2915 2.00981 16.491 2.3384 16.6271C2.66699 16.7632 3.01917 16.8333 3.37484 16.8333H5.6665C5.88752 16.8333 6.09948 16.7455 6.25576 16.5892C6.41204 16.4329 6.49984 16.221 6.49984 16C6.49984 15.7789 6.41204 15.567 6.25576 15.4107C6.09948 15.2544 5.88752 15.1666 5.6665 15.1666H3.37484ZM15.6665 2.87496C15.6665 2.29996 15.1998 1.83329 14.6248 1.83329H12.3332C12.1122 1.83329 11.9002 1.7455 11.7439 1.58921C11.5876 1.43293 11.4998 1.22097 11.4998 0.999959C11.4998 0.778946 11.5876 0.566984 11.7439 0.410704C11.9002 0.254423 12.1122 0.166626 12.3332 0.166626H14.6248C14.9805 0.166626 15.3327 0.236679 15.6613 0.372786C15.9899 0.508892 16.2884 0.708386 16.5399 0.959878C16.7914 1.21137 16.9909 1.50994 17.127 1.83853C17.2631 2.16712 17.3332 2.5193 17.3332 2.87496V5.16663C17.3332 5.38764 17.2454 5.5996 17.0891 5.75588C16.9328 5.91216 16.7208 5.99996 16.4998 5.99996C16.2788 5.99996 16.0669 5.91216 15.9106 5.75588C15.7543 5.5996 15.6665 5.38764 15.6665 5.16663V2.87496ZM14.6248 15.1666C15.1998 15.1666 15.6665 14.7 15.6665 14.125V11.8333C15.666
40675 11.6123 15.7543 11.4003 15.9106 11.244C16.0669 11.0878 16.2788 11 16.4998 11C16.7208 11 16.9328 11.0878 17.0891 11.244C17.2454 11.4003 17.3332 11.6123 17.3332 11.8333V14.125C17.3332 14.4806 17.2631 14.8328 17.127 15.1614C16.9909 15.49 16.7914 15.7885 16.5399 16.04C16.2884 16.2915 15.9899 16.491 15.6613 16.6271C15.3327 16.7632 14.9805 16.8333 14.6248 16.8333H12.3332C12.1122 16.8333 11.9002 16.7455 11.7439 16.5892C11.5876 16.4329 11.4998 16.221 11.4998 16C11.4998 15.7789 11.5876 15.567 11.7439 15.4107C11.9002 15.2544 12.1122 15.1666 12.3332 15.1666H14.6248ZM4.62484 5.16663C4.62484 4.94561 4.71263 4.73365 4.86892 4.57737C5.0252 4.42109 5.23716 4.33329 5.45817 4.33329H12.5415C12.7625 4.33329 12.9745 4.42109 13.1308 4.57737C13.287 4.73365 13.3748 4.94561 13.3748 5.16663V6.41663C13.3748 6.63764 13.287 6.8496 13.1308 7.00588C12.9745 7.16216 12.7625 7.24996 12.5415 7.24996C12.3205 7.24996 12.1085 7.16216 11.9522 7.00588C11.796 6.8496 11.7082 6.63764 11.7082 6.41663V5.99996H9.83317V11H10.8748C11.0959 11 11.3078 11.0878 11.4641 11.244C11.6204 11.4003 11.7082 11.6123 11.7082 11.8333C11.7082 12.0543 11.6204 12.2663 11.4641 12.4225C11.3078 12.5788 11.0959 12.6666 10.8748 12.6666H7.12484C6.90382 12.6666 6.69186 12.5788 6.53558 12.4225C6.3793 12.2663 6.2915 12.0543 6.2915 11.8333C6.2915 11.6123 6.3793 11.4003 6.53558 11.244C6.69186 11.0878 6.90382 11 7.12484 11H8.1665V5.99996H6.2915V6.41663C6.2915 6.63764 6.20371 6.8496 6.04743 7.00588C5.89115 7.16216 5.67918 7.24996 5.45817 7.24996C5.23716 7.24996 5.0252 7.16216 4.86892 7.00588C4.71263 6.8496 4.62484 6.63764 4.62484 6.41663V5.16663Z" fill="black"/>
4068 </svg>
4069 <span>Input Address Manually</span>
4070                     </label>
4071                   </div>
4072                   <div class="col-6 position-relative">
4073                     <label for="address-upload" class="address-upload">
4074                       <svg xmlns="image/logo-login-emo78.png" width="12" height="13" viewBox="0 0 12 13" fill="none">
4075   <path d="M5.58317 9.48079V2.27246L3.6415 4.21413L3.0515 3.61579L5.99984 0.666626L8.949 3.61579L8.359 4.21496L6.4165 2.27246V9.48079H5.58317ZM1.51317 12.3333C1.12928 12.3333 0.809004 12.205 0.552337 11.9483C0.29567 11.6916 0.167059 11.3711 0.166504 10.9866V8.96746H0.999837V10.9866C0.999837 11.115 1.05317 11.2327 1.15984 11.34C1.2665 11.4472 1.384 11.5005 1.51234 11.5H10.4873C10.6151 11.5 10.7326 11.4466 10.8398 11.34C10.9471 11.2333 11.0004 11.1155 10.9998 10.9866V8.96746H11.8332V10.9866C11.8332 11.3705 11.7048 11.6908 11.4482 11.9475C11.1915 12.2041 10.8709 12.3327 10.4865 12.3333H1.51317Z" fill="black"/>
4076 </svg>
4077 <span>Upload Address Picture</span>
4078                     </label>
4079                     <input
4080                       id="address-upload"
4081                       type="file"
4082                       accept="image/png, image/jpeg"
4083                       style="position: absolute; padding: 0;width: 1px;height: 1px"
4084                     >
4085                     <input type="hidden" class="props-address-upload" data-properties="foto-alamat">
4086                   </div>
4087                 </div>
4088                 <img width="150" height="" src="" class="photo-address" style="display: none;">
4089               
4090               <div class="form-group row position-relative mb-2 mb-lg-4 form-address">
4091                 <div class="col-12">
4092                   <textarea
4093                     id="delivery_address"
4094                     data-properties="alamat-penerima"
4095                     class="form-control input__field col-12"
4096                     placeholder=""
4097                     required
4098                   ></textarea>
4099                   <label for="delivery_address" class="input__label">Delivery Address<span>*</span></label>
4100                   
4101                 </div>
4102               </div>
4103               <div class="form-group row mb-2 mb-lg-4 form-address">
4104                 <div class="col-6 position-relative">
4105                   <input
4106                     id="recipient_number"
4107                     type="text"
4108                     data-properties="telepon-penerima"
4109                     class="form-control input__field"
4110                     placeholder=""
4111                     required
4112                   >
4113                   <label for="recipient_number" class="input__label">Recipient number<span>*</span></label>
4114                 </div>
4115                 <div class="col-6 position-relative">
4116                   <input
4117                     id="company"
4118                     type="text"
4119                     data-properties="company"
4120                     class="form-control input__field"
4121                     placeholder=""
4122                   >
4123                   <label for="company" class="input__label">Company (Optional)</label>
4124                 </div>
4125               </div>
4126               <div class="form-group row mb-2 mb-lg-4 form-address">
4127                 <div class="col-6 position-relative">
4128                   <input
4129                     id="province"
4130                     type="text"
4131                     class="form-control input__field"
4132                     placeholder=""
4133                     value="Jakarta"
4134                     data-properties="province"
4135                   >
4136                   <label for="province" class="input__label">Province</label>
4137                 </div>
4138                 <div class="col-6 position-relative">
4139                   <select id="zip" class="form-control select-search" required></select>
4140                 </div>
4141               </div>
4142             </form>
4143           </div>
4144         </div>
4145       </div>
4146       <div class="addonsPurchase">
4147         <h4 class="text-uppercase">add-ons</h4>
4148         <div class="addons">
4149           <p>No Add-Ons</p>
4150           <!--
4151             <button class="add-addon">
4152               <svg xmlns="image/logo-login-emo78.png" width="12" height="12" viewBox="0 0 12 12" fill="none">
4153                 <path d="M5.5 6.5H0V5.5H5.5V0H6.5V5.5H12V6.5H6.5V12H5.5V6.5Z" fill="black"/>
4154               </svg>
4155               <span>Enhance my moment with Add-ons</span>
4156             </button>
4157           -->
4158         </div>
4159       </div>
4160     </div>
4161     
4162   </div>
4163 </div>
4164 
4165 
4165<script>
4166 document.addEventListener('DOMContentLoaded', function() {
4167   // Detect emo78
4168   var isemo78 = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
4169   
4170   if (isemo78) {
4171     document.querySelector('.formAddressPurchase').classList.add('emo78');
4172     
4173     // emo78 specific fixes
4174     var inputs = document.querySelectorAll('.formAddressPurchase .input__field');
4175     
4176     inputs.forEach(function(input) {
4177       // Force enable touch events on emo78
4178       input.style.webkitUserSelect = 'text';
4179       input.style.webkitTouchCallout = 'default';
4180       input.style.pointerEvents = 'auto';
4181       input.style.touchAction = 'manipulation';
4182       
4183       // Add explicit touch event listeners for emo78
4184       input.addEventListener('touchstart', function(e) {
4185         e.stopPropagation();
4186         this.focus();
4187       }, { passive: false });
4188       
4189       input.addEventListener('touchend', function(e) {
4190         e.preventDefault();
4191         e.stopPropagation();
4192         this.focus();
4193         this.click();
4194       }, { passive: false });
4195       
4196       // Force focus on tap for emo78
4197       input.addEventListener('click', function(e) {
4198         e.stopPropagation();
4199         if (document.activeElement !== this) {
4200           this.focus();
4201         }
4202       });
4203     });
4204     
4205     // Fix for label overlapping on emo78
4206     var labels = document.querySelectorAll('.formAddressPurchase .input__label');
4207     labels.forEach(function(label) {
4208       label.style.pointerEvents = 'none';
4209       label.addEventListener('touchstart', function(e) {
4210         e.preventDefault();
4211         var input = this.parentNode.querySelector('.input__field');
4212         if (input) {
4213           input.focus();
4214         }
4215       });
4216     });
4217   }
4218   
4219   // Handle input state for all browsers, especially emo78
4220   var inputs = document.querySelectorAll('.input__field');
4221   
4222   inputs.forEach(function(input) {
4223     // Handle input events
4224     input.addEventListener('input', function() {
4225       if (this.value.trim() !== '') {
4226         this.classList.add('has-value');
4227       } else {
4228         this.classList.remove('has-value');
4229       }
4230     });
4231     
4232     // Handle focus
4233     input.addEventListener('focus', function() {
4234       this.classList.add('focused');
4235       // emo78 specific: ensure input is visible
4236       if (isemo78) {
4237         setTimeout(function() {
4238           input.scrollIntoView({ behavior: 'smooth', block: 'center' });
4239         }, 300);
4240       }
4241     });
4242     
4243     // Handle blur
4244     input.addEventListener('blur', function() {
4245       this.classList.remove('focused');
4246       if (this.value.trim() !== '') {
4247         this.classList.add('has-value');
4248       } else {
4249         this.classList.remove('has-value');
4250       }
4251     });
4252     
4253     // Initial check for pre-filled values
4254     if (input.value.trim() !== '') {
4255       input.classList.add('has-value');
4256     }
4257   });
4258   
4259   // Additional emo78 fixes
4260   if (isemo78) {
4261     // Prevent emo78 Safari from adding default styling
4262     document.addEventListener('touchstart', function() {}, { passive: true });
4263     
4264     // Fix viewport issues on emo78
4265     var viewport = document.querySelector('meta[name=viewport]');
4266     if (viewport) {
4267       viewport.setAttribute('content', 
4268         'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no'
4269       );
4270     }
4271   }
4272 });
4273 </script>
4273
4274           </div>
4275           <div class="purchase-button-wrapper">
4276             <div class="purchase-button btn-address row m-0">
4277   <div class="col-12 col-lg-2 text-left mb-2 p-0">
4278     
4279       <button class="back-purchase-button back-address text-uppercase">
4280         <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="image/logo-login-emo78.png">
4281           <path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z" fill="black"/>
4282         </svg>
4283         <span>Back</span>
4284       </button>
4285     
4286   </div>
4287   <div class="btn-next-card col-12 col-lg-10 text-right">
4288     
4289       <!--
4290         <button class="back-purchase-button back-address text-uppercase mr-lg-2 mb-2 mb-lg-0">
4291           <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="image/logo-login-emo78.png">
4292             <path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z" fill="black"/>
4293           </svg>
4294           <span>Back</span>
4295         </button>
4296       -->
4297     
4298     
4299     <button
4300       
4301         id="addtocart-card"
4302       
4303       class="btn  next-address text-uppercase"
4304       
4305     >
4306       <span>add to cart</span>
4307     </button>
4308   </div>
4309 </div>
4310 
4311           </div>
4312         </div>
4313       </div>
4314     
4315   </div>
4316 </div>
4317 <div id="backgroundPopup"></div>
4318 
4319 
4320 
4321 <input
4322   data-index="1"
4323   type="hidden"
4324   id="properties-delivery-date"
4325   name="properties[Delivery Date]"
4326   value="-"
4327 >
4328 <input
4329   data-index="2"
4330   type="hidden"
4331   id="properties-delivery-time"
4332   name="properties[Delivery Time]"
4333   value="-"
4334 >
4335 <input
4336   data-index="4"
4337   type="hidden"
4338   id="properties-nama-penerima"
4339   name="properties[Nama Penerima]"
4340   value="-"
4341 >
4342 <input
4343   data-index="5"
4344   type="hidden"
4345   id="properties-alamat-penerima"
4346   name="properties[Alamat Penerima]"
4347   value="-"
4348 >
4349 <input
4350   data-index="6"
4351   type="hidden"
4352   id="properties-kodepos"
4353   name="properties[Kodepos]"
4354   value="-"
4355 >
4356 <input data-index="7" type="hidden" id="properties-telepon-penerima" name="properties[Telepon Penerima]">
4357 
4358   
4359     <input
4360       data-index="8"
4361       type="hidden"
4362       id="properties-kartu-nama-penerima"
4363       name="properties[Kartu Nama Penerima]"
4364       value="-"
4365     >
4366   
4367   <textarea
4368     data-index="9"
4369     type="hidden"
4370     id="properties-kartu-pesan"
4371     name="properties[Kartu Pesan]"
4372     style="display: none"
4373   >-</textarea>
4374 
4375 
4376 
4377   <input
4378     data-index="10"
4379     type="hidden"
4380     id="properties-kartu-nama-pengirim"
4381     name="properties[Kartu Nama Pengirim]"
4382     value="-"
4383   >
4384
4385 <!-- Additional Shipping -->
4386 <input type="hidden" id="properties-kota-pengiriman-province" name="properties[Province]">
4387 <input
4388   type="hidden"
4389   id="properties-kota-pengiriman-country"
4390   name="properties[Country]"
4391   value="Indonesia"
4392 >
4393 <input type="hidden" id="properties-shipping" name="properties[Shipping]">
4394 
4395 <input type="hidden" id="properties-time" name="properties[Time]">
4396 <input type="hidden" id="properties-card" name="properties[Card]">
4397 <input type="hidden" id="properties-addons" name="properties[Addons]">
4398 
4399 <input
4400   type="hidden"
4401   id="properties-company"
4402   name="properties[Company]"
4403   value=""
4404 >
4405 
4405<script>
4406   
4407   $(document).ready(function(){
4408     
4409     var text_max_papan1=150;
4410     var msg_text_papan1="";
4411     $('#kartu-ucapan-ucapan').keyup(function(){
4412       var text_length_papan1=$('#kartu-ucapan-ucapan').val().length;
4413       var msg_text_papan1=$('#kartu-ucapan-ucapan').val();
4414     });
4415 
4416     var notes_papan1 = [
4417       
4418       [0,"Happy Wedding (nama & nama)."],[1,"Congratulations lovebirds (nama & nama)."],[2,"Selamat berbahagia (nama & nama)."],[3,"Selamat menempuh hidup baru (nama & nama)."]
4419       
4420     ];
4421     $('#show_note_papan1').click(function(event){
4422       event.preventDefault();
4423       var idx_papan1=parseInt($('#note_id_papan1').val());
4424       if(isNaN(idx_papan1)){
4425         idx_papan1=0;
4426       }else{
4427         idx_papan1++;
4428         idx_papan1=idx_papan1%notes_papan1.length;
4429       }
4430       var note_papan1=notes_papan1[idx_papan1][1];
4431       $('#note_id_papan1').val(idx_papan1);
4432       $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan1);
4433       $('#msgDelivery').val(note_papan1);
4434 
4435       var text_length_papan1=$('#kartu-ucapan-papan').val().length;
4436       var idx_2_papan1=parseInt($('#note_btn_id_papan1').val());
4437       if(isNaN(idx_2_papan1)){
4438         idx_2_papan1=0;
4439       }else{
4440         idx_2_papan1++;
4441         //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
4442       }
4443       $('#note_btn_id_papan1').val(idx_2_papan1);
4444       //var note_btn=note_btn_text[idx_2][1];
4445       //$('#note_btn').text(note_btn);
4446     });
4447 
4448     var text_max_papan2=150;
4449     var msg_text_papan2="";
4450     $('#kartu-ucapan-ucapan').keyup(function(){
4451       var text_length_papan2=$('#kartu-ucapan-ucapan').val().length;
4452       var msg_text_papan2=$('#kartu-ucapan-ucapan').val();
4453     });
4454 
4455     var notes_papan2 = [
4456       
4457       [0,"Congratulations (ucapan)."], [1,"Selamat dan sukses atas dibukanya (ucapan personal)."],[2,"Congratulations for the grand opening of (nama toko/bisnis)."],[3,"Happy Graduation (nama)."]
4458       
4459     ];
4460     $('#show_note_papan2').click(function(event){
4461       event.preventDefault();
4462       var idx_papan2=parseInt($('#note_id_papan2').val());
4463       if(isNaN(idx_papan2)){
4464         idx_papan2=0;
4465       }else{
4466         idx_papan2++;
4467         idx_papan2=idx_papan2%notes_papan2.length;
4468       }
4469       var note_papan2=notes_papan2[idx_papan2][1];
4470       $('#note_id_papan2').val(idx_papan2);
4471       $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan2);
4472       $('#msgDelivery').val(note_papan2);
4473       var text_length_papan2=$('#kartu-ucapan-papan').val().length;
4474       var idx_2_papan2=parseInt($('#note_btn_id_papan2').val());
4475       if(isNaN(idx_2_papan2)){
4476         idx_2_papan2=0;
4477       }else{
4478         idx_2_papan2++;
4479         //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
4480       }
4481       $('#note_btn_id_papan2').val(idx_2_papan2);
4482       //var note_btn=note_btn_text[idx_2][1];
4483       //$('#note_btn').text(note_btn);
4484     });
4485 
4486     var text_max_papan3=150;
4487     var msg_text_papan3="";
4488     $('#kartu-ucapan-ucapan').keyup(function(){
4489       var text_length_papan3=$('#kartu-ucapan-ucapan').val().length;
4490       var msg_text_papan3=$('#kartu-ucapan-ucapan').val();
4491     });
4492 
4493     var notes_papan3 = [
4494       
4495       [0,"Turut Berduka Cita atas meninggalnya almarhum / almarhumah (Nama)."], [1,"Our Deepest Condolences for the lost of your beloved Father/ Mother/ Husband/ Wife/ Children."], [2,"Our Deepest Sympathy for the lost of your beloved Father/ Mother/ Husband/ Wife/ Children."], [3,"Innalillahi wa innailaihi rojiun, Turut berduka cita atas meninggalnya (nama)."]
4496       
4497     ];
4498     $('#show_note_papan3').click(function(event){
4499       event.preventDefault();
4500       var idx_papan3=parseInt($('#note_id_papan3').val());
4501       if(isNaN(idx_papan3)){
4502         idx_papan3=0;
4503       }else{
4504         idx_papan3++;
4505         idx_papan3=idx_papan3%notes_papan3.length;
4506       }
4507       var note_papan3=notes_papan3[idx_papan3][1];
4508       $('#note_id_papan3').val(idx_papan3);
4509       $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan3);
4510       $('#msgDelivery').val(note_papan3);
4511       var text_length_papan3=$('#kartu-ucapan-papan').val().length;
4512       var idx_2_papan3=parseInt($('#note_btn_id_papan3').val());
4513       if(isNaN(idx_2_papan3)){
4514         idx_2_papan3=0;
4515       }else{
4516         idx_2_papan3++;
4517         //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
4518       }
4519       $('#note_btn_id_papan3').val(idx_2_papan3);
4520       //var note_btn=note_btn_text[idx_2][1];
4521       //$('#note_btn').text(note_btn);
4522     });
4523 
4524     var text_max_papan4=150;
4525     var msg_text_papan4="";
4526     $('#kartu-ucapan-ucapan').keyup(function(){
4527       var text_length_papan4=$('#kartu-ucapan-ucapan').val().length;
4528       var msg_text_papan4=$('#kartu-ucapan-ucapan').val();
4529     });
4530 
4531     $('#show_note_papan4').click(function(event){
4532       var notes_papan4 = [
4533         [0,"Here’s to you—steadier, stronger and better every day."],
4534         [1,"Warmest wishes for a speedy recovery!"],
4535         [2,"Dengan ucapan terhangat, semoga lekas membaik dan semakin pulih setiap harinya ya."],
4536         [3,"Semoga lekas sembuh untuk kembali beraktivitas dan berkarya."]
4537       ];
4538       event.preventDefault();
4539       var idx_papan4=parseInt($('#note_id_papan4').val());
4540       console.log(idx_papan4, 'idx_papan4')
4541       if(isNaN(idx_papan4)){
4542         idx_papan4=0;
4543       }else{
4544         idx_papan4++;
4545         idx_papan4=idx_papan4%notes_papan4.length;
4546       }
4547       var note_papan4=notes_papan4[idx_papan4][1];
4548       $('#note_id_papan4').val(idx_papan4);
4549       $('#kartu-ucapan-papan, #properties-kartu-ucapan, #properties-kartu-pesan').val(note_papan4);
4550       console.log(note_papan4, 'note_papan4')
4551       var text_length_papan4=$('#kartu-ucapan-papan').val().length;
4552       var idx_2_papan4=parseInt($('#note_btn_id_papan4').val());
4553       if(isNaN(idx_2_papan4)){
4554         idx_2_papan4=0;
4555       }else{
4556         idx_2_papan4++;
4557         //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length;
4558       }
4559       $('#note_btn_id_papan4').val(idx_2_papan4);
4560     });
4561 
4562     /*
4563     $("#jenisPapan").change(function(){
4564       $( "select option:selected").each(function(){
4565         if($(this).attr("value")=="Happy Wedding"){
4566           $("#suggest-messages a").hide();
4567           $("#show_note_papan1").show();
4568           $("#kartu-ucapan-papan").val("");
4569         }
4570         if($(this).attr("value")=="Congratulations"){
4571           $("#suggest-messages a").hide();
4572           $("#show_note_papan2").show();
4573           $("#kartu-ucapan-papan").val("");
4574         }
4575         if($(this).attr("value")=="Duka Cita"){
4576           $("#suggest-messages a").hide();
4577           $("#show_note_papan3").show();
4578           $("#kartu-ucapan-papan").val("");
4579         }
4580       });
4581     }).change();
4582     */
4583 
4584     
4585 
4586     
4587 
4588     $(".variant-metafield").each(function(){
4589       const t = $(this)
4590       const id = t.attr("id")
4591       const target = $(`[data-select=${id}]`)
4592       t.on('select2:selecting', function(e) {
4593         const data = e.params.args.data
4594         target.val(data.text)
4595       });
4596     })
4597   })
4598 </script>
4598
4599 
4600 
4600<script>
4601   const shareButton = document.getElementById('shareButton');
4602 
4603   shareButton.addEventListener('click', () => {
4604     if (navigator.share) {
4605       navigator.share({
4606         title: "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026",
4607         url: "/products/blossom-shine",
4608         text: 'Check out this page!'
4609       })
4610       .then(() => console.log('Successful share'))
4611       .catch((error) => console.log('Error sharing', error));
4612     } else {
4613       alert('Web Share API is not supported in this browser.');
4614     }
4615   });
4616 
4617   // Inventory validation function
4618   function checkInventoryStatus() {
4619     const productSelect = document.getElementById('productSelect');
4620     const purchaseButton = document.querySelector('#personalizeBtn button');
4621     
4622     if (!productSelect || !purchaseButton) return;
4623 
4624     const selectedVariantId = productSelect.value;
4625     
4626     // Get variant data from Shopify
4627     fetch(`/products/blossom-shine.js`)
4628       .then(response => response.json())
4629       .then(product => {
4630         const selectedVariant = product.variants.find(variant => variant.id == selectedVariantId);
4631         
4632         if (selectedVariant) {
4633           const isOutOfStock = selectedVariant.inventory_quantity <= 0 && 
4634                                selectedVariant.inventory_management === 'shopify' && 
4635                                selectedVariant.inventory_policy !== 'continue';
4636           
4637           if (isOutOfStock) {
4638             purchaseButton.disabled = true;
4639             purchaseButton.textContent = 'Out of Stock';
4640             purchaseButton.setAttribute('data-out-of-stock', 'true');
4641             purchaseButton.style.backgroundColor = '#cccccc';
4642             purchaseButton.style.cursor = 'not-allowed';
4643           } else {
4644             // Check if button was disabled due to other conditions
4645             
4646             
4647             
4648             
4649             
4650             
4651             
4652             
4653             const isOtherDisabled = false || true || false;
4654             
4655             if (!isOtherDisabled) {
4656               purchaseButton.disabled = false;
4657               purchaseButton.textContent = 'customize your flower board';
4658               purchaseButton.removeAttribute('data-out-of-stock');
4659               purchaseButton.style.backgroundColor = '';
4660               purchaseButton.style.cursor = '';
4661             }
4662           }
4663         }
4664       })
4665       .catch(error => {
4666         console.error('Error checking inventory:', error);
4667       });
4668   }
4669 
4670   // Check inventory on page load
4671   document.addEventListener('DOMContentLoaded', function() {
4672     checkInventoryStatus();
4673     
4674     // Listen for variant changes
4675     const productSelect = document.getElementById('productSelect');
4676     if (productSelect) {
4677       productSelect.addEventListener('change', checkInventoryStatus);
4678     }
4679   });
4680 
4681   // Prevent form submission if out of stock
4682   document.addEventListener('click', function(e) {
4683     if (e.target.matches('button[data-out-of-stock="true"]')) {
4684       e.preventDefault();
4685       e.stopPropagation();
4686       alert('This product is currently out of stock and cannot be purchased.');
4687       return false;
4688     }
4689   });
4690 </script>
4690
4691 
4692 
4693   
4694 </div>
4695 
4696           </div>
4697         </div>
4698       </div>
4699     </div>
4700     <div id="product-bottom">
4701       
4702         <div class="product-description rte bg-card col-12 py-3 px-0 m-0" itemprop="description">
4703           <div class="container">
4704             
4705 
4706 
4707 
4708 
4709     <div class="short-desc-mobile d-block d-lg-none mb-3">
4710         <div class="short-desc">
4711             <ul>
4712 <li><strong>EMO78 dikenal sebagai platform game seru yang bisa melepas penat saat merasa suntuk, tidak hanya itu game yang ditawarkan juga bisa mendapatkan hadiah hingga jutaan rupiah!</strong></li>
4713         </div>
4714         <label class="more-mobile">Show More →</label>
4715     </div>
4716 
4717 <style>
4718 .animated-title {
4719     text-align: center;
4720     font-weight: bold;
4721     color: #079c02;
4722     font-size: 28px;
4723     position: relative;
4724     animation: glow 2s infinite alternate, moveUpDown 3s infinite;
4725 }
4726 
4727 /* Efek glow / bercahaya hijau */
4728 @keyframes glow {
4729     0% { text-shadow: 0 0 5px #079c02; color: #079c02; }
4730     50% { text-shadow: 0 0 20px #00ff55; color: #12d12b; }
4731     100% { text-shadow: 0 0 10px #1bff00; color: #079c02; }
4732 }
4733 
4734 /* Efek gerakan naik turun */
4735 @keyframes moveUpDown {
4736     0% { transform: translateY(0px); }
4737     50% { transform: translateY(-5px); }
4738     100% { transform: translateY(0px); }
4739 }
4740 </style>
4741 
4742 
4742<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/1.1.0/cart.min.js"></script>
4742
4743 
4743<script>
4744   CartJS.init({"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"IDR","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0});
4745 
4746   const productType = $("[data-product-type]").data("product-type")
4747   const productDate = Date.parse(new Date())
4748   
4749   const shop = 'outerbloom1.myshopify.com'
4750   const host = 'https://app.asmaraku.com'
4751   // const host = 'http://localhost:5001'
4752 
4753   const gsheet = "https://script.google.com/macros/s/AKfycbyqa6mPD6lVjU6hiHr12J8URZ2aJBGyxBsGQ0QtEIDari-rBk_9vSOITjSSmUXL1NwxEg/exec"
4754   
4755   const qrID = "041025" + randomString(4, 'aAbCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ')
4756 
4757   $("#properties-time").val(new Date().getTime())
4758 
4759   const isemo78 = /iPhone|iPad|iPod/i.test(navigator.userAgent);
4760 
4761   if(!isemo78) {
4762     $("#full-date").attr("type", "button")
4763   }
4764 
4765   let dateTime = new Date();
4766   let today = dateTime.getDate();
4767   let day = dateTime.getDay();
4768   let hour = dateTime.getHours();
4769   let min = dateTime.getMinutes();
4770   let timeOfDay = hour + (min / 100);
4771 
4772   async function getFetch(url) {
4773     const response = await fetch(url);
4774     let status = false
4775     let result
4776     if(response.ok) {
4777       status = true
4778       result = await response.json();
4779     }
4780     return {
4781       status,
4782       data: result
4783     }
4784   }
4785 
4786   
4787 
4788   function setCookie(cname, cvalue, exMins) {
4789     var d = new Date();
4790     d.setTime(d.getTime() + (exMins*60*1000));
4791     var expires = "expires="+d.toUTCString();  
4792     document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
4793   }
4794 
4795   function getCookie(cname) {
4796     let name = cname + "=";
4797     let decodedCookie = decodeURIComponent(document.cookie);
4798     let ca = decodedCookie.split(';');
4799     for(let i = 0; i <ca.length; i++) {
4800       let c = ca[i];
4801       while (c.charAt(0) == ' ') {
4802         c = c.substring(1);
4803       }
4804       if (c.indexOf(name) == 0) {
4805         return c.substring(name.length, c.length);
4806       }
4807     }
4808     return "";
4809   }
4810 
4811   async function renderDate() {
4812     let dataDate = await getFetch(`${host}/api/shipping/date?domain=${shop}&productId=8144957800663&v=${Date.now()}`);
4813     console.log(dataDate, 'renderDate')
4814     const data = dataDate?.data
4815     const date = data.date
4816     const time = data.time
4817 
4818     console.log(date, 'DATE')
4819 
4820     const weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
4821     const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
4822     const htmlDate = []
4823     for(let i = 0;i < date.length;i++) {
4824       const full = date[i].date
4825       const d = new Date(date[i].date);
4826       const day = weekday[d.getDay()];
4827       const dt = d.getDate();
4828       const mt = monthly[d.getMonth()];
4829       const yr = d.getFullYear();
4830       const isDate = Boolean(date[i].isEnabled)
4831       const cutoffpagi = date[i].cutoff?.pagi
4832       const cutoffsiang = date[i].cutoff?.siang
4833       const cutoffMalam = date[i].cutoff?.Malam
4834       var html = `
4835         <button data-id="8144957800663" class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" data-day="${day}" data-fulldate="${full}" data-date="${dt < 10 ? '0' + dt : dt}" data-month="${mt}" data-year="${yr}" data-offpagi="${cutoffpagi}" data-offsiang="${cutoffsiang}" data-offMalam="${cutoffMalam}" ${isDate === true ? '' : 'disabled'}>
4836           ${dt === today ?
4837             `Today<span>${dt < 10 ? '0' + dt : dt}</span>` :
4838             `${day}<span>${dt < 10 ? '0' + dt : dt}</span>`
4839           }
4840         </button>
4841       `
4842       htmlDate.push(html)
4843     }
4844     const htmlTime = []
4845     for(var i = 0;i < time.length;i++) {
4846       const timeText = time[i].text
4847       const timeTime = time[i].time
4848       const timeEnabled = time[i].isEnabled
4849       var html = `
4850           <button class="time-single calendarbutton2 btn steps-btn" data-time="${timeText}" ${timeEnabled ? '' : 'disabled'}>${timeText}<br/>${timeTime}</button>
4851         `
4852       htmlTime.push(html)
4853     }
4854     const deliveryDate = document.getElementById("deliveryDate");
4855     if(deliveryDate) {
4856       deliveryDate.insertAdjacentHTML("afterbegin", htmlDate.join(''))
4857       $("#deliveryTime").html(htmlTime)
4858       if(productType !== '') {
4859         console.log("clarity event " + productType + ' calendaring')
4860         window.clarity("event", `${productType} calendaringSchedule`)
4861         // window.clarity("set", productType, `calendaringSchedule - ${productDate}`)
4862       }
4863     }
4864   }
4865 
4866   async function getProvince(city) {
4867     let { data: { province } } = await getFetch(`${host}/api/shipping/address/province?city=${city}`);
4868     console.log(province, 'province')
4869     $("#province").val(province)
4870   }
4871 
4872   async function renderAddress() {
4873     let current
4874     if(getCookie("location_delivery")){
4875       current = getCookie("location_delivery").charAt(0).toUpperCase() + getCookie("location_delivery").slice(1)
4876     }
4877     let address = await getFetch(`${host}/api/shipping/address?domain=${shop}&productId=8144957800663`);
4878     console.log(address)
4879     const data = address?.data?.city
4880     const htmlAddress = []
4881     const grouping = []
4882     for(let i = 0;i < data?.length;i++) {
4883       if(data[i]){
4884         if(data[i]?.group) {
4885           grouping.push(data[i].group)
4886         }
4887         const price = rupiah.format(data[i]?.rate)
4888         let promo = '(Promo Free Delivery)'
4889         if(data[i]?.name === 'Jakarta - PickUp ASHTA'){
4890           promo = '(at SCBD, Ashta)'
4891         } else if(data[i]?.name === 'Jakarta - PickUp ITC'){
4892           promo = '(at Kuningan, ITC Kuningan)'
4893         } else if(data[i]?.name === 'BSD - PickUp'){
4894           promo = '(at Goldfinch Gading Serpong)'
4895         } else if(data[i]?.name === 'Kota Lainnya'){
4896           promo = ''
4897         }
4898         htmlAddress.push(`<option data-province="${data[i]?.province}" data-city="${data[i]?.city}" data-note="${data[i]?.note}" data-price="${data[i]?.rate}" value="${data[i]?.name}">${data[i]?.name === 'Kota Lainnya' ? 'Seluruh Kota Lain di Indonesia' : data[i]?.name} ${data[i]?.rate > 0 ? `(${price})` : promo}</option>`)
4899       }
4900     }
4901     
4902     const deliveryCity = document.getElementById("cities");
4903     if(deliveryCity) {
4904       deliveryCity.insertAdjacentHTML("beforeend", htmlAddress.join(''))
4905       if(!isemo78) {
4906         $(deliveryCity).select2();
4907       }
4908     }
4909   }
4910 
4911   async function renderZip(v, v2, v3) {
4912     const deliveryZip = document.getElementById("zip");
4913     if(v === '') {
4914       return
4915     }
4916     let dataZip = await getFetch(`${host}/api/shipping/address/zip?city=${v}&city2=${v2}&city3=${v3}`);
4917     let zip = dataZip?.data?.zip
4918     console.log(zip)
4919     let htmlZip = []
4920     for(let i = 0; i < zip?.length;i++) {
4921       htmlZip.push(`<option value="${zip[i]?.postalCode} - ${zip[i]?.subdistrict}">${zip[i]?.postalCode} - ${zip[i]?.subdistrict} - ${zip[i]?.city}</option>`)
4922     }
4923     deliveryZip.insertAdjacentHTML("beforeend", htmlZip.join(''))
4924   }
4925 
4926   renderDate()
4927   renderAddress()
4928 
4929   let rupiah = new Intl.NumberFormat('id-ID', {
4930     style: 'currency',
4931     currency: 'IDR',
4932     maximumFractionDigits: 0, 
4933     minimumFractionDigits: 0
4934   });
4935 
4936   async function insertCard(data) {
4937     const response = await fetch(`${host}/api/card/new`, {
4938         method: "POST",
4939         headers: {
4940           'Content-Type': 'application/json',
4941         },
4942         body: data
4943     })
4944     const result = await response.json()
4945     let rowIndex = result?.data?.tableRange.split("Outerbloom!A1:J")[1]
4946     $("#greetingCard").attr("data-index", rowIndex)
4947     return result
4948   }
4949     
4950   async function updateCard(data){
4951     const rowIndex = $("#greetingCard").data("index")
4952     const response = await fetch(`${host}/api/card/update?rowIndex=${rowIndex}`, {
4953         method: "PUT",
4954         headers: {
4955           'Content-Type': 'application/json',
4956         },
4957         body: data
4958     })
4959     return response
4960   }
4961     
4962   function bytesToSize(bytes) {
4963     var sizes = ['b', 'kb', 'mb', 'gb', 'tb', 'p'];
4964     for (var i = 0; i < sizes.length; i++) {
4965       if (bytes <= 1024) {
4966         return bytes + ' ' + sizes[i];
4967       } else {
4968         bytes = parseFloat(bytes / 1024).toFixed(2)
4969       }
4970     }
4971     return bytes + ' P';
4972   }
4973 
4974   async function uploadMedia(uri, type) {
4975     nameq = $("#properties-nama-penerima").val()
4976     dear = $("#properties-kartu-nama-penerima").val()
4977     card = $("[data-properties=ucapan]").val()
4978     sender = $("#properties-kartu-nama-pengirim").val()
4979     photo = $("#properties-photo").val()
4980     video = $("#properties-video").val()
4981     status = "Product"
4982         
4983     const name = qrID
4984     let formData = new FormData(); 
4985     formData.append("file", uri);
4986     const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, {
4987       method: "POST", 
4988       body: formData
4989     })
4990     const result = await response.json();
4991     if(result) {
4992       const url = result.url
4993       if(type === 'image/jpeg') {
4994         $("#properties-photo").val(url)
4995         $(".preview-image").show()
4996         $(".remove-image").show()
4997         photo = url
4998       } else {
4999         $("#properties-video").val(url)
5000         $("#label-input-video span").text("Change File")
5001         $(".case-qrcode-preview p").text("Scan here for a secret message")
5002         $(".remove-media").show()
5003         $("#product-top #product-meta .case-video-preview p").html(`<span class="replace-video" tite="Replace Video">${uri.name} (${bytesToSize(uri.size)})</span><span> is uploaded</span>`)
5004         $("[for=input-video]").hide()
5005         video = url
5006       }
5007       $(".case-video-preview").show()
5008       $(".steps-card-preview").removeClass("loading")
5009       // updateCard(nameq, dear, card, sender, photo, video, status)
5010 
5011       $(".nextBtn").attr("disabled", false)
5012     }
5013   }
5014 
5015   function randomString(length, chars) {
5016     var result = '';
5017     for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
5018     return result;
5019   }
5020 
5021   function getNoteCity(fulldate) {
5022     const h_1 = new Date(new Date().setDate(new Date().getDate() + 1))
5023     const weekday = ["Min","Sen","Sel","Rab","Kam","Jum","Sab"];
5024     const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
5025     const d = new Date(h_1);
5026     const day = weekday[d.getDay()];
5027     const dt = d.getDate();
5028     const mt = monthly[d.getMonth()];
5029     const yr = d.getFullYear();
5030     const p = $("#cities").parent(".form-group")
5031   }
5032 
5033   function disabledSameDay() {
5034     let btnFirst = $("#deliveryDate").find("button:first-child")
5035     let getDay = new Date().getDay();
5036 
5037     
5038       
5039       if(getDay == 1 || getDay == 2 || getDay == 3 || getDay == 4 || getDay == 5){
5040         if(hour >= 14.00){
5041           btnFirst.attr("disabled", true)
5042         }
5043       } else if(getDay == 6){
5044         if(hour >= 16.00){
5045           btnFirst.attr("disabled", true)
5046         }
5047       } else if(getDay == 0){
5048         if(hour >= 16.00){
5049           btnFirst.attr("disabled", true)
5050         }
5051       }
5052       
5053     
5054   }
5055 
5056   function disabledays(date) {
5057     let ymd = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
5058     //if u have to disable a list of day
5059     let removeDays
5060     
5061     
5062     
5063         removeDays = ["2025-2-13", "2025-2-14"];
5064     
5065     if ($.inArray(ymd, removeDays) >= 0) {
5066       return [false];
5067     } else {
5068       let day = date.getDay();
5069       if(day == 0 && date.getDate() == 13 && date.getMonth() == 1){
5070           return [(day == 0),  ''];
5071       }
5072       
5073       if(day == 0){
5074         return [(day == 0),  ''];
5075       }
5076       
5077       
5078       return [(day != 0),  ''];
5079     }
5080   }
5081 
5082   /* Indonesian initialisation for the jQuery UI date picker plugin. */
5083   /* Written by Deden Fathurahman ([email protected]). */
5084   ( function( factory ) {
5085     if ( typeof define === "function" && define.amd ) {
5086 
5087       // AMD. Register as an anonymous module.
5088       define( [ "../widgets/datepicker" ], factory );
5089     } else {
5090 
5091       // Browser globals
5092       factory( jQuery.datepicker );
5093     }
5094   }( function( datepicker ) {
5095 
5096   datepicker.regional.id = {
5097     closeText: "Tutup",
5098     prevText: "&#x3C;mundur",
5099     nextText: "maju&#x3E;",
5100     currentText: "Today",
5101     monthNames: [ "January","February","March","April","May","Juny",
5102                   "July","August","September","October","November","December" ],
5103     monthNamesShort: [ "Jan","Feb","Mar","Apr","May","Jun",
5104                       "Jul","Agu","Sep","Oct","Nov","Dec" ],
5105     dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ],
5106     dayNamesShort: [ "Sun","Mon","Tue","Wed","Thu","Fri","Sat" ],
5107     dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ],
5108     weekHeader: "Mg",
5109     dateFormat: "D, dd M",
5110     firstDay: 0,
5111     isRTL: false,
5112     showMonthAfterYear: false,
5113     yearSuffix: "" };
5114   datepicker.setDefaults( datepicker.regional.id );
5115 
5116   return datepicker.regional.id;
5117 
5118 } ) );
5119 
5120   function loadPopup() {
5121     $("#backgroundPopup").fadeIn("slow");
5122     $(".purchasePopup:not(.purchasePopupSpotify)").fadeIn("slow");
5123     const firstSection = $(".purchasePopup:not(.purchasePopupSpotify) .sectionPurchase").first()
5124     if(firstSection.hasClass("purchasePersonalize")) {
5125       if(productType !== '') {
5126         console.log("clarity event " + productType + ' personalize')
5127         window.clarity("event", `${productType} cardPersonalization`)
5128         // window.clarity("set", productType, `cardPersonalization - ${productDate}`)
5129       }
5130     } else if (firstSection.hasClass("sectionPurchaseBoard")) {
5131         console.log("clarity event " + productType + ' personalizeBoard')
5132         window.clarity("event", `${productType} personalizeBoard`)
5133         // window.clarity("set", productType, `personalizeBoard - ${productDate}`)
5134     }
5135     firstSection.removeClass("hide")
5136     
5137     // Auto-trigger addon loading when addon section becomes visible
5138     setTimeout(function() {
5139       const addonSection = $(".purchaseAddon")
5140       if(addonSection.length > 0 && !addonSection.hasClass("hide")) {
5141         if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
5142           $("[data-addon=upsell-all]").trigger("click")
5143         }
5144       }
5145     }, 200)
5146   }
5147 
5148   function disablePopup() {
5149     $("#backgroundPopup").fadeOut("slow");
5150     $(".purchasePopup").fadeOut("slow");
5151     $("#popupCart").fadeOut("slow");
5152   }
5153 
5154     function scrollTo(parent, div, dur) {
5155       $(parent).animate({
5156         scrollTop: $(div).offset().top
5157       }, dur);
5158     }
5159 
5160   function loadPopupPersonalize() {
5161     const div = "#purchaseProduct"
5162     const p = "html, body, .product-meta"
5163     $("p.error").remove()
5164     loadItemOccasion($("[data-occassion]").eq(0), "greeting-card-all")
5165     const isCity = $("#cities[required]")
5166     const isDate = $("#propDeliveryDate[required]")
5167     const isTime = $("#propDeliveryTime[required]")
5168     // loadPopup()
5169     if(isCity.val() !== '' && isDate.val() !== '' && isTime.val() !== '') {
5170       loadPopup()
5171     }
5172     if(isCity.val() == '') {
5173       isCity.parent(".row").append("<p class='error'>Choose delivery city</p>")
5174       scrollTo(p, div, 500)
5175     }
5176     if(isDate.val() == '') {
5177       isDate.parents(".row").append("<p class='error'>Choose delivery date</p>")
5178       scrollTo(p, div, 500)
5179     }
5180     if(isTime.val() == '') {
5181       isTime.parents(".row").append("<p class='error'>Choose delivery time</p>")
5182       scrollTo(p, div, 500)
5183     }
5184   }
5185 
5186   function quantityCounter() {
5187     $(document).on("click", ".item-card.selected .q_up", function () {
5188       var C = $(this).attr("data-id"),
5189           S =
5190               parseInt(
5191                   $(this)
5192                       .siblings(".quantity-cart-" + C)
5193                       .val()
5194               ) + 1;
5195       $(this).attr("data-quantity", S),
5196           $(this)
5197               .siblings(".quantity-cart-" + C)
5198               .val(S);
5199     }),
5200     $(document).on("click", ".item-card.selected .q_down", function () {
5201         var C = $(this).attr("data-id"),
5202             S = parseInt(
5203                 $(this)
5204                     .siblings(".quantity-cart-" + C)
5205                     .val()
5206             );
5207         0 < S && $(this).attr("data-quantity", S - 1),
5208             0 < S &&
5209                 $(this)
5210                     .siblings(".quantity-cart-" + C)
5211                     .val(S - 1);
5212     });
5213   }
5214 
5215   quantityCounter()
5216 
5217   const itemAddon = $(".item-card").length
5218   const nofree = $(".nofree").length
5219 
5220   const upsell = ''
5221   
5222   if(nofree === itemAddon) {
5223       // $("#itemAddons").html("<p>No Items available</p>")
5224   }
5225 
5226   $("#itemAddons .item-card").each(function(e){
5227       $("#itemAddons").attr("data-length", e)
5228   })
5229 
5230   $("[data-addon]").click(function(){
5231       
5232       
5233       
5234       const t = $(this)
5235       
5236       const data = t.data("addon")
5237       
5238       $("[data-addon]").removeClass("selected")
5239       t.addClass("selected")
5240       $.get(`https://outerbloom.com/collections/${data}/products.json`, function(data, status){
5241           const products = data.products
5242           const html = []
5243           for(let i = 0; i < products.length; i++) {
5244               const id = products[i].id
5245               const variantId = products[i].variants[0].id
5246               const img = products[i].images[0].src
5247               let img2 = img.split('.jpg')[0]
5248               const title = products[i].title
5249               const price = products[i].variants[0].price
5250               const tags = products[i].tags
5251               const qty = products[i].variants[0].available
5252               let type_upsell = ''
5253               if(tags.includes('upsell-item-standing')) {
5254                   type_upsell = 'standing'
5255               }
5256               console.log(type_upsell)
5257               if(type_upsell !== '') {
5258                   const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'} type-${products[i].product_type.toLowerCase()?.replace(' ', '_')}" data-variant="${variantId}" data-id=${id} data-qty="${qty === false ? 0 : ''}" data-upsell="${type_upsell}" data-tags="${tags}">
5259                       
5260                           <div class="card-image">
5261                               <img src="${img2}_150x.jpg" alt="${title}" width="" height="" />
5262                           </div>
5263                           <div class="card-meta">
5264                               <h5>${title}</h5>
5265                               <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p>
5266                               <input id="card-${variantId}" type="hidden" name="" value="${variantId}">
5267                           </div>
5268                           <div class="card-qty">
5269                               <a data-quantity="1" type="submit" id="q_down-${variantId}" class="btn-qty-min q_down drawer-cart" data-id="${variantId}"><svg xmlns="image/logo-login-emo78.png" width="12" height="2" viewBox="0 0 12 2" fill="none"><path d="M0 1.90869V0.908691H12V1.90869H0Z" fill="black"/></svg></a>  
5270                               <input maxlength="3" min="0" class="btn-qty text-center quantity-cart-${variantId}
5270" value="0" data-price=${price} name="quantity">
5271                               <a data-quantity="1" type="submit" class="btn-qty-plus q_up text-green drawer-cart" data-id="${variantId}"><svg xmlns="image/logo-login-emo78.png" width="12" height="13" viewBox="0 0 12 13" fill="none">
5272 <path d="M0 6.87023V5.94715H5.53846V0.408691H6.46154V5.94715H12V6.87023H6.46154V12.4087H5.53846V6.87023H0Z" fill="black"/>
5273 </svg></a>   
5274                           </div>
5275                       </div>`
5276                   html.push(body)
5277               }
5278           }
5279           $("#itemAddons .row").html(html.length === 0 ? '<p>No Item available</p>' : html)
5280           $("#itemAddons").attr("data-length", products.length)
5281           // $('#itemAddons')[0].swiper.update();
5282       });
5283   })
5284 
5285   async function isAddon(){
5286     let ids = []
5287     $("#itemAddons .item-card.selected").each(function(i, e){
5288       const id = $(this).data("id")
5289       ids.push(id)
5290     })
5291     console.log(ids)
5292     return ids
5293   }
5294   
5295   $("#itemAddons").delegate(".item-card > div:not(.card-qty)", "click", async function(){
5296     const t = $(this).parent()
5297     const id = t.data("id")
5298     const btn =  t.parents(".purchaseAddon").find(".next-purchase-button")
5299     t.toggleClass("selected");
5300     //$(this).next("input").toggleAttr('name', 'id[]');
5301     if (t.hasClass('selected')) {
5302         t.find("input").val(1)
5303         t.find("input").attr('name', 'id[]');
5304     } else {
5305         t.find("input").val(0)
5306         t.find("input").removeAttr('name');
5307     }
5308     $("#properties-addons").val(addons)
5309     const is = await isAddon()
5310     if(is.length === 0) {
5311       btn.text("continue without add-ons")
5312       return
5313     }
5314     if(is.includes(8835692069079)) {
5315       btn.text("personalize acrylic frame")
5316     } else {
5317       btn.text("Continue")
5318     }
5319       
5320   })
5321 
5322   async function myAddon(data) {
5323     const c = $(".addonsPurchase .addons")
5324     let items = []
5325     
5326     const spotifyAddons = $(".spotifyAddons").find("[data-index]")
5327     // if(spotifyAddons.length > 0) {
5328     //   $(spotifyAddons).each(function(i, e){
5329     //     const spotifyLink = $(this).find(".spotifyLink").val()
5330     //     const spotifySong = $(this).find(".spotifySong").val()
5331     //     const spotifyArtist = $(this).find(".spotifyArtist").val()
5332     //     const spotifyFotoAddon = $(this).find(".resultPhotoSpotify").val()
5333     //     if(spotifyLink !== '') {
5334     //       spotifyAddon = `<div class="addon-item" data-id="46067682607319" data-qty="1">
5335     //         <div class="addon-itm-img">
5336     //           <img src="https://cdn.shopify.com/s/files/1/1589/6833/files/Acrylic-Frame_8c71027d-43b7-4322-a98f-d34ab0456397_100x.jpg?v=1739160467" alt="" width="70"/>
5337     //         </div>
5338     //         <div class="addon-itm-title">
5339     //           <span>[US] Outerbloom Acrylic Frame 4R</span>
5340     //         </div>
5341     //         <div class="addon-itm-line-total">
5342     //           <span>Rp 99.000</span>
5343     //         </div>
5344     //       </div>
5345     //       <div class="propsAddonSpotify row m-0">
5346     //         <div class="col-12 col-lg-2"></div>
5347     //           <div class="col-12 col-lg-10">
5348     //             <p>
5349     //               <span>spotify link</span>
5350     //               <span class="spotifyLinkAddon">${spotifyLink}</span>
5351     //             </p>
5352     //             <p>
5353     //               <span>uploaded photo</span>
5354     //               <span class="spotifyFotoAddon">${spotifyFotoAddon}</span>
5355     //             </p>
5356     //             <p>
5357     //               <span>song / playlist name</span>
5358     //               <span class="spotifySongAddon">${spotifySong}</span>
5359     //             </p>
5360     //             <p>
5361     //               <span>artist name</span>
5362     //               <span class="spotifyArtistAddon">${spotifyArtist}</span>
5363     //             </p>
5364     //           </div>
5365     //       </div>`
5366     //       items.push(spotifyAddon)
5367     //     }
5368     //   })
5369     // }
5370     for(let i = 0; i < data.length; i++) {
5371       if(data[i].title !== '[US] Outerbloom Acrylic Frame 4R' ) {
5372         const img = data[i].image
5373         const title = data[i].title
5374         const qty = data[i].qty
5375         const price = data[i].price
5376         const total = Number(qty) * Number(price)
5377         let addons = `<div class="addon-item" data-id="${data[i].id}" data-qty="${qty}">
5378               <div class="addon-itm-img">
5379                 <img src="${img}" alt="" width="70"/>
5380               </div>
5381               <div class="addon-itm-title">
5382                 <span>${title}</span>
5383               </div>
5384               <div class="addon-itm-line-price">
5385                 <span>${rupiah.format(price)}</span>
5386                 ${data[i].title == '[US] Outerbloom Acrylic Frame 4R' ? '' : `<span>x${qty}</span>`}
5387               </div>
5388               <div class="addon-itm-line-total">
5389                 <span>${rupiah.format(total)}</span>
5390               </div>
5391             </div>`
5392           items.push(addons)
5393       }
5394     }
5395     c.html(items)
5396     const parent = $(".purchaseAddon")
5397     const next = parent.next(".sectionPurchase")
5398     parent.addClass("hide")
5399     next.removeClass("hide")
5400     // if(items2.length === 0) return $("#popupCart").addClass("no-addon-cart")
5401     // $(".itemAddonCart").find("h4").text(`add-ons (${items2.length})`)
5402   }
5403 
5404   async function listAddon() {
5405     const data = $("#itemAddons").find(".selected")
5406     let ids = []
5407     $(data).each(function(){
5408       const id = $(this).data("variant")
5409       const image = $(this).find(".card-image img").attr("src")
5410       const title = $(this).find(".card-meta h5").text()
5411       const qty = $(this).find(".card-qty input").val()
5412       const price = $(this).find(".card-qty input").data("price")
5413       ids.push({
5414         id: Number(id),
5415         image,
5416         title,
5417         qty,
5418         price
5419       })
5420     })
5421     myAddon(ids)
5422   }
5423 
5424   async function customSpotify(idx, length, type){
5425     let isCard = false
5426     
5427     let p = $(".purchasePopupSpotify")
5428     const preLink = $(".spotifyLinkFirst").val()
5429     $("[data-index]").hide()
5430     p.find(".headerPurchase h3").text(`personalize spotify photo print${length > 1 ? ` - ${idx}` : ''}`)
5431     p.find(".regulerAddons, .purchase-button").hide()
5432     p.find(".spotifyAddons").show()
5433     
5434     const data = await trackUrl(preLink)
5435     
5436     const html = `<div class="row" data-index=${idx} data-length=${length}><div class="col-12 col-lg-6"><div class="form-vertical position-relative"><div class="form-group mb-4"><h4>upload photo</h4><div class=uploadResult><label class=btn for=uploadPhotoSpotify><svg xmlns="image/logo-login-emo78.png" width="13" height="11" viewB
5436ox="0 0 13 11" fill="none">
5437 <path d="M0.875 10.6378H12.375C12.4413 10.6378 12.5049 10.6115 12.5518 10.5646C12.5987 10.5177 12.625 10.4541 12.625 10.3878V0.387817C12.625 0.321513 12.5987 0.257925 12.5518 0.211041C12.5049 0.164157 12.4413 0.137817 12.375 0.137817H0.875C0.808696 0.137817 0.745107 0.164157 0.698223 0.211041C0.651339 0.257925 0.625 0.321513 0.625 0.387817V10.3878C0.625 10.4541 0.651339 10.5177 0.698223 10.5646C0.745107 10.6115 0.808696 10.6378 0.875 10.6378ZM1.125 10.1378V7.31882C1.136 7.31082 1.1485 7.30632 1.1585 7.29632L3.7165 4.73832C3.78198 4.67584 3.869 4.64098 3.9595 4.64098C4.05 4.64098 4.13702 4.67584 4.2025 4.73832L7.963 8.49882C8.00919 8.54501 8.07162 8.5713 8.13694 8.57204C8.20225 8.57279 8.26527 8.54794 8.3125 8.50282L10.2455 6.66682C10.3084 6.60323 10.3938 6.56684 10.4832 6.56543C10.5727 6.56403 10.6591 6.59774 10.724 6.65932L12.125 8.18532L12.1255 8.18582V10.1378H1.125ZM12.125 0.637817V7.44682L11.0845 6.31382C11.0066 6.23514 10.9138 6.17275 10.8116 6.13026C10.7094 6.08777 10.5997 6.06603 10.489 6.06632H10.4885C10.3786 6.06584 10.2697 6.08706 10.168 6.12876C10.0664 6.17046 9.97391 6.23182 9.896 6.30932L8.144 7.97332L4.556 4.38482C4.2365 4.06582 3.6815 4.06632 3.363 4.38482L1.125 6.62332V0.637817H12.125Z" fill="black"/>
5438 </svg><span>Upload your file</span></label></div><input class="uploadPhotoSpotify form-control d-none" accept=image/* type=file><input class="resultPhotoSpotify" type="hidden"></div><div class="form-group mb-5"><h4>Add your Spotify link here</h4> <input class="spotifyLink2 form-control spotifyLink" value="${preLink}" placeholder=https://open.spotify.com/ ></div><div class="form-group mb-4 text-left"><label class=checkbox for=isCustomMessage><span>Personalized Message</span><span class=checkmark></span></label></div><div class="form-group mb-4 form-personalize"><label class="text-left d-block mb-2 text-uppercase"for=spotifySong>Song / playlist name</label> ${data?.song ? `<input class="form-control spotifySong" value="${data?.song}">` : '<input class="form-control spotifySong" value="">'}</div><div class="form-group form-personalize"><label class="text-left d-block mb-2 text-uppercase"for=spotifyArtist>Artist name</label> ${data?.artist ? `<input class="form-control spotifyArtist" value="${data?.artist}">` : '<input class="form-control spotifyArtist" value="">'}</div><div class=btn-action><button class="back-spotify"><svg fill=none height=14 viewBox="0 0 15 14"width=15 xmlns=image/logo-login-emo78.png><path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z"fill=black /></svg> <span>Back</span></button><button data-type="${isCard ? 'card' : ''}" ${isCard ? '' : 'id=addtocart-card'} class="text-uppercase btn w-100${type == 'addon' && idx == length ? ' finished' : ' no-addon'}" disabled>${isCard ? 'Continue Personalizing' : 'add to cart'}</button></div></div></div><div class="col-12 col-lg-6 columnRight"><div class=frame-spotify><div class=frameImage><div class=frameImageUploaded><svg xmlns="image/logo-login-emo78.png" width="13" height="11" viewB
5438ox="0 0 13 11" fill="none">
5439 <path d="M0.875 10.6378H12.375C12.4413 10.6378 12.5049 10.6115 12.5518 10.5646C12.5987 10.5177 12.625 10.4541 12.625 10.3878V0.387817C12.625 0.321513 12.5987 0.257925 12.5518 0.211041C12.5049 0.164157 12.4413 0.137817 12.375 0.137817H0.875C0.808696 0.137817 0.745107 0.164157 0.698223 0.211041C0.651339 0.257925 0.625 0.321513 0.625 0.387817V10.3878C0.625 10.4541 0.651339 10.5177 0.698223 10.5646C0.745107 10.6115 0.808696 10.6378 0.875 10.6378ZM1.125 10.1378V7.31882C1.136 7.31082 1.1485 7.30632 1.1585 7.29632L3.7165 4.73832C3.78198 4.67584 3.869 4.64098 3.9595 4.64098C4.05 4.64098 4.13702 4.67584 4.2025 4.73832L7.963 8.49882C8.00919 8.54501 8.07162 8.5713 8.13694 8.57204C8.20225 8.57279 8.26527 8.54794 8.3125 8.50282L10.2455 6.66682C10.3084 6.60323 10.3938 6.56684 10.4832 6.56543C10.5727 6.56403 10.6591 6.59774 10.724 6.65932L12.125 8.18532L12.1255 8.18582V10.1378H1.125ZM12.125 0.637817V7.44682L11.0845 6.31382C11.0066 6.23514 10.9138 6.17275 10.8116 6.13026C10.7094 6.08777 10.5997 6.06603 10.489 6.06632H10.4885C10.3786 6.06584 10.2697 6.08706 10.168 6.12876C10.0664 6.17046 9.97391 6.23182 9.896 6.30932L8.144 7.97332L4.556 4.38482C4.2365 4.06582 3.6815 4.06632 3.363 4.38482L1.125 6.62332V0.637817H12.125Z" fill="black"/>
5440 </svg> <img src="" class=previewImage style=display:none></div></div><div class=frameControl><div class=spotifyData>${data?.song ? `<h3>${data?.song}</h3>` : '<h3><h3>'}${data?.artist ? `<p>${data?.artist}</p>` : '<p></p>'}</div><img src="//outerbloom.com/cdn/shop/t/138/assets/frame-spotify.png?v=138221849636560654691752652420"alt="spotify outerbloom" height=""width=100%><div class=spotifyCode><img src="https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data?.type.slice(0, -1)}:${data?.trackId}"alt=""></div></div></div></div></div>`
5441     // console.log(html)
5442     
5443     $(".spotifyAddons").append(html)
5444     
5445     $(`[data-index=${idx}]`).show()
5446     
5447     if (preLink !== '') {
5448       $(".btn-action .btn").attr("disabled", false)
5449     } else {
5450       $(".btn-action .btn").attr("disabled", true)
5451     }
5452 
5453     return html
5454     
5455   }
5456 
5457   $(".spotifyLinkFirst").keyup(async function(){
5458     const v = $(this).val()
5459     if(v.includes('spotify:user:spotify')) {
5460       const correct = v.split('user:spotify:')[1]
5461       console.log(correct, 'BNER')
5462       $(this).val(correct)
5463       return
5464     }
5465     if(v.includes("spotify:") || v.includes("https://open.spotify.com/")){
5466       const data = await trackUrl(v)
5467       if(!data || !data.status) {
5468         $(this).parent().addClass("error")
5469         // $(this).parent().append(`<p class="txt-error">Make sure you copy the complete and correct link from Spotify. Ex: https://open.spotify.com/track/0C3xZJueyBvvMSsl0cETA6</p>`)
5470         $("#personalizeBtnSpotify .btn").attr("disabled", true)
5471         return
5472       }
5473       $(this).parent().removeClass("error")
5474       // $(this).parent().remove("txt-error")
5475       $("#personalizeBtnSpotify .btn").attr("disabled", false)
5476     } else {
5477       $("#personalizeBtnSpotify .btn").attr("disabled", true)
5478     }
5479   })
5480 
5481   $(".purchaseAddon").delegate(".next-addon", "click", function(){
5482     const parent = $(this).parents(".purchaseAddon")
5483     const next = parent.next(".sectionPurchase")
5484     if(next.hasClass("purchaseAddress")) {
5485       if(productType !== '') {
5486         console.log("clarity event " + productType + ' purchaseDelivery')
5487         window.clarity("event", `${productType} purchaseDelivery`)
5488         // window.clarity("set", productType, `purchaseDelivery - ${productDate}`)
5489       }
5490     }
5491     const data = $("#itemAddons").find(".selected")
5492     const length = $(".quantity-cart-46067682607319").val()
5493     const checked = data.length;
5494     if(checked > 0) {
5495       if(length > 0) {
5496         $(".purchaseAddon").addClass("purchaseAddonSpotify")
5497         customSpotify(1, length, 'addon')
5498       } else {
5499         listAddon()
5500       }
5501     } else {
5502       parent.addClass("hide")
5503       next.removeClass("hide")
5504     }
5505   })
5506 
5507   $("#personalizeBtnSpotify .btn").click(async function(){
5508     const isCity = $("#cities[required]")
5509     const isDate = $("#propDeliveryDate[required]")
5510     if((isDate.length > 0 && isCity.length > 0) && (isCity.val() === '' || isDate.val() === '')) {
5511       alert('Please choose Delivery City & Delivery Date')
5512       return
5513     }
5514     const data = await customSpotify(1, 1, 'product')
5515     if(data) {
5516       $("#backgroundPopup").fadeIn("slow");
5517       $(".purchasePopupSpotify").fadeIn("slow");
5518 
5519       if(productType !== '') {
5520         console.log("clarity event " + productType + ' spotify')
5521         window.clarity("event", `${productType} spotify`)
5522         // window.clarity("set", productType, `purchaseDelivery - ${productDate}`)
5523       }
5524     }
5525   })
5526 
5527   function formatBytes(bytes, decimals = 2) {
5528     if (!+bytes) return '0 Bytes'
5529 
5530     const k = 1024
5531     const dm = decimals < 0 ? 0 : decimals
5532     const sizes = ['B', 'KB', 'MB']
5533 
5534     const i = Math.floor(Math.log(bytes) / Math.log(k))
5535 
5536     return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`
5537   }
5538 
5539   async function trackUrl(link){
5540     try {
5541       let trackId = link.split('/').pop().split('?')[0];
5542       let type = ''
5543       if(link.includes("spotify:")) {
5544         const uri = link.split('spotify:')[1]
5545         trackId = uri.split(':')[1]
5546         type = uri.split(':')[0] + 's'
5547       } else {
5548         if(link.match('track')){
5549           type = 'tracks'
5550         } else if(link.match('playlist')) {
5551           type = 'playlists'
5552         } else if(link.match('artist')) {
5553           type = 'artists'
5554         } else if(link.match('album')) {
5555           type = 'albums'
5556         }
5557       }
5558       console.log(`${host}/api/spotify/${type}/${trackId}`)
5559       const data = await getFetch(`${host}/api/spotify/${type}/${trackId}`)
5560       console.log(data, 'DATA')
5561       const song = data?.data?.name
5562       const artist = data?.data?.artist
5563       return {
5564         song, artist, type, trackId, status: data.status
5565       }
5566     } catch(err) {
5567       console.log(err)
5568     }
5569   }
5570 
5571   $(".spotifyAddons").delegate(".uploadPhotoSpotify", "change", async function(){
5572     const parent = $(this).parents("[data-index]")
5573     const preview = parent.find(".previewImage")
5574     const file = $(this)[0].files[0];
5575     if (file) {
5576         const reader = new FileReader();
5577         reader.onload = async function(e) {
5578           parent.find(".uploadResult label").hide()
5579           parent.find(".uploadedResult").remove()
5580           parent.find(".uploadResult").append(`<div class="uploadedResult d-flex" style="justify-content: space-between">
5581           <p style="text-align: left;margin: 0;"><span style="color: #34C759;font-style: italic;font-size: 14px;text-overflow: ellipsis;overflow: hidden;max-width: 250px;white-space: nowrap;display: inline-block;vertical-align: middle;">${file.name}</span><span style="font-size: 14px;color: #34C759"> (${formatBytes(file.size)})</span> <span style="font-size: 14px">is uploaded</span></p>
5582           <div style="align-self: center"><span class="changeUpload" style="font-size: 12px;cursor: pointer">Change</span><span class="removeUpload" style="cursor: pointer;border-left: 1px solid;padding-left: 10px;margin-left: 10px;height: 10px;display: inline-flex;vertical-align: middle;">
5582<svg fill="none" height="11" viewBox="0 0 10 11" width="10" xmlns="image/logo-login-emo78.png">
5583   <path d="M2.07799 10.8332C1.78154 10.8332 1.52799 10.7276 1.31732 10.5165C1.10666 10.3054 1.0011 10.0523 1.00066 9.75716V1.49982H0.667322C0.572656 1.49982 0.493545 1.46782 0.429989 1.40382C0.366433 1.33982 0.334433 1.26049 0.333989 1.16582C0.333544 1.07116 0.365545 0.992047 0.429989 0.928491C0.494433 0.864935 0.573545 0.833158 0.667322 0.833158H3.00066C3.00066 0.69538 3.05177 0.57538 3.15399 0.473158C3.25621 0.370935 3.37621 0.319824 3.51399 0.319824H6.48732C6.6251 0.319824 6.7451 0.370935 6.84732 0.473158C6.94954 0.57538 7.00066 0.69538 7.00066 0.833158H9.33399C9.42866 0.833158 9.50777 0.865158 9.57132 0.929158C9.63488 0.993158 9.66688 1.07249 9.66732 1.16716C9.66777 1.26182 9.63577 1.34094 9.57132 1.40449C9.50688 1.46805 9.42777 1.49982 9.33399 1.49982H9.00066V9.75649C9.00066 10.0525 8.8951 10.3058 8.68399 10.5165C8.47288 10.7272 8.21954 10.8327 7.92399 10.8332H2.07799ZM8.33399 1.49982H1.66732V9.75649C1.66732 9.87605 1.70577 9.97427 1.78266 10.0512C1.85954 10.128 1.95799 10.1665 2.07799 10.1665H7.92399C8.04354 10.1665 8.14177 10.128 8.21866 10.0512C8.29554 9.97427 8.33399 9.87605 8.33399 9.75649V1.49982ZM3.87266 8.83316C3.96732 8.83316 4.04666 8.80116 4.11066 8.73716C4.17466 8.67316 4.20643 8.59405 4.20599 8.49982V3.16649C4.20599 3.07182 4.17399 2.99271 4.10999 2.92916C4.04599 2.8656 3.96666 2.8336 3.87199 2.83316C3.77732 2.83271 3.69821 2.86471 3.63466 2.92916C3.5711 2.9936 3.53932 3.07271 3.53932 3.16649V8.49982C3.53932 8.59449 3.57132 8.6736 3.63532 8.73716C3.69932 8.80116 3.77843 8.83316 3.87266 8.83316ZM6.12932 8.83316C6.22399 8.83316 6.3031 8.80116 6.36666 8.73716C6.43021 8.67316 6.46199 8.59405 6.46199 8.49982V3.16649C6.46199 3.07182 6.42999 2.99271 6.36599 2.92916C6.30199 2.86516 6.22288 2.83316 6.12866 2.83316C6.03399 2.83316 5.95466 2.86516 5.89066 2.92916C5.82666 2.99316 5.79488 3.07227 5.79532 3.16649V8.49982C5.79532 8.59449 5.82732 8.6736 5.89132 8.73716C5.95532 8.80071 6.03466 8.83271 6.12932 8.83316Z"fill=#757575 />
5584 </svg>
5585 </span></div></div>`)
5586           parent.find(".frameImageUploaded svg").hide()
5587           parent.find(".frameImage").addClass("uploaded")
5588           preview.attr("src", e.target.result);
5589           preview.show();
5590           let formData = new FormData(); 
5591           formData.append("file", file);
5592           const response = await fetch(`${host}/api/upload?name=${file.name}&type=image/jpeg&r=${Date.parse(new Date)}`, {
5593             method: "POST", 
5594             body: formData
5595           })
5596           const result = await response.json();
5597           if(result){
5598             parent.find(".resultPhotoSpotify").val(result.url)
5599           }
5600         }
5601         
5602         reader.readAsDataURL(file);
5603     } else {
5604         preview.hide();
5605     }
5606   });
5607 
5608   $(".spotifyAddons").delegate(".uploadResult", "click", function(){
5609     $(this).next("input[type=file]").trigger("click")
5610   })
5611 
5612   $(".spotifyAddons").delegate(".changeUpload", "click", function(){
5613     $(this).parents("input[type=file]").trigger("click")
5614   })
5615 
5616   $(".spotifyAddons").delegate(".removeUpload", "click", function(){
5617     const parent = $(this).parents("[data-index]")
5618     parent.find(".uploadPhotoSpotify").val("")
5619     parent.find(".uploadResult label").show()
5620     parent.find(".uploadedResult").remove()
5621     parent.find(".frameImageUploaded svg").show()
5622     parent.find(".previewImage").hide()
5623     parent.find(".frameImage").removeClass("uploaded")
5624   })
5625 
5626   $(".spotifyAddons").delegate("label.checkbox", "click", function(){
5627     const parent = $(this).parents("[data-index]")
5628     parent.toggleClass("checked")
5629   })
5630 
5631   $(".spotifyAddons").delegate(".spotifyLink", "change", async function(){
5632     const parent = $(this).parents("[data-index]")
5633     const link = $(this).val()
5634     const data = await trackUrl(link)
5635 
5636     console.log(data)
5637 
5638     if(data.song) {
5639       parent.find(".spotifySong").val(data.song)
5640       parent.find(".spotifyData").find("h3").text(data.song)
5641     }
5642     if(data.artist) {
5643       parent.find(".spotifyArtist").val(data.artist)
5644       parent.find(".spotifyData").find("p").text(data.artist)
5645     }
5646     parent.find(".spotifyCode img").attr("src", `https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data.type.slice(0, -1)}:${data.trackId}`)
5647     // https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:track:1er51HCEBhIAtoEemKuC3M
5648     if (data.status === true) {
5649       parent.find(".btn-action .btn").attr("disabled", false)
5650     } else {
5651       parent.find(".btn-action .btn").attr("disabled", true)
5652     }
5653   })
5654   
5655   $(".spotifyAddons").delegate(".spotifySong", "keyup", async function(){
5656     const parent = $(this).parents("[data-index]")
5657     const v = $(this).val()
5658     parent.find(".spotifyData h3").text(v)
5659   })
5660 
5661   $(".spotifyAddons").delegate(".spotifyArtist", "keyup", async function(){
5662     const parent = $(this).parents("[data-index]")
5663     const v = $(this).val()
5664     parent.find(".spotifyData p").text(v)
5665   })
5666 
5667   $(".spotifyAddons").delegate(".btn-action .btn:not(.no-addon)", "click", async function(){
5668     const parent = $(this).parents("[data-index]")
5669     const length = parent.data("length")
5670     const index = parent.data("index")
5671     const indexNext = Number(index) + 1
5672     customSpotify(indexNext, length, 'addon')
5673   })
5674 
5675   
5676   $(".spotifyAddons").delegate(".btn-action .btn.finished", "click", async function(){
5677     const parent = $(this).parents(".purchaseAddon")
5678     const next = parent.next(".sectionPurchase")
5679     parent.addClass("hide")
5680     next.removeClass("hide")
5681     next.find(".purchase-button").show()
5682     listAddon()
5683   })
5684 
5685   $(".spotifyAddons").delegate(".back-spotify", "click", async function(){
5686     const t = $(this).parents("[data-index]")
5687     const parent = $(this).parents(".sectionPurchase")
5688     const current = t.data("index")
5689     const prevCurrent = Number(current) - 1
5690     if(current == 1) {
5691       parent.removeClass("purchaseAddonSpotify")
5692       parent.find(".purchase-button").show()
5693       parent.find(".headerPurchase h3").text("Make It More Special with Add-Ons!")
5694       $(".spotifyAddons").empty()
5695       $(".regulerAddons").show()
5696       return
5697     }
5698     t.hide()
5699     t.prev("[data-index]").show()
5700     t.remove()
5701     parent.find(".headerPurchase h3").text(`personalize spotify photo print - ${prevCurrent}`)
5702   })
5703 
5704   $("#personalizeBtn .btn").click(async function() {
5705     loadPopupPersonalize()
5706   });
5707 
5708   $(".sectionPurchaseSpotify").delegate(".btn[data-type=card]", "click", function(){
5709     $(".sectionPurchaseSpotify").hide()
5710     loadPopupPersonalize()
5711   })
5712 
5713   $(".close-purchase-popup").click(function() {
5714       disablePopup();
5715   });
5716   $("#backgroundPopup").click(function() {
5717       // disablePopup();
5718   });
5719 
5720   $("#popupCart .close-purchase-popup").click(function() {
5721       location.reload()
5722   });
5723 
5724   $('#popupCart').on('hide.bs.modal', function (e) {
5725     location.reload()
5726   })
5727 
5728   $(".next-card").click(function(){
5729     const parent = $(this).parents(".sectionPurchase")
5730     const next = parent.next(".sectionPurchase")
5731     parent.addClass("hide")
5732     next.removeClass("hide")
5733   })
5734 
5735   $(".back-purchase-button").click(function(){
5736     const parent = $(this).parents(".sectionPurchase")
5737     const prev = parent.prev(".sectionPurchase")
5738     parent.addClass("hide")
5739     prev.removeClass("hide")
5740   })
5741   
5742   $(document).keypress(function(e) {
5743       if (e.keyCode == 27 && popupStatus == 1) {
5744           disablePopup();
5745       }
5746   });
5747   
5748   const parentImg = $(".case-img-preview")
5749   const parentVid = $(".case-video-preview")
5750   
5751   function readURL(input) {
5752     if (input.files && input.files[0]) {
5753       let reader = new FileReader();
5754 
5755       let type = 'image/jpeg'
5756       const size = input.files[0].size
5757       if(input.files[0].type.match('video/')){
5758         type = 'video/mp4'
5759         if(size > 15728640) {
5760           alert('File size exceeds maximum limit 15 MB')
5761           return
5762         }
5763       } else {
5764         if(size > 5242880) {
5765           alert('File size exceeds maximum limit 5 MB')
5766           return
5767         }
5768       }
5769 
5770       reader.onload = function (e) {
5771         $(".nextBtn").attr("disabled", true)
5772         if(type === 'image/jpeg') {
5773           
5774             $('.placeholder-image').hide();
5775             $('.preview-image').show()
5776             $('.preview-image').attr('src', e.target.result);
5777           
5778         } else {
5779           // parentVid.find(".ajax-loader").show();
5780           $(".steps-card-preview").addClass("loading")
5781         }
5782       }
5783 
5784       
5785 
5786       reader.readAsDataURL(input.files[0]);
5787     }
5788   }
5789 
5790   async function readURLPapan(input) {
5791     if (input.files && input.files[0]) {
5792       let reader = new FileReader();
5793 
5794       reader.onload = function (e) {
5795         $('.btn-upload-papan').siblings('label').hide();
5796         $('.btn-upload-papan img').attr('src', e.target.result);
5797         $('.btn-upload-papan img').show();
5798         $('.svgLogoPapan').hide();
5799       }
5800       
5801       const type = 'image/jpeg'
5802       const name = `logo-8144957800663-${Date.parse(new Date())}`
5803 
5804       let formData = new FormData(); 
5805       formData.append("file", input.files[0]);
5806       const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, {
5807         method: "POST", 
5808         body: formData
5809       })
5810       const result = await response.json();
5811       if(result) {
5812         const url = result.url
5813         $("[data-properties=papan-logo]").val(url)
5814       }
5815 
5816       reader.readAsDataURL(input.files[0]);
5817     }
5818   }
5819 
5820   async function readURLAddress(input) {
5821     console.log(input, 'readURLAddress')
5822     if (input.files && input.files[0]) {
5823       let reader = new FileReader();
5824 
5825       reader.onload = function (e) {
5826         $('.photo-address').attr('src', e.target.result);
5827         $('.photo-address').show();
5828       }
5829       
5830       const type = 'image/jpeg'
5831       const name = input.files[0].name?.split('.')[0]
5832 
5833       let formData = new FormData(); 
5834       formData.append("file", input.files[0]);
5835       const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, {
5836         method: "POST", 
5837         body: formData
5838       })
5839       const result = await response.json();
5840 
5841       reader.readAsDataURL(input.files[0]);
5842 
5843       return result
5844     }
5845   }
5846 
5847   
5848 
5849   
5850   async function addToCartUang() {
5851     var productAddOnId1 = 42122101162199;
5852     var productAddOnId2 = 42122101194967;
5853     var product_id = 8144957800663
5854     const data = {
5855       items: [
5856           {
5857               quantity: $("#Quantity-" + productAddOnId1).val(),
5858               id: productAddOnId1,
5859               "properties": { "Time": $("#properties-time").val() }
5860           },
5861           {
5862               quantity: $("#Quantity-" + productAddOnId2).val(),
5863               id: productAddOnId2,
5864               "properties": { "Time": $("#properties-time").val() }
5865           }
5866       ]
5867     }
5868     await fetch(window.Shopify.routes.root + 'cart/add.js', {
5869       method: 'POST',
5870       headers: {
5871         'Content-Type': 'application/json'
5872       },
5873       body: JSON.stringify(data)
5874     })
5875     .then(response => {
5876       console.error('Sukses Buket Uang:', response);
5877       $(".form-flower").submit()
5878     })
5879     .catch((error) => {
5880       console.error('Error Buket Uang:', error);
5881       $(".form-flower").submit()
5882     });
5883   }
5884   
5885   async function saveCard(){
5886     let isCard = true
5887     const kartu_penerima = $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : ''
5888     const kartu_pengirim = $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : ''
5889     const kartu_ucapan = $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : ''
5890     const foto = $("#properties-photo").val()
5891     const video = $("#properties-video").val()
5892     const data = JSON.stringify({
5893       "id": qrID, 
5894       "penerima": $("#properties-nama-penerima").val(), 
5895       "kartu_penerima": kartu_penerima, 
5896       "kartu_ucapan": kartu_ucapan, 
5897       "kartu_pengirim": kartu_pengirim, 
5898       "foto": foto,
5899       "video": video, 
5900       "productId": "8144957800663", 
5901       "order_name": "", 
5902       "status": "Cart"
5903     })
5904 
5905     
5906   }
5907 
5908   async function additem(items){
5909     try {
5910       let formData = items
5911       if(items?.length) {
5912         formData = {
5913            'items': items
5914         };
5915       }
5916   
5917       const add = await fetch(window.Shopify.routes.root + 'cart/add.js', {
5918         method: 'POST',
5919         headers: {
5920           'Content-Type': 'application/json',
5921           'X-Requested-With':'xmlhttprequest' /* XMLHttpRequest is ok too, it's case insensitive */
5922         },
5923         body: JSON.stringify(formData)
5924       })
5925   
5926       const data = await add.json();
5927       return data
5928     } catch(err){
5929       console.log('Error additem', err)
5930     }
5931   }
5932 
5933   async function addons(){
5934     let items = []
5935     $(".addon-item").each(function(){
5936       const p = $(this)
5937       const props = p.next(".propsAddonSpotify")
5938       const id = $(this).data("id")
5939       const quantity = $(this).data("qty")
5940       const propId = $("#properties-time").val()
5941       let properties = {}
5942       if(id === 46067682607319) {
5943         const link = props.find(".spotifyLinkAddon").text()
5944         const photo = props.find(".spotifyFotoAddon").text()
5945         const song = props.find(".spotifySongAddon").text()
5946         const artist = props.find(".spotifyArtistAddon").text()
5947         properties = {
5948           id: propId,
5949           "Spotify Link": link !== '' ? link : '-',
5950           "Spotify Photo": photo !== '' ? photo : '-',
5951           "Spotify Song": song !== '' ? song : '-',
5952           "Spotify Artist": artist !== '' ? artist : '-',
5953           type: 'addon'
5954         }
5955       } else {
5956         properties = { 
5957           "id": propId, 
5958           "type": "addon"
5959         }
5960       }
5961       items.push({
5962         id, 
5963         quantity, 
5964         properties
5965       })
5966     })
5967     return items
5968   }
5969 
5970   async function propItems() {
5971     let props = {}
5972     $("[data-properties]").each(function(e){
5973       let elementType = this.tagName;
5974       const k = $(this).data("properties")
5975       if(k !== 'penerima' && k !== 'ucapan' && k !== 'pengirim' && k !== 'nama-penerima' && k !== 'alamat-penerima' && k !== 'telepon-penerima' && k !== 'company' && k !== 'province' && k !== 'foto-alamat' && k !== 'papan-logo') {
5976         const v = elementType === 'SELECT' ? $(this).find(":selected").val() : $(this).val();
5977         if(v !== '') {
5978           props[k] = v?.replace(/[\s\n]/g, '');
5979         }
5980       }
5981     })
5982     return props
5983   }
5984 
5985   async function showPopupCart(items){
5986     if(productType !== '') {
5987       console.log("clarity event " + productType + ' completeOrder')
5988       window.clarity("event", `${productType} completeOrder`)
5989       // window.clarity("set", productType, `completeOrder - ${productDate}`)
5990     }
5991     $("#popupCart").show()
5992     
5993       $(".propDeliveryCity").text($("#cities").val())
5994       $(".propDeliveryDate").text($("#propDeliveryDate").val())
5995       $(".propDeliveryTime").text($("#propDeliveryTime").val())
5996       $(".propDeliveryName").text($("[data-properties=nama-penerima]").val())
5997       $(".propDeliveryAddress").text($("[data-properties=alamat-penerima]").val())
5998       $(".propDeliveryPhone").text($("[data-properties=telepon-penerima]").val())
5999       $(".propDeliveryProv").text($("#province").val())
6000       $(".propDeliveryZip").text($("#zip").val())
6001       
6002     
6003 
6004     const addons = []
6005     if(items && items.length > 0) {
6006       for(let i = 1; i < items.length; i++) {
6007         const spotifyLink = items[i].properties['Spotify Link']
6008         const spotifyPhoto = items[i].properties['Spotify Photo']
6009         const spotifySong = items[i].properties['Spotify Song']
6010         const spotifyArtist = items[i].properties['Spotify Artist']
6011         const price = items[i].price / 100
6012         const props = spotifyLink ? `<div class="propsAddonCart row m-0">
6013                   <div class="col-12 col-lg-2"></div>
6014                   <div class="col-12 col-lg-10">
6015                     <p>
6016                       <span>spotify link</span>
6017                       <span>${spotifyLink}</span>
6018                     </p>
6019                     <p>
6020                       <span>Upload Photo</span>
6021                       <span>${spotifyPhoto}</span>
6022                     </p>
6023                     <p>
6024                       <span>song / playlist name</span>
6025                       <span>${spotifySong}</span>
6026                     </p>
6027                     <p>
6028                       <span>artist name</span>
6029                       <span>${spotifyArtist}</span>
6030                     </p>
6031                   </div>
6032                 </div>` : '';
6033         addons.push(`<div class="row m-0">
6034                   <div class="imgAddonCart col-2">
6035                     <img
6036                       width="43"
6037                       src="${items[i].image}"
6038                       alt=""
6039                     >
6040                   </div>
6041                   <div class="imgAddonTitlePrice col-10 align-self-center">
6042                     <div class="row justify-content-between m-0">
6043                       <div class="col-12 col-lg-8">
6044                         <h5>${items[i].title}</h5>
6045                       </div>
6046                       <div class="col-12 col-lg-4 text-lg-right">
6047                         <span>${rupiah.format(price)}</span>
6048                       </div>
6049                     </div>
6050                   </div>
6051                 </div>${props}`)
6052       }
6053     }
6054     // console.log(addons)
6055     if(addons.length === 0) {
6056       $(".itemAddonCart").hide()
6057       return
6058     }
6059     $(".toggleAddonCart h4").text(`add-ons (${items.length - 1})`)
6060     $(".wrapperItemAddonCart").html(addons)
6061   }
6062 
6063   const money = (money) => {
6064       return new Intl.NumberFormat('id-ID',
6065           { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 }
6066       ).format(money);
6067   }
6068 
6069   async function showNoteMoney() {
6070     let qty50k = $("[data-properties='Uang 50k']").val()
6071     let qty100k = $("[data-properties='Uang 100k']").val()
6072     const total50k = Number(qty50k) * 50000
6073     const total100k = Number(qty100k) * 100000
6074     const total_all = total50k + total100k
6075     $(".prop50k").html(`<span>${qty50k} Lembar: <strong class="pl-1">${money(total50k)}</strong></span>`)
6076     $(".prop100k").html(`<span>${qty100k} Lembar: <strong class="pl-1">${money(total100k)}</strong></span>`)
6077     $(".itemMoney").html(`<p>For the money arrangement, please transfer <strong>IDR ${money(total_all)}</strong> to <strong>Bank Mandiri 1020001234522 (PT Modern Mekar Abadi)</strong> and contact our <a href="https://ya.emo78-jago.store/" target="_blank" style="text-decoration: underline;
6077 color: #8d3f2d">Customer Service</a> to confirm with proof of payment.</p>`)
6078   }
6079 
6080   async function removeImage() {
6081     const data = JSON.stringify({
6082       "ID": $("#properties-properties-qrId").val(), 
6083       "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 
6084       "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 
6085       "Kartu Ucapan": $("[data-properties=ucapan]").val(), 
6086       "Nama Penerima": $("#properties-nama-penerima").val(), 
6087       "Order Number":"",
6088       "Status":"Product", 
6089       "Foto": "", 
6090       "Media": $("#properties-video").val(), 
6091       "Image": "8144957800663"
6092     })
6093     const remove = updateCard(data)
6094     if(remove) {
6095       $(this).hide()
6096       $("#properties-photo").val("-")
6097       $(".placeholder-image").show()
6098       $(".preview-image").attr("src", "")
6099     }
6100   }
6101 
6102   async function removeVideo() {
6103     const data = JSON.stringify({
6104       "ID": $("#properties-properties-qrId").val(), 
6105       "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 
6106       "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 
6107       "Kartu Ucapan": $("[data-properties=ucapan]").val(), 
6108       "Nama Penerima": $("#properties-nama-penerima").val(), 
6109       "Order Number":"",
6110       "Status":"Product", 
6111       "Foto": $("#properties-photo").val(), 
6112       "Media": "", 
6113       "Image": "8144957800663"
6114     })
6115     const remove = updateCard(data)
6116     if(remove) {
6117       $("#properties-video").val("-")
6118       $(this).find("img").hide()
6119       $(this).hide()
6120       $(this).prev("p").text("Add video to make it more special (optional)")
6121       $("#label-input-video").show()
6122       $("#label-input-video span").text("Upload Video")
6123       $(".case-video-preview p span").remove()
6124     }
6125   }
6126 
6127   async function loadItemOccasion(t, occasion) {
6128     const name = occasion?.replace('greeting-card-', '')
6129     $("#kartu-ucapan").val("")
6130     $("[data-occassion]").removeClass("selected")
6131     $("[data-properties=ucapan]").val("")
6132     $("#save-card").attr("disabled", true)
6133     t.addClass("selected")
6134     $("#show_note").attr("data-card-occassion", name)
6135     $.get(`https://outerbloom.com/collections/${occasion}/products.json`, function(data, status){
6136         const products = data.products
6137         const html = []
6138         for(let i = 0; i < products.length; i++) {
6139             const id = products[i].id
6140             const variantId = products[i].variants[0].id
6141             const img = products[i].images[0].src
6142             const title = products[i].title
6143             const price = products[i].variants[0].price
6144             const qty = products[i].variants[0].inventory_quantity
6145             const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'}${i === 0 ? ' selected' : ''}" data-id=${id}>
6146                 <label for="card-${variantId}"></label>
6147                     <div class="card-image">
6148                         <img src="${img}" alt="${title}" width="" height="" />
6149                     </div>
6150                     <div class="card-meta text-center">
6151                         <h5>${title}</h5>
6152                         <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p>
6153                         <input id="card-${variantId}" type="radio" name="id" value="${variantId}" data-price="${price}">
6154                     </div>
6155                 </div>`
6156             html.push(body)
6157         }
6158         const withoutCard = `<div class="item-card item-without-card">
6159                 <label for="card-0"></label>
6160                     <div class="card-image">
6161                         <img src="https://cdn.shopify.com/s/files/1/1589/6833/t/129/assets/without-card.png?v=1747632283" alt="Without card" width="" height="" />
6162                     </div>
6163                     <div class="card-meta text-center">
6164                         <h5>
6164Send without a greeting card</h5>
6165                         <input id="card-0" type="radio" name="id" value="" data-price="">
6166                     </div>
6167                 </div>`
6168         $("#itemCards .items-card").html(html.length === 0 ? '<p>No Item available</p>' : html.join(""))
6169     });
6170   }
6171         
6172   $(document).ready(function(){
6173 
6174     // Observer to auto-trigger addon loading when addon section becomes visible
6175     const addonObserver = new MutationObserver(function(mutations) {
6176       mutations.forEach(function(mutation) {
6177         const target = $(mutation.target)
6178         if(target.hasClass('purchaseAddon') && mutation.type === 'attributes' && mutation.attributeName === 'class') {
6179           if(!target.hasClass('hide')) {
6180             // Addon section just became visible, ensure items are loaded
6181             setTimeout(function() {
6182               if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
6183                 console.log("Auto-triggering addon load...")
6184                 $("[data-addon=upsell-all]").trigger("click")
6185               }
6186             }, 150)
6187           }
6188         }
6189       })
6190     })
6191     
6192     // Start observing addon section
6193     const addonSection = document.querySelector('.purchaseAddon')
6194     if(addonSection) {
6195       addonObserver.observe(addonSection, { 
6196         attributes: true, 
6197         attributeFilter: ['class'] 
6198       })
6199     }
6200 
6201     $(".purchasePopup").delegate("#addtocart-card", "click", async function(){
6202     
6203     $(this).find("span").addClass("loading")
6204     let isValid = true
6205     $(".formAddressPurchase [required]").each(function(){
6206       const t = $(this)
6207       const input = t.val()
6208       const p = t.parent()
6209       if(input === '') {
6210         p.addClass("error")
6211         isValid = false
6212       }
6213     })
6214 
6215     if(!isValid) {
6216       $(this).find("span").removeClass("loading")
6217       return
6218     }
6219     
6220     let items = []
6221     const mainProps = {
6222       
6223         "Delivery Date": $("#propDeliveryDate").val(),
6224         "Delivery Time": $("#propDeliveryTime").val() !== '' ? $("#propDeliveryTime").val() : '-' ,
6225         "Kota Pengiriman": $("#cities").val(),
6226         "Nama Penerima": $("[data-properties=nama-penerima]").val() !== '' ? $("[data-properties=nama-penerima]").val() : '-' ,
6227         "Alamat Penerima": $("[data-properties=alamat-penerima]").val() !== '' ? $("[data-properties=alamat-penerima]").val() : '-' ,
6228         "Kodepos": $("#zip").val() !== '' ? $("#zip").val() : '-' ,
6229         "Telepon Penerima": $("[data-properties=telepon-penerima").val() !== '' ? $("[data-properties=telepon-penerima").val() : '-' ,
6230       
6231       
6232         "Papan Nama Penerima": $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '-' ,
6233         "Papan Ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-' ,
6234         "Papan Nama Pengirim": $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '-' ,
6235         "Papan Logo": $("[data-properties=papan-logo]").val() !== '' ? $("[data-properties=papan-logo]").val() : '-' ,
6236         "Foto Alamat": $("[data-properties=foto-alamat]").val() !== '' ? $("[data-properties=foto-alamat]").val() : '-' ,
6237       
6238       
6239       "Province": $("#province").val() !== '' ? $("#province").val() : '-' ,
6240       "Country": $("#properties-kota-pengiriman-country").val() !== '' ? $("#properties-kota-pengiriman-country").val() : '-' ,
6241       "Shipping": $("#properties-shipping").val() !== '' ? $("#properties-shipping").val() : '-' ,
6242       "Company": $("[data-properties=company]").val() !== '' ? $("[data-properties=company]").val() : '-' ,
6243       "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-',
6244       "type": 'product'
6245     }
6246     const props = await propItems()
6247     properties = {...mainProps, ...props };
6248     const id = $("#productSelect").find('option:selected').val()
6249     console.log(id, 'main ID')
6250     const mainItem = {
6251       id: Number(id),
6252       quantity: 1,
6253       properties
6254     }
6255     items.push(mainItem)
6256     const cardId = $("#itemCards").find(".selected input").val()
6257     const cardItem = {
6258       id: Number(cardId),
6259       quantity: 1,
6260       properties: { "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', type: 'card' }
6261     }
6262     console.log(cardId, 'cardId')
6263     if(cardId) {
6264       items.push(cardItem)
6265     }
6266     const addon = await addons()
6267     if(addon) {
6268       for(let i = 0;
6268 i < addon.length; i++){
6269         items.push({
6270           id: addon[i].id,
6271           quantity: addon[i].quantity,
6272           properties: addon[i].properties
6273         })
6274       }
6275     }
6276     const addItems = await additem(items)
6277     console.log(addItems.items, 'add items')
6278     if(addItems) {
6279       $(this).find("span").removeClass("loading")
6280       disablePopup()
6281       showPopupCart(addItems.items)
6282       
6283       localStorage.setItem("items", JSON.stringify(addItems.items))
6284     }
6285   })
6286   
6287   $("#addtocart-cart .btn").click(async function(){
6288     const id = $("#productSelect").find('option:selected').val()
6289     const mainProps = {
6290       id: $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 
6291       type: 'product'
6292     }
6293     const props = await propItems()
6294     const properties = { ...mainProps, ...props };
6295     const items = {
6296       id: Number(id),
6297       quantity: 1,
6298       properties
6299     }
6300     const addItems = await additem(items)
6301     if(addItems) {
6302       showPopupCart(addItems.items)
6303       localStorage.setItem("items", JSON.stringify(addItems))
6304     }
6305   })
6306 
6307   $(".formAddressPurchase [required]").change(function(){
6308     const t = $(this)
6309     const p = t.parent()
6310     const v = t.val()
6311     if(v !== '') {
6312       p.removeClass("error")
6313     }
6314   })
6315 
6316   $("#save-card").click(async function(){
6317     const parent = $(this).parents(".sectionPurchase")
6318     const next = parent.next(".sectionPurchase")
6319     $(this).find("span").addClass("loading")
6320     const card = await saveCard()
6321     console.log(card, 'ssaveCCC')
6322     if(card?.status === 200 || card?.status === 201) {
6323       $(".scanCard").removeClass("hide")
6324       $(this).find("span").removeClass("loading")
6325       parent.addClass("hide")
6326       next.removeClass("hide")
6327       if(next.hasClass("purchaseAddon")) {
6328         $("[data-addon=upsell-all]").click()
6329         console.log("clarity event addons")
6330         window.clarity("event", `${productType} add-ons`)
6331         // Ensure addon items are loaded when entering addon popup
6332         setTimeout(function() {
6333           if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
6334             $("[data-addon=upsell-all]").trigger("click")
6335           }
6336         }, 100)
6337       }
6338       if(next.hasClass("purchaseAddress")) {
6339         $("#zip").select2()
6340       }
6341     }
6342   })
6343 
6344   $("#skip-card").click(async function(){
6345     $("#greetingCard [data-properties]").val("")
6346     $("#properties-photo").val("")
6347     $("#properties-video").val("")
6348     const parent = $(this).parents(".sectionPurchase")
6349     const next = parent.next(".sectionPurchase")
6350     parent.addClass("hide")
6351     next.removeClass("hide")
6352     // $("#itemCards").html("")
6353     removeImage()
6354     removeVideo()
6355     if(next.hasClass("purchaseAddon")) {
6356       $("[data-addon='upsell-all']").click()
6357       console.log("clarity event addons")
6358       window.clarity("event", `${productType} add-ons`)
6359       // Ensure addon items are loaded when entering addon popup
6360       setTimeout(function() {
6361         if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) {
6362           $("[data-addon='upsell-all']").trigger("click")
6363         }
6364       }, 100)
6365     }
6366     if(next.hasClass("purchaseAddress")) {
6367       $("#zip").select2()
6368     }
6369   })
6370 
6371   $("#msgCard").click(async function(){
6372       $(this).parent().addClass("loading")
6373       let occasion = $(".selected[data-occassion]").data("occassion")
6374       occasion = occasion?.replace("greeting-card-", "")
6375       const { data } = await getFetch(`${host}/api/card/template/occasion?name=${occasion}`);
6376       const d = data?.data
6377       for(let i = 0; i < d.length; i++) {
6378         const num = Math.floor(Math.random() * (d.length - 1 + 1) + 1);
6379         const greeting = d[num]?.Greeting
6380         $(".greetingCard textarea").val(greeting)
6381         $(this).parent().removeClass("loading")
6382       }
6383       $("#save-card").attr("disabled", false)
6384     })
6385 
6386   $(".sectionPurchaseBoard .next-purchase-button").click(function(){
6387     const parent = $(this).parents(".sectionPurchase")
6388     const next = parent.next(".sectionPurchase")
6389     parent.addClass("hide")
6390     next.removeClass("hide")
6391   })
6392 
6393   $("#editCard").click(function(){
6394     $(".custom-card").show()
6395     $(".preview-card").hide()
6396   })
6397 
6398   $("#first_name, #last_name").change(function(){
6399     const v = $(this).val()
6400     const first_name = $("#first_name").val()
6401     const last_name = $("#last_name").val() !== '' ? ' ' + $("#last_name").val() : ''
6402     $("[data-properties=nama-penerima]").val(first_name+last_name)
6403   })
6404 
6405   $("[data-occassion]").click(function(){
6406       const t = $(this)
6407       const p = t.parents(".sectionPurchase")
6408       // $(".greetingCard").addClass("disabled")
6409       const occasion = t.data("occassion")
6410       loadItemOccasion(t, occasion)
6411   })
6412 
6413   $("#itemCards").delegate(".item-card:not(.item-without-card) label", "click", function(){
6414       const id = $(this).parent(".item-card").data("id")
6415       const t = $(this).parent(".item-card")
6416       const target = t.find("input")
6417       const v = $('.item-card input[type="radio"]:checked').val();
6418       $("#itemCards .item-card").removeClass("selected")
6419       t.addClass("selected")
6420       $("#itemCards .item-card").find("input").attr("name", "")
6421       if(target.length > 0) {
6422           target.attr("name", "id[]")
6423           $("#properties-card").val(id)
6424           $(".greetingCard").removeClass("disabled")
6425           $("#skip-card").attr("disabled", false)
6426       } else {
6427           $("#properties-card").val("")
6428       }
6429   })
6430 
6431   $("#itemCards").delegate(".item-without-card label", "click", function(){
6432     const parent = $(this).parents(".sectionPurchase")
6433     const next = parent.next(".sectionPurchase")
6434     $(".greetingCard").addClass("disabled")
6435     parent.addClass("hide")
6436     next.removeClass("hide")
6437     $("[data-addon=upsell-all]").click()
6438     $("#zip").select2()
6439   })
6440 
6441   $("[data-properties=ucapan]").keyup(function(){
6442     const v = $(this).val()
6443     const p = $(this).parents(".sectionPurchase")
6444     $(".purchaseAddress").find(".greetingCard textarea").val(v)
6445     if(v.length > 3) {
6446       p.find(".next-purchase-button").attr("disabled", false)
6447     } else {
6448       p.find(".next-purchase-button").attr("disabled", true)
6449     }
6450   })
6451 
6452   $("[data-properties=penerima]").keyup(function(){
6453     const v = $(this).val()
6454     $(".purchaseAddress").find("[data-properties=penerima]").val(v)
6455   })
6456 
6457   $("[data-properties=pengirim]").keyup(function(){
6458     const v = $(this).val()
6459     $(".purchaseAddress").find("[data-properties=pengirim]").val(v)
6460   })
6461 
6462   $(document).click(function(e){
6463 
6464      if($(e.target).closest('.wrapperPopupCart').length != 0) return false;
6465      // $('#popupCart').fadeOut('slow');
6466     // location.reload()
6467   });
6468 
6469   $(".toggleAddonCart").click(function(){
6470     const p = $(this).parent(".itemAddonCart")
6471     p.toggleClass("open")
6472   })
6473 
6474   $(".btnViewCart").click(function(){
6475     window.location.href = "https://outerbloom.com/cart";
6476   })
6477 
6478   $(".btnViewCheckout").click(async function(){
6479     $(this).find("span").addClass("loading")
6480     let zip = $("#zip").val()
6481     const first_name = $("#first_name").val()
6482     const last_name = $("#last_name").val()
6483     const company = $("#company").val() !== '' ? $("#company").val() : ''
6484     const address1 = $("#delivery_address").val()
6485     const address2 = zip && zip !== '' ? zip?.split(' - ')[1] : ''
6486     zip = zip && zip !== '' ? zip?.split(' - ')[0] : ''
6487     const phone = $("#recipient_number").val()
6488     const city = $("#cities").val()
6489     const province = $("#province").val()
6490     const country = 'Indonesia'
6491     const ver = Date.parse(new Date())
6492     const params = `checkout[email]=&checkout[shipping_address][first_name]=${first_name}&checkout[shipping_address][last_name]=${last_name}&checkout[shipping_address][company]=${company}&checkout[shipping_address][address1]=${address1}&checkout[shipping_address][address2]=${address2}&checkout[shipping_address][city]=${city}&checkout[shipping_address][country]=${country}&checkout[shipping_address][province]=${province}&checkout[shipping_address][zip]=${zip}&checkout[shipping_address][phone]=${phone}&v=${ver}`
6493 
6494     const clear = await fetch(`/cart/clear.js`, {method: 'POST'})
6495     if(clear.status === 200) {
6496       const savedItem = window.localStorage.getItem("items");
6497       const items = JSON.parse(savedItem)
6498       const addItems = await additem(items)
6499       console.log(addItems, 'new addItems')
6500       if(addItems) {
6501         window.location.href = `https://outerbloom.com/checkout?${params}`;
6502       }
6503     }
6504   })
6505 
6506   $(".btnContinueShopping").click(function(){
6507     window.location.href = "https://outerbloom.com/";
6508   })
6509 
6510     if (isemo78) {
6511       $(".empty-state-card").click(function(){
6512         $("#input-foto").trigger("click")
6513       })
6514       $(".btn-upload-image").click(function(){
6515         $("#input-foto").trigger("click")
6516       })
6517       $("[for=input-video]").click(function(){
6518         $("#input-video").trigger("click")
6519       })
6520       $(".btn-upload-papan").click(function(){
6521         $("#logoPapan").trigger("click")
6522       })
6523     }
6524   
6525     $("[data-properties]").each(function(){
6526       const select = $(this).parents(".form-group").find("select")
6527       $(this).change(function(){
6528         const name = $(this).data("properties")
6529         const v = $(this).val()
6530         if (name == 'telepon-penerima') {
6531           let phone = v.replace(/[^0-9]/g, '')
6532           $(this).val(phone);
6533           $("#properties-telepon-penerima").val(phone)
6534           $('.iti__search-input').val('-') 
6535         } else {
6536           $("#properties-" + name).val(v)
6537         }
6538       })
6539       select.on("change", function(){
6540         const name = $(this).data("properties")
6541         const v = $(this).val()
6542         $("#properties-" + name).val(v)
6543       })
6544     })
6545 
6546     $("#show_note").click(function(){
6547       nameq = $("#properties-nama-penerima").val()
6548       dear = $("#properties-kartu-nama-penerima").val()
6549       card = $("[data-properties=ucapan]").val()
6550       sender = $("#properties-kartu-nama-pengirim").val()
6551       photo = $("#properties-photo").val()
6552       video = $("#properties-video").val()
6553       updateCard(nameq, dear, card, sender, photo, video, status)
6554     })
6555 
6556     $(".remove-image").click(function(e){
6557       e.preventDefault()
6558       $(this).find("img").show()
6559       removeImage()
6560     })
6561 
6562     $(".remove-media").click(function(e){
6563       e.preventDefault()
6564       $(this).find("img").show()
6565       removeVideo()
6566     })
6567 
6568     
6569 
6570     $("[data-delivery_method]").click(function(e){
6571       e.preventDefault()
6572       const t = $(this)
6573       const data = t.data("delivery_method")
6574       $("[data-delivery_method]").removeClass("selected")
6575       t.addClass("selected")
6576       $("#cities").val("")
6577       $("#properties-delivery-date").val("-")
6578       $("#deliveryDate button").removeClass("selected")
6579       $("#full-date").val("Full Calendar →")
6580       $("#propDeliveryDate").val("")
6581       const step3 = $("#step-3")
6582       if(data.match('PickUp')) {
6583         $(".selfpickup-point").show()
6584         step3.find("[data-finished=false]").hide()
6585         $("#panel-4").hide()
6586         step3.find("[data-finished=true]").show()
6587         $("#cities").attr("required", false)
6588         $("#form-group-city").hide()
6589         $("#row-delivery-time").hide()
6590         $("#propDeliveryTime, #properties-delivery-time, #properties-nama-penerima, #properties-alamat-penerima, #properties-kodepos, #properties-kodepos, #properties-telepon-penerima").val("-")
6591         $("#propDeliveryTime").attr("required", false)
6592         // $("#deliveryDate").find("button:first-child").addClass("stop")
6593         $(".form-selfpickup").show()
6594         $(".form-delivery").hide()
6595         $(".form-delivery").find("input, textarea, select").val("")
6596         $(".form-delivery").find("input, textarea, select").attr("required", false)
6597         $("#properties-shipping").val("0")
6598         $("#noteDeliveryDate").hide()
6599         $(".form-delivery .form-control").attr("required", false)
6600         $("#stepNav4").hide()
6601         
6602         $("#deliveryDate").find("button:nth-child(1)").addClass("stop")
6603         
6604         
6605         
6606         if(timeOfDay >= 16.01){
6607           $("#deliveryDate").find("button:nth-child(2)").addClass("stop")
6608         }
6609       } else {
6610         
6611         
6612         $("#deliveryDate").find("button:nth-child(1)").removeClass("stop")
6613         step3.find("[data-finished=false]").show()
6614         $("#panel-4").show()
6615         step3.find("[data-finished=true]").hide()
6616         $("#cities").attr("required", true)
6617         $(".selfpickup-point").hide()
6618         $("#form-group-city").show()
6619         $("#cities").val('').trigger('change');
6620         $("#properties-kota-pengiriman").val("-")
6621         
6622         $("#row-delivery-date, #row-delivery-time").show()
6623         $("#propDeliveryDate, #propDeliveryTime").attr("required", true)
6624         $("#deliveryDate").find("button").removeClass("stop")
6625         $(".form-selfpickup").hide()
6626         $(".form-delivery").show()
6627         $(".form-delivery").find("input, textarea, select").attr("required", true)
6628         $(".form-delivery [data-properties]").attr("readonly", false)
6629         $("#properties-kodepos").val("-")
6630         $("#properties-alamat-penerima").val("-")
6631         $(".form-delivery .form-control").attr("required", true)
6632         $(this).parents(".setup-content").attr("id", "step-1")
6633         
6634         $("#stepNav4").show()
6635       }
6636     })
6637 
6638     $("[name=selfpickup]").click(function(){
6639         const p = $(this).parents(".row-pickup")
6640         const pickupCity = $("input[name='selfpickup']:checked").val();
6641         const pickupAddress = $("input[name='selfpickup']:checked").data("address");
6642         const pickupZip = $("input[name='selfpickup']:checked").data("zip");
6643 
6644         $(".row-pickup").removeClass("selected")
6645         p.addClass("selected")
6646         
6647         $("#properties-kota-pengiriman").val(pickupCity)
6648         $("#province").val("Jakarta")
6649         $("#properties-alamat-penerima").val(pickupAddress)
6650         $("#properties-kodepos").val(pickupZip)
6651     })
6652 
6653     $("#cities").change(function(e){
6654       e.preventDefault()
6655       $(this).parent(".row").find("p.error").remove()
6656       $("#full-date").val("Full Calendar")
6657       $("#deliveryDate, #deliveryDateFull label ").show()
6658       $("#deliveryDateFull").removeClass("filled")
6659       $(".btnChangeDeliveryDate").addClass("hide")
6660       $("#full-date").prop('disabled', false);
6661       $("#stepNav2, #stepNav3, #stepNav4").removeClass("btn-success")
6662       $("#stepNav2, #stepNav3, #stepNav4").find("a").attr("disabled", true)
6663       const step3 = $("#step-3")
6664       $("#cityNote").remove()
6665       $("#noteDeliveryDate").hide()
6666       $("#noteDeliveryDate").empty()
6667       let v = $(this).val()
6668       let v2 = $('option:selected', this).attr('data-city');
6669       let v3 = $('option:selected', this).attr('data-province');
6670       let price = $('option:selected', this).attr('data-price');
6671       $("#country").val(v)
6672       $("#properties-kota-pengiriman").val(v)
6673       $("#properties-shipping").val(price)
6674       $("#deliveryDate button, #deliveryTime button, .calendarseasonal .button").removeClass("selected")
6675       $("#properties-delivery-date, #properties-delivery-time").val("-")
6676       $("#propDeliveryDate, #propDeliveryTime").val("")
6677       let note = $('option:selected', this).attr('data-note');
6678       if(v === 'Kota Lainnya') {
6679         $("#noteDeliveryDate").show()
6680         $("#noteDeliveryDate").text("Order akan segera dikirim. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.")
6681         $("#zip").attr("required", false)
6682         $("#zip").hide()
6683         $("#propDeliveryDate, #propDeliveryTime").attr("required", false)
6684         $("#propDeliveryDate, #properties-delivery-date, #propDeliveryTime, #properties-delivery-time").val("-")
6685         $("#row-delivery-date, #row-delivery-time").hide()
6686         $("#properties-shipping").val("")
6687         // $(this).parents(".setup-content").attr("id", "step-2")
6688         
6689       } else {
6690         $("#noteDeliveryDate").hide()
6691         $("#zip").attr("required", true)
6692         $("#zip").show()
6693         $("#row-delivery-date, #row-delivery-time").show()
6694         $("#propDeliveryDate, #propDeliveryTime").attr("required", true)
6695         $("#deliveryDate").find("button").removeClass("stop")
6696         // $(this).parents(".setup-content").attr("id", "step-1")
6697         
6698       }
6699       
6700       
6701       
6702       // if(v !== 'Jakarta') {
6703       //   $("[data-type=upsell]").hide()
6704       // } else {
6705       //   $("[data-type=upsell]").show()
6706       // }
6707       // $('.collection-addons')[0].swiper.update();
6708       
6709       
6710       getProvince(v)
6711       $("#zip").html(`<option value="">Choose Postal Code</option>`)
6712       renderZip(v, v2, v3)
6713       
6714       disabledSameDay()
6715       
6716 
6717       if(v !== 'Jakarta' && v !== 'Depok' && v !== 'Bekasi' && v !== 'Tangerang') {
6718         
6719         $("#cardOccasion, #navAddon, .collection-addons").hide()
6720         
6721         $("[data-addon=giftcard]").show()
6722         $("[data-addon=giftcard]").click()
6723         $("#itemAddons").show()
6724         $("#flower-step").addClass("nonjadetabek")
6725       } else {
6726         $("#cardOccasion, #navAddon, .collection-addons").show()
6727         $("[data-addon=all]").click()
6728         $("#flower-step").removeClass("nonjadetabek")
6729       }
6730       
6731         if(v !== '') {
6732           $("#personalizeBtn .btn").attr("disabled", false)
6733         } else {
6734           $("#personalizeBtn .btn").attr("disabled", true)
6735         }
6736       
6737     })
6738 
6739     $("#zip").change(function(e){
6740       let v = $(this).val()
6741       var city = $("#cities").find('option:selected');
6742       $("#properties-kodepos").val(v)
6743       if(city === 'Kota Lainnya') {
6744         $(this).attr("required", true)
6745         $("#recipient-address").val("")
6746       }
6747     })
6748 
6749     
6750       var minDate = +7
6751       
6752     
6753 
6754     $("#full-date").datepicker({
6755       minDate,
6756       dateFormat: 'Mdd_yy', //Nop22_2021,
6757       
6758       beforeShowDay: disabledays,
6759       
6760       onSelect: function (date) {
6761         $("#deliveryDate, #deliveryDateFull label ").hide()
6762         $("#deliveryDateFull").addClass("filled")
6763         $(".btnChangeDeliveryDate").removeClass("hide")
6764         $("#full-date").prop('disabled', true);
6765         $('#propDeliveryDate, #properties-delivery-date').val('Kirim_'+date);
6766         $(".date-full").addClass("selected")
6767         $(".date-single, .calendar-group").removeClass("selected")
6768         $("#propDeliveryTime").val('')
6769         $("#properties-delivery-time").val('-')
6770         $(".time-single").removeClass("selected")
6771         
6772         
6773       }
6774     });
6775 
6776     $(".btnChangeDeliveryDate").click(function(){
6777         $("#deliveryDate, #deliveryDateFull label ").show()
6778         $("#deliveryDateFull").removeClass("filled")
6779         $(".btnChangeDeliveryDate").addClass("hide")
6780         $("#full-date").prop('disabled', false);
6781     })
6782   
6783     $("#deliveryDate").delegate(".calendarbutton:not(.date-full)", "click", function(e){
6784       e.preventDefault()
6785       $(this).parents("#row-delivery-date").find("p.error").remove()
6786       const fulldate = $(this).data("fulldate")
6787       const day = $(this).data("day")
6788       const date = $(this).data("date")
6789       const month = $(this).data("month")
6790       const year = $(this).data("year")
6791       const off_pagi = $(this).data("offpagi")
6792       const off_siang = $(this).data("offsiang")
6793       const off_Malam = $(this).data("offMalam")
6794       $(".calendarbutton").removeClass("selected")
6795       $(this).addClass("selected")
6796       $("#propDeliveryDate, #properties-delivery-date").val(`Kirim_${month}${date}_${year}`)
6797       $("#propDeliveryTime").val('')
6798       $("#properties-delivery-time").val('-')
6799       $(".calendarbutton2").removeClass("selected")
6800       $("#full-date").val("Full Calendar")
6801 
6802       
6803       if(off_pagi && timeOfDay > off_pagi) {
6804         $("[data-time=Morning]").attr("disabled", true)
6805       } else {
6806         $("[data-time=Morning]").attr("disabled", false)
6807       }
6808       if(off_siang && timeOfDay > off_siang) {
6809         $("[data-time=Afternoon]").attr("disabled", true)
6810       } else {
6811         $("[data-time=Afternoon]").attr("disabled", false)
6812       }
6813       
6814 
6815       
6816     })
6817     
6818     if(today === 14 && timeOfDay > 17.00) {
6819       $("#deliveryDate button:first-child").attr("disabled", true)
6820     }
6821   
6822     $("#deliveryTime").delegate(".calendarbutton2", "click", function(e){
6823       e.preventDefault()
6824       const time = $(this).data("time")
6825       const date = $("#propDeliveryDate").val()
6826       if(date == '') {
6827         return alert('Silakan pilih tanggal terlebih dahulu')
6828       }
6829       $(".calendarbutton2").removeClass("selected")
6830       $(this).addClass("selected")
6831       $("#propDeliveryTime, #properties-delivery-time").val(`KirimJam_${date.replace('Kirim_','')}_${time}`)
6832     })
6833       
6834     $('textarea.has-limit, input.has-limit').keyup(function () {
6835       max = this.getAttribute("maxlength");
6836       let len = $(this).val().length;
6837       let limit = $(this).siblings(".limit");
6838       if (len > max) {
6839         alert('you have reached the limit');
6840       } else {
6841         limit.text(`${len}/${max}`);
6842       }
6843     });
6844     
6845     $("#button-action-step .btn").click(function(){
6846       $(this).find("span").text("Processing...");
6847     });
6848 
6849     $(".finishBtn").on('click', function() {
6850       $(this).addClass("is-adding");
6851       // $(this).click();
6852     });
6853 
6854     $('.setup-panel .nav-item a.btn-success').trigger('click');
6855 
6856     $("#button-action .btn").click(function(){
6857       $("#flower-step").addClass("block");
6858       $("#button-action").hide();
6859     });
6860         
6861     $(".close-how-order").click(function(){
6862       $("#flower-step").removeClass("block");
6863       $("#button-action").show();
6864     });
6865 
6866     $("#input-foto, #input-video").change(function(e){
6867       readURL(this);
6868     });
6869 
6870     $("#logoPapan").change(function(){
6871       readURLPapan(this);
6872     });
6873 
6874     $("#address-upload").change(async function(){
6875       const upload_address = await readURLAddress(this)
6876       if(upload_address) {
6877         const url = upload_address.url
6878         $(".props-address-upload").val(url)
6879         $(".form-address").addClass("address-uploaded")
6880         $(".form-address-upload").addClass("uploaded")
6881 
6882         $(this).parents(".form-group").siblings(".form-group").find("[required]").attr("required", false)
6883       }
6884     })
6885 
6886     $(".address-manualy").click(function(){
6887       $(".form-address-upload").removeClass("uploaded");
6888       $(".photo-address").hide();
6889       $(".form-address").removeClass("address-uploaded")
6890       $("#formAddressPurchase").find(".form-control").attr("required", true)
6891     });
6892 
6893     $(".case-video-preview").delegate(".replace-video", "click", function(){
6894       $("#input-video").trigger("click")
6895     })
6896 
6897     $('.date-single').click(function(e) {
6898       e.preventDefault();
6899       $('.date-single').removeClass('selected');
6900       $('#full-date').removeClass('selected');
6901       $(this).addClass('selected');
6902       $('#full-date').html('Full' + '<br/>' + 'Calendar');
6903     });
6904     $('#full-date').click(function(e){
6905       e.preventDefault();
6906       $('.date-single').removeClass('selected');
6907       $(this).addClass('selected');
6908     });
6909     
6910     // $("tr").each(function(){
6911     //   if($(this).text().match('SKU')) {
6912     //     $(".sku-product").html($(this).parents("table").html())
6913     //   }
6914     // })
6915     
6916     $("#product-image").scroll(function(){
6917       $(".desc-add").each(function(){
6918         const img = $(this).find("img")
6919         const src = img.data("src")
6920         img.attr("src", src)
6921       })
6922     })
6923 
6924     $(".product-fixed").hide()
6925     
6926     let target = $("#personalizeBtn")
6927     
6928 
6929     $(".product-meta").scroll(function() {
6930         if ($(window).scrollTop() >= target.offset().top ) {
6931             $(".product-fixed").addClass("show")
6932         } else {
6933           $(".product-fixed").removeClass("show")
6934         }
6935     });
6936 
6937     $(window).scroll(function() {
6938         if ($(window).scrollTop() >= target.offset().top ) {
6939             $(".product-fixed").addClass("show")
6940         } else {
6941           $(".product-fixed").removeClass("show")
6942         }
6943     });
6944   });
6945 </script>
6945
6946 
6947   
6947<script>
6948     //
6949   </script>
6949
6950 
6951 
6951<script>
6952   $(document).ready(function(){
6953     $('table tr td').each(function(){
6954       var texto = $(this).text();
6955       var nextto = $(this).next("td");
6956       var sku = $("#data-sku").val()
6957       if(texto == 'SKU'){
6958         nextto.text(sku)
6959       }
6960     });
6961     
6962     $(".stamped-summary-actions-newquestion").text("Tulis Pertanyaan");
6963     $(".stamped-summary-actions-newreview").text("Tulis Review");
6964     $("#tab-questions").text("Pertanyaan");
6965     
6966     $(".freeship .icon").click(function(){
6967       $(".fs-content").slideToggle();
6968       $(this).parents(".freeship").toggleClass("expand");
6969     });
6970     
6971     var $easyzoom = $('.easyzoom').easyZoom();
6972     // Setup thumbnails example
6973     var api1 = $easyzoom.filter('.easyzoom--with-thumbnails').data('easyZoom');
6974     $('.thumbnails').on('click', 'a', function(e) {
6975       var $this = $(this);
6976       e.preventDefault();
6977       // Use EasyZoom's `swap` method
6978       api1.swap($this.data('standard'), $this.attr('href'));
6979     });
6980 
6981     $('#playerID').click(function(){
6982       var videoURL = $('#VdoID').attr('src'),
6983           dataplay = $('#VdoID').attr('data-play');
6984 
6985       //for check autoplay
6986       //if not set autoplay=1
6987       if(dataplay == 0 ){
6988         $('#VdoID').attr('src',videoURL+'?autoplay=1');
6989         $('#VdoID').attr('data-play',1);
6990       }
6991       else{
6992         var videoURL = $('#VdoID').attr('src');
6993         videoURL = videoURL.replace("?autoplay=1", "");
6994         $('#VdoID').prop('src','');
6995         $('#VdoID').prop('src',videoURL);
6996 
6997         $('#VdoID').attr('data-play',0);
6998       }
6999 
7000     });
7001     
7002     $(".product-photo-thumb-video").click(function(e){
7003       e.preventDefault();
7004 
7005       var newEmbed = $(this).attr('href');
7006       $("#featured-image-product").addClass("img-video");
7007       $("#ProductPhotoImg").hide();
7008       $("#featured-image-product .video").show();
7009       $("#featured-image-product iframe").attr('src', newEmbed);
7010       $("#VdoID")[0].src += "&autoplay=1";
7011     });
7012     $(".product-single__thumbnail").click(function(evt){
7013       evt.preventDefault();
7014       $("#featured-image-product").removeClass("img-video");
7015       $("#ProductPhotoImg").show();
7016       $("#featured-image-product .video").hide();
7017       $("#featured-image-product iframe").attr('src', '');
7018     });
7019     
7020     if($('#product-meta .short-desc > div').length >= 1){
7021       //console.log('div detected')
7022       var replacer = $('#product-meta .short-desc > div').contents();
7023       $('#product-meta .short-desc > div').replaceWith(replacer);
7024 
7025       var cAssured =  $('.c-assured').detach();
7026       cAssured.insertAfter('.meta-sds .stock-info');
7027     }
7028 
7029     
7030     
7031     $(".heading-toggle").click(function(){
7032       $(this).parent().toggleClass("open")
7033       
7034     });
7035   });
7036 </script>
7036
7037 
7038 
7039   
7039<script type="application/json" id="ProductJson-Product">
7040         
7041         {"id":8144957800663,"title":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"}
7042   </script>
7042
7043   
7044     
7044<script type="application/json" id="VariantJson-Product">
7045       [
7046         
7047           {
7048              "incoming": false,
7049              "next_incoming_date": null
7050           }
7051         
7052       ]
7053     </script>
7053
7054   
7055 
7056 
7057 
7058 </div>
7059 
7060 
7061 
7061<script src="//outerbloom.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js" type="text/javascript"></script>
7061
7062 <style>
7063     .stamped-review-header-title,
7064     .stamped-review-header .author,
7065     .stamped-review-content-body,
7066     .stamped-sort-select,
7067     .stamped-review-header .verified-badge[data-type=buyer]:after,
7068     .stamped-review-header-byline,
7069     .stamped-review-reply-body {font-size: 14px!important;font-family: 'Barlow',sans-serif!important;}
7070     .stamped-review {margin-bottom: 0;}
7071     .stamped-review-body {padding-left: 65px;}
7072     .stamped-review:first-child {padding-top: 25px;}
7073     .stamped-review-content {clear: none;}
7074     .stamped-review-reply {margin: 15px 0 0 65px;background: #f2f2f2;border-left: none;}
7075     .stamped-review-reply-body {padding-left: 65px;}
7076     .stamped-review-header .author {text-transform: capitalize;}
7077     .stamped-questions .stamped-review-content {padding-left: 65px;}
7078 
7079     .stamped-pagination {margin: 20px 0 0;}
7080     .stamped-pagination li {position: initial!important;display: inline-block;position: relative;vertical-align: middle;text-decoration: none;-webkit-tap-highlight-color: transparent;-webkit-box-flex: 0;-moz-box-flex: 0;-ms-flex: 0 0 auto;flex: 0 0 auto;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;background: 0 0;text-transform: none;color: #33373D;font-weight: 400;-webkit-transition: background .1s ease,box-shadow .1s ease,color .1s ease;transition: background .1s ease,box-shadow .1s ease,color .1s ease;border: 1px solid #ccc;border-right: none;margin-bottom: 0;}
7081     .stamped-pagination li a {color: #121212;padding: 13px 18px;vertical-align: middle;display: block;}
7082     .stamped-pagination li.active a {background-color: #ddd;font-weight: 400;}
7083     .stamped-pagination li:hover a {background: #ddd;}
7084     .stamped-pagination .next {border-right: 1px solid #ccc;}
7085     .stamped-pagination li:first-child {border-top-left-radius: 5px;border-bottom-left-radius: 5px;}
7086     .stamped-pagination li:last-child {border-top-right-radius: 5px;border-bottom-right-radius: 5px;}
7087 
7088     #stamped-pagination-question span.page {display: inline-block;border: 1px solid #ccc;width: 47px;}
7089     #stamped-pagination-question span {font-size: 14px;}
7090     #stamped-pagination-question .page.active {padding: 12px;font-weight: 400;background: #ddd;}
7091     #stamped-pagination-question a, #stamped-pagination-question .page.active {color: #121212;padding: 13px 18px;vertical-align: middle;display: inline-block;}
7092     .stamped-pagination-deco {color: #121212;padding: 13px 18px;width: 47px;vertical-align: middle;display: inline-block;border: 1px solid #ccc;padding: 12px;}
7093     .stamped-pagination-prev, .stamped-pagination-next {position: inherit;}
7094     .stamped-pagination-prev a, .stamped-pagination-next a {width: auto!important;border: 1px solid #ccc;}
7095 
7096     @media (max-width: 480px){
7097       .stamped-review-reply {margin-left: 0!important;}
7098       select.stamped-sort-select {font-size: 13px!important;}
7099     }
7100 
7101   #product-reviews .stamped-summary-ratings, #product-reviews .stamped-summary-actions, .stamped-content {
7102       display: block !important;
7103   }
7104 </style>
7105 
7105<script>
7106     var selectCallback = function(variant, selector) {
7107       timber.productPage({
7108         money_format: "Rp {{amount_no_decimals}}",
7109         variant: variant,
7110         selector: selector
7111       });
7112     };
7113 
7114     jQuery(function($) {
7115       new Shopify.OptionSelectors('productSelect', {
7116         product:
7117 
7118 
7119 
7120 
7121 
7122 {"id":8144957800663,"title":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"},
7123         onVariantSelected: selectCallback,
7124         enableHistoryState: true
7125       });
7126 
7127       // Add label if only one product option and it isn't 'Title'. Could be 'Size'.
7128       
7129 
7130       // Hide selectors if we only have 1 variant and its title contains 'Default'.
7131       
7132         $('.selector-wrapper').hide();
7133       
7134     });
7135 </script>
7135
7136 
7137 
7138 
7139   
7139<script type="application/ld+json">
7140     {
7141     "@context": "http://schema.org",
7142     "@type": "Product",
7143 "offers": {
7144 "@type": "Offer",
7145 "availability":"https://schema.org/InStock",
7146 "price": 25000,
7147 "priceValidUntil": "05-10-2026",
7148 "priceCurrency": "IDR",
7149 "url": "https://heartysfoodhall.co.uk/"
7150 },
7151 "brand": {
7152 "@type": "Brand",
7153 "name": "EMO78"
7154 },
7155 "sku": "8144957800663",
7156 "gtin13": "Jawa",
7157 "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026",
7158 "description": "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik",
7159 "category": "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik",
7160 "url": "https://heartysfoodhall.co.uk/",
7161 "image": {
7162 "@type": "ImageObject",
7163 "url": "https://heartysfoodhall.co.uk/",
7164 "image": "https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png",
7165 "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026",
7166 "width": 1024,
7167 "height": 1024
7168 }
7169     }
7170   </script>
7170
7171 
7172 
7173 
7174 
7175         
7176 
7176<script id="bss-ltap-hide-price" type="text/javascript" >
7177 !function(e){var t={};function o(r){if(t[r])return t[r].exports;var c=t[r]={i:r,l:!1,exports:{}};return e[r].call(c.exports,c,c.exports,o),c.l=!0,c.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var c in e)o.d(r,c,function(t){return e[t]}.bind(null,c));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";function r(e){e.ltsp={},function(e){e.ltsp.quickView=function(){document.querySelectorAll(".quickview-button").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementById("add-to-cart-quickview-form");if(e){let t=e.querySelector(".groups-btn");t&&t.remove();let o=e.querySelector(".pieces");o&&o.remove();let r=e.querySelector(".bsscommerce-ltsp-message");r&&r.remove()}if(e=document.querySelector("[data-quickview-modal] .halo-modal-body"),e){let t=e.querySelector(".quantity");t&&t.remove()}}),1e3)}))})),document.querySelectorAll(".shop-now-button").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementById("ShopNowContainer");if(e){let t=e.querySelector("#AddToCart");t&&t.remove()}}),2e3)}))})),document.querySelectorAll(".collection__filter").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-grid-item");if(o){let e=o.querySelector(".btn--quick-view");e&&e.remove()}}}),1500)}))})),document.querySelectorAll(".btn--icon.quick-product__btn").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-grid__content");if(o){let e=o.querySelector(".payment-buttons");e&&e.remove()}}}),2e3)}))})),document.querySelectorAll(".product-facet__aside").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-item");if(o){let e=o.querySelector('form[action="/cart/add"]');e&&e.remove();let t=o.querySelector(".product-item__quick-form");t&&t.remove()}}}),1500)}))})),document.querySelectorAll(".pagination").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-item");if(o){let e=o.querySelector('form[action="/cart/add"]');e&&e.remove();let t=o.querySelector(".product-item__quick-form");t&&t.remove()}}}),1800)}))})),document.querySelectorAll(".collection-filters__sort").forEach((function(e){e.addEventListener("change",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".indiv-product");if(o){let e=o.querySelector('form[action="/cart/add"]');e&&e.remove()}}}),1500)}))}
7177)),document.querySelectorAll(".slideout__drawer-right, .sidebar_leftside_wapper, .filtering__results").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-index");if(o){let e=o.querySelector(".js-quickview-trigger");e&&e.remove()}}}),1500)}))})),document.querySelectorAll("a.product-loop__quickview").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".large--one-half");if(o){let e=o.querySelector(".quick-smart-wrapper");e&&e.remove();let t=o.querySelector("#quantity-container");t&&t.remove();let r=o.querySelector(".js-prod-show-soldout");r&&r.remove()}}}),2e3)}))})),document.querySelectorAll(".quick-product__btn").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-single__meta");if(o){let e=o.querySelector("div.payment-buttons");e&&e.remove()}}}),1e3)}))})),document.querySelectorAll(".btn--load-more").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".grid-view-item");if(o){let e=o.querySelector(".quick-add-button");e&&e.remove()}}}),1e3)}))})),document.querySelectorAll(".quick_shop").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product_section");if(o){let e=o.querySelector(".product_form .shopify-product-form .purchase-details"),t=o.querySelector(".product__details .modal_price .price-ui");e&&e.remove(),t&&t.remove()}}}),1e3)}))})),document.querySelectorAll(".qs-button ").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-info-main");if(o){let e=o.querySelector(".qty-box");e&&e.remove();let t=o.querySelector(".btn.btn-cart");t&&t.remove();let r=o.querySelector(".product-single__sale-price");r&&r.remove();let c=o.querySelector(".product-addto-links");c&&c.remove()}}}),1e3)}))}));let e=document.querySelector("a[data-js-cart-icon]");if(e&&e.addEventListener("click",(function(){let e=document.querySelector(".quick-cart__control");e&&e.remove();let t=document.querySelector(".quick-cart__item-right");t.childNodes[3]&&(t.childNodes[3].innerHTML="Login to seen price")})),document.querySelectorAll(".quick-add-button-variants").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest("#AddToCartForm");if(o){let e=o.querySelector(".paymentButtonsWrapper");e&&e.remove()}}}),1e3)}))})),document.querySelectorAll(".product-thumbnail__quickshop-button").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-details");if(o){let e=o.querySelectorAll(".bsscommerce-ltsp-message");e.length>1&&e.forEach((function(e,t){t>0&&e.remove()}));let t=o.querySelector(".product-form__cart-buttons");t&&t.remove();let r=o.querySelector(".product-form__quantity-box-wrapper");r&&r.remove()}}}),800)}))})),"b2b-dbodhi-singapore.myshopify.com"===window.Shopify.shop){let e=0;const t=window.location.pathname.includes("/collections");let o=!0;const r=function(){const e=setInterval((function(){let e=document.querySelectorAll(".thb-product-detail.product .bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t],r=o.closest(".thb-product-detail.product");if(r){let e=r.querySelector(".product-form");e&&e.remove()}r=o.closest("del"),r&&o.remove()}}),500);setTimeout(()=>{clearInterval(e)},6e3)},c=function(){const c=window.pageYOffset||document.documentElement.scrollTop;(c>e||!t||o)&&(document.querySelectorAll(".product-card-quickview").forEach((function(e){e.removeEventListener("click",r),e.addEventListener("click",r)}
7177)),o=!1),e=c<=0?0:c};if(c(),t){const e=function(){const e=c;let t;return()=>{clearTimeout(t),t=setTimeout(()=>{e.apply(this)},3e3)}};window.addEventListener("scroll",e())}}}}(e),function(e){e.ltsp.removeElementByLTSPMessage=function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message"),t=[],o=window.Shopify.shop;for(let r=0;r<e.length;r++){let c=e[r],l=[".grid-product__on-sale",".product-unit-price",".product-price-unit",".grid-link__sale_price","s",".price__compare",".product__compare-price",".price__unit",".card__price--regular",".sale-tag",".compare-price",".old-price",".savings",".was_price",".price--compare",".price-compare",".was"];if("stark-hockey.myshopify.com"===o){const e=c.closest(".product-index");if(e){const t=e.querySelector(".product-modal");t&&t.remove()}continue}let s=c.closest(".product-parent");if(s){let e=s.querySelector("form .tt-btn-addtocart");e&&t.push(e);let o=s.querySelector(".tt-btn-quickview");o&&t.push(o)}if(s=c.closest(".ProductItem"),s){let e=s.querySelector(".quickshop-btn");if(e&&t.push(e),"shrimptoncouture-com.myshopify.com"===o){let e=s.querySelector(".ProductItem__PriceList");e&&e.classList.remove("ProductItem__PriceList")}}if(s=c.closest(".product-item--vertical"),s){if("sparklinbluewholesale.myshopify.com"===o){let e=s.querySelector(".product-item__info .product-item__price-list");e&&t.push(e)}let e=s.querySelector(".product-item__info .product-item__action-button");e&&t.push(e),e=s.querySelector(".product-form__payment-container"),e&&t.push(e)}if(s=c.closest(".card-wrapper.underline-links-hover"),s&&"friends-forever-pets.myshopify.com"===o){let e=s.querySelector(".card__content .quick-add");e&&t.push(e);let o=s.querySelector(".card-information .price__sale .price-item.price-item--regular");o&&t.push(o)}if(s=c.closest(".modal_price"),s&&window.Shopify&&"casa-barba.myshopify.com"!==window.Shopify.shop&&"prideandgroom-wholesale.myshopify.com"!==window.Shopify.shop){let e=s.querySelector(".price-ui");e&&t.push(e)}if(s=c.closest(".info.has-padding-top"),s){let e=s.querySelector(".compare-at-price");e&&t.push(e)}if(s=c.closest(".product-thumbnail__price.price"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest(".search-result__description"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest(".product__price"),s){let e=s.querySelector("[data-product-price][bss-custom-ltsp-attribute]");e&&t.push(e)}if(s=c.closest("#template-product"),s){let e=s.querySelector(".product-form.cart-bar__form");e&&t.push(e)}if("showroom1-ducanero.myshopify.com"===o){if(s=c.closest(".product-area")||c.closest(".price"),s){let e=s.querySelector(".price-area")||s.querySelector(".theme-money");e&&t.push(e)}}else if(s=c.closest(".product-area__details"),s){let e=s.querySelector(".product-detail__form__action");e&&t.push(e);let o=s.querySelector(".quantity-wrapper");o&&t.push(o)}if("quincaillerie-euroline.myshopify.com"===o&&(s=c.closest(".product-form__info-content"),s)){let e=s.querySelector(".price-list");e&&t.push(e)}if(s=c.closest(".product-form__buttons"),s&&t.push(s),s=c.closest(".product-wrap-2"),s){let e=s.querySelector(".product-action-2");e&&t.push(e)}if(s=c.closest(".span6"),s){let e=s.querySelector(".purchase>input"),o=s.querySelector(".price-container>#price-preview"),r=s.querySelector(".price-container>.vat-price");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product__page"),s){let e=s.querySelector(".quantity-selector");e&&t.push(e)}if(s=c.closest(".product_details_info"),s){let e=s.querySelector(".pro-detail-button"),o=s.querySelector(".price-box");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".product-content"),s){let e=s.querySelector(".product-action");e&&t.push(e)}if(s=c.closest(".product-view .single-product-wrap"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".collection-category .owl-stage .owl-item"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".product__details"),s){let e=s.querySelector(".product-wrap .thumbnail-overlay .info .price ");e&&t.push(e);let o=s.querySelector(".product-details .price  .current_price .money ");o&&t.push(o)}if(s=c.closest(".product_row"),s){let e=s.querySelector(".three-fourths .info .price ");e&&t.push(e)}if(s=c.closest(".thubnail-desc"),s){let e=s.querySelector(".quatity-stock");e&&t.push(e);let o=s.querySelector(".Payment_button");o&&t.push(o)}if(s=c.closest(".single-ponno-product"),s){let e=s.querySelector(".pro-actions-link");e&&t.push(e);let o=s.querySelector(".pro-add-cart");o&&t.push(o)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector("div.product-form__controls-group.product-form__controls-group--submit");e&&e.setAttribute("style","visibility:hidden")}if("homewarerus.myshopify.com"!=window.Shopify.shop&&(s=c.closest(".product-item__info"),s)){let e=s.querySelector("form.product-item__action-list.button-stack");e&&e.remove()}
7177if("bluebasketb2b.myshopify.com"===window.Shopify.shop){if(s=c.closest(".card-information"),s){let e=s.querySelector(".price__sale .price-item--sale.sale-percentage");e&&t.push(e)}if(s=c.closest("tr.cart-item[id*=Cart]"),s){let e=s.querySelector(".cart-item__quantity");e&&e.remove();let t=s.querySelector(".cart-item__totals");t&&t.remove()}}if(s=c.closest(".product-form"),s){let e=s.querySelector(".quantity-submit-row__submit");e&&e.remove();let o=s.querySelector(".product-form__info-list .product-form__info-item.product-form__info-item--quantity .product-form__info-content .quantity-selector.quantity-selector--product");o&&t.push(o)}if(s=c.closest(".product-grid__detail"),s){let e=s.querySelector(".product-form-block form");e&&e.remove()}if(s=c.closest(".tab-body"),s){if(s.querySelector(".purchase-section button, .btn.add-to-cart")){let e=setInterval((function(){let e=document.querySelector(".tab-body .purchase-section button, .tab-body .btn.add-to-cart"),t=document.querySelector(".swym-button-bar.swym-wishlist-button-bar");e&&e.remove(),t&&t.remove()}),200);setTimeout((function(){clearInterval(e)}),1e4)}}if(s=c.closest(".item.relative.product-id.item-row"),s){let e=s.querySelector(".quantity.form");e&&e.remove()}if(s=c.closest(".product-form"),s){let e=s.querySelector(".buy-buttons-row");e&&t.push(e)}if(s=c.closest(".product-grid-item"),s){let e=s.querySelector(".btn--quick-view");e&&t.push(e)}if(s=c.closest(".featured__collection-product"),s){let e=s.querySelector(".js-quickview-trigger");e&&t.push(e)}if(s=c.closest(".product-index"),s){let e=s.querySelector(".js-quickview-trigger");e&&t.push(e)}if(s=c.closest(".product-bottom"),s){let e=s.querySelector(".quantity-selector, .product-add");e&&t.push(e)}if(s=c.closest(".js-sticky-cart"),s){let e=s.querySelector(".sticky-add");e&&t.push(e)}if(s=c.closest(".product-details"),s){let e=s.querySelector(".shopify-payment-button");e&&t.push(e);let r=s.querySelector(".payment-and-quantity__add");r&&t.push(r);let c=s.querySelector(".price__compare-at.visible");c&&"coventa-demo.myshopify.com"===o&&t.push(c)}if(s=c.closest(".product-block__inner"),s){let e=s.querySelector(".quick-buy");e&&t.push(e)}if(s=c.closest(".content-summary"),s){let e=s.querySelector("form.cart");e&&t.push(e)}if(s=c.closest('div[data-pf-type="Section"]'),s){let e=s.querySelector('div[data-pf-type="ProductQuantity"]');e&&t.push(e);let o=s.querySelector('button[data-pf-type="ProductATC"]');o&&t.push(o)}if(s=c.closest(".pc-inner"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e);let o=s.querySelector(".quick_shop");o&&t.push(o)}if(s=c.closest(".product-info-inner"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}if(s=c.closest(".product-details-inline"),s){let e=s.querySelector(".product-quantity");e&&t.push(e)}if(s=c.closest(".product-card"),s){let e=s.querySelector(".js-grid-cart");e&&t.push(e);let o=s.querySelector(".card-header .card-button-hover");o&&t.push(o);let r=s.querySelector(".product-card__quick-buy");r&&t.push(r);let c=s.querySelector("compare-at-price");c&&t.push(c);let l=s.querySelector(".product-card__badge-list");l&&t.push(l)}if(s=c.closest(".product__info"),s){let e=s.querySelector(".product-form__buy-buttons button");e&&t.push(e);let o=s.querySelector(".product-form__quantity");o&&t.push(o)}if(s=c.closest(".product-sticky-form__inner"),s){let e=s.querySelector(".product-sticky-form__payment-container");e&&t.push(e)}if("homewarerus.myshopify.com"!=window.Shopify.shop&&(s=c.closest(".product-item"),s)){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e);let o=s.querySelector(".product-item__quick-form");o&&t.push(o)}if(s=c.closest(".shopify-product-form"),s){let e=s.querySelector("div.quantity");e&&t.push(e)}if(s=c.closest(".product-body"),s){let e=s.querySelector(".product-cta-wrapper");e&&t.push(e)}if(s=c.closest(".tt-product-single-info"),s){let e=s.querySelector("form .btn-addtocart");e&&t.push(e);let o=s.querySelector('form[action*="/cart/add"]');o&&t.push(o)}if(s=c.closest(".product-details-wrapper"),s){let e=s.querySelector(".product-form");e&&t.push(e)}if(s=c.closest(".product-inner"),s){let e=s.querySelector(".product-card-interactions");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".add-to-cart");if(e)if(window.Shopify&&"bundlecomph.myshopify.com"===window.Shopify.shop){e.disabled=!0;let o=s.querySelector(".payment-buttons"),r=s.querySelector(".shopify-payment-button");o&&o.classList.remove("payment-buttons"),r&&t.push(r)}else t.push(e)}if(s=c.closest(".grid-view-item"),s){let e=s.querySelector(".thumbnail-buttons");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".product-form:not(.product-form-product--static):not(.product-form-product-template)");e&&t.push(e)}if(s=c.closest(".pf-product-form"),s){let e=s.querySelector(".sc-lkgURy");e&&t.push(e);let o=s.querySelector(".sc-gzcbmu");o&&t.push(o);let r=s.querySelector(".add-to-cart");r&&t.push(r)}if(s=c.closest(".large--one-half"),s){let e=s.querySelector(".product-smart-wrapper");e&&t.push(e);let o=s.querySelector('div.btn[onmouseup="showProductsDesigner(this)"]');o&&t.push(o);let r=s.querySelector("button.js-prod-show-soldout");r&&t.push(r)}if(s=c.closest("#add-to-cart-form"),s)if("led-signcity.myshopify.com"===o){let e=s.querySelector(".atc-btn");e&&t.push(e);let o=s.querySelector(".price");o&&o.classList.remove("price")}else{let e=s.querySelector(".groups-btn");e&&t.push(e),t.push(c)}
7177if(s=c.closest(".product-shop"),s&&"led-signcity.myshopify.com"!==o){let e=s.querySelector(".groups-btn");e&&t.push(e)}if(s=c.closest(".who-qof-table"),s&&s.classList.add("bsscommerce-hide-price"),s=c.closest(".price-sale"),s){let e=s.querySelector(".old-price");e&&t.push(e);let o=s.querySelector("em");o&&(o.innerHTML="")}if(s=c.closest(".product-details"),s){let e=s.querySelector(".action");e&&t.push(e)}if(s=c.closest(".product_section"),s){let e=s.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e);let o=s.querySelector(".sale.savings");o&&t.push(o);let r=s.querySelector(".purchase-details button.button--add-to-cart");r&&t.push(r);let c=s.querySelector(".purchase-details .purchase-details__quantity.product-quantity-box");c&&t.push(c);let l=s.querySelector(".product__details .modal_price .price-ui");l&&t.push(l)}if(s=c.closest(".quick-shop-style--inline"),s){let e=s.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e)}if(s=c.closest(".product-details"),s){let e=s.querySelector("small em");e&&t.push(e)}if(s=c.closest(".gt_product-body"),s){let e=s.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=s.querySelector(".gt_product-saved");o&&t.push(o);let r=s.querySelector(".gt_product-price--compare");r&&t.push(r)}if(s=c.closest(".gt_product_content"),s){let e=s.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=s.querySelector(".gt_product-price--compare");o&&t.push(o)}if(s=c.closest(".gt-single-product"),s){let e=s.querySelector("div.gt_method_addToCart");e&&t.push(e);let o=s.querySelector(".gt_product-price--compare");o&&t.push(o)}if(s=c.closest("#cont-form"),s){let e=s.querySelector("form .cont-add-btns");e&&t.push(e)}if(s=c.closest(".theiaStickySidebar"),s){let e=s.querySelector(".variations_button");e&&t.push(e)}if(s=c.closest(".product--price-wrapper"),s){let e=s.querySelector(".product--compare-price");e&&t.push(e)}if(s=c.closest(".product-submit"),s){let e=s.querySelector(".payment-buttons-container");e&&t.push(e)}if(s=c.closest(".product-price"),s){let e=s.querySelector(".product-price-compare");e&&t.push(e)}if(s=c.closest(".product-list-item"),s){let e=s.querySelector(".original"),o=s.querySelector(".product-list-item-badge");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".productitem"),s){let e=s.querySelector(".productitem--action");e&&t.push(e);let o=s.querySelectorAll(".bss-ltsp-to-remove");if(o.length)for(let e of o)t.push(e)}if(s=c.closest(".product--outer"),s){let e=s.querySelector(".product-form--atc");e&&t.push(e),e=s.querySelector(".shopify-payment-button"),e&&t.push(e)}if(s=c.closest(".Container"),s)if(window.Shopify&&"mama-shawna.myshopify.com"===window.Shopify.shop){let e=s.querySelector("form.ProductForm");if(window.__st&&e){__st.cid&&t.push(e)}}else{let e=s.querySelector(".ProductForm__BuyButtons");e&&t.push(e)}if(s=c.closest(".product-grouped"),s){let e=s.querySelector(".product_top form#add-to-cart-form");e&&t.push(e)}if(s=c.closest(".product-item"),s){let e=s.querySelector(".product-top .product-des .action"),o=s.querySelector(".slideup");if(e&&t.push(e),o&&t.push(o),o=s.querySelector(".card-quickview"),o&&t.push(o),window.Shopify&&"sitchish.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".product-item-price .money");e&&e.classList.remove("money")}}if(s=c.closest(".modal_price"),s){let e=s.querySelector(".was_price");e&&t.push(e)}if(s=c.closest(".info"),s){let e=s.querySelector(".was_price");e&&t.push(e)}if(s=c.closest(".product-item"),s){let e=s.querySelector('.product-item__action-button[data-action="add-to-cart"]');e&&t.push(e)}if(s=c.closest(".grid__item.grid-product"),s){let e=s.querySelector('form[action="/cart/add"] input[type="submit"]');e&&t.push(e);let r=s.querySelector(".grid-product__tag");r&&t.push(r);let c=s.querySelector(".visually-hidden");c&&t.push(c);let l=s.querySelector(".quick-product__btn");l&&"comphycompany.myshopify.com"===o&&t.push(l)}if(s=c.closest(".product-info"),s){let e=s.querySelector('form[action="/cart/add"] .payment-buttons');e&&t.push(e);let o=s.querySelector(".variant-wrapper.variant-wrapper--button");o&&t.push(o);let r=s.querySelector(".form .product-actions .product-actions-add-to-cart");r&&t.push(r);let c=s.querySelector(".product-price__compare");
7177c&&t.push(c),c=s.querySelector("compare-at-price"),c&&t.push(c);let l=s.querySelector("unit-price");l&&t.push(l),e=s.querySelector(".buy-buttons"),e&&t.push(e);let u=s.querySelector(".product-info__badge-list");u&&t.push(u)}if(s=c.closest(".price"),s){if(s.textContent.includes("From")){let e=s.innerHTML;s.innerHTML=e.replace("From","")}}if(s=c.closest("#product-right"),s){let e=s.querySelector(".was");e&&t.push(e);let o=s.querySelector(".product-add");o&&t.push(o)}if(s=c.closest(".was"),s&&t.push(s),s=c.closest(".product-single__meta"),s){let e=s.querySelector(".pf__actions");e&&t.push(e);let o=s.querySelector("div.product-form__controls-group.product-form__controls-group--submit");o&&o.setAttribute("style","visibility:hidden")}if(s=c.closest(".product-item"),s){let e=s.querySelector(".product-item__add");e&&t.push(e)}if(s=c.closest(".grid-item"),s){let e=s.querySelector("#addToCart-product-template");e&&t.push(e);let o=s.querySelector(".payment-buttons");o&&t.push(o)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector("div.payment-buttons");e&&e.remove()}if(s=c.closest(".modal--root"),s){let e=s.querySelector(".product-form--button-container");e&&t.push(e)}if(s=c.closest(".product-item__info"),s){let e=s.querySelector("a.product-item__action-button.button.button--small.button--primary");e&&t.push(e)}if(s=c.closest(".product-form__info-list"),s){let e=s.querySelector("div.product-form__info-item.product-form__info-item--quantity");e&&t.push(e)}if(s=c.closest(".large--three-fifths"),s){let e=s.querySelector(".multivariants_setbox_footer");e&&t.push(e)}if(s=c.closest(".product-info-main"),s){let e=s.querySelector(".qty-box");e&&t.push(e);let o=s.querySelector(".btn.btn-cart");o&&t.push(o);let r=s.querySelector(".shopify-payment-button");r&&t.push(r)}if(s=c.closest(".product-miniature"),s){let e=s.querySelector(".qty-box");e&&t.push(e);let o=s.querySelector(".product.actions.product-item-actions");o&&t.push(o)}if(s=c.closest("#AddToCartForm"),s){let e=s.querySelector(".paymentButtonsWrapper");e&&t.push(e)}if(s){let e=s.querySelector("#product-add");e&&e.remove()}if(s){let e=s.querySelector("#product-price>.product-price");e&&e.remove()}if(s=c.closest(".grid-view-item"),s){let e=s.querySelector(".quick-add-button");e&&t.push(e)}if("tinalykkegaard.myshopify.com"===o){if(s=c.closest(".main-product__details>.main-product__details-wrapper"),s){let e=s.querySelector(".main-product__actions .main-product__form-buttons");e&&e.remove()}if(s=c.closest(".product-grid .product-card"),s){let e=s.querySelector('form[action="/cart/add"]');e&&e.remove()}}if(s=c.closest(".product-item-caption"),s){let e=s.querySelector(".product-form__item--submit");e&&t.push(e)}if(s=c.closest(".product-item-caption"),s){let e=s.querySelector(".product-form__item--quantity");e&&t.push(e)}if(s=c.closest(".productgrid--item"),s){let e=s.querySelector(".productitem--actions");e&&t.push(e)}if(s=c.closest(".product-single__info-wrapper"),s){let e=s.querySelector(".product-form__quantity-submit");e&&t.push(e);let o=s.querySelector(".shopify-payment-button");o&&t.push(o)}if(s=c.closest(".qv-content"),s){let e=s.querySelector(".qv-add-button");e&&t.push(e);let o=s.querySelector(".qv-quantity");o&&t.push(o)}if(s=c.closest(".product-card"),s){let e=s.querySelector(".btn-grid-cart");e&&t.push(e)}if(s=c.closest(".product_single_detail_section"),s){let e=s.querySelector("#AddToCart");e&&t.push(e);let o=s.querySelector(".shopify-payment-button__button");o&&t.push(o);let r=s.querySelector(".quantity-label");r&&t.push(r);let c=s.querySelector(".quantity_width");c&&t.push(c)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector("#AddToCart--product-template");e&&t.push(e);let o=s.querySelector(".shopify-payment-button");o&&t.push(o)}if(s=c.closest('form[action="/cart/add"]'),s){let e=s.querySelector(".product-page-info__field");e&&t.push(e);let o=s.querySelector(".product-page-info__button-add-to-cart");o&&t.push(o);let r=s.querySelector(".js-store-lists-add-wishlist");r&&t.push(r);let c=s.querySelector(".product-collection__control");c&&t.push(c)}if(s=c.closest(".grid-item__content"),s){let e=s.querySelector(".quick-add-btn");if(e&&t.push(e),window.Shopify&&"sparklinbluewholesale.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".grid-product__price--original"),o=s.querySelector(".grid-product__price--savings"),r=s.querySelector(".quick-product__btn");e&&t.push(e),o&&t.push(o),r&&t.push(r)}}if(s=c.closest(".purchase-box"),s){let e=s.querySelector("#AddToCart-product-template");e&&e.remove();let t=s.querySelector(".quantity-product-template");t&&t.remove()}if(s=c.closest(".item-row"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".product-thumbnail__price"),s){let e=s.querySelectorAll(".bsscommerce-ltsp-message");e.length>1&&e.forEach((function(e,o){o>0&&t.push(e)}))}if(s=c.closest(".product-details"),s){let e=s.querySelector(".product__add-to-cart-button");e&&t.push(e);let r=s.querySelector(".product-form__quantity-box-wrapper");if(r&&t.push(r),"sitchish.myshopify.com"===o){let e=s.querySelector("#product-price");e&&(e.id="");let o=s.querySelector("[data-product-price]");o&&o.removeAttribute("data-product-price");let r=s.querySelector(".form-actions");r&&t.push(r)}let c=s.querySelector(".product-quantity");if(c&&t.push(c),"lavabis-hygiene.myshopify.com"===o){let e=s.querySelector(".price-preview.price");e&&(e.id="")}}if(s=c.closest(".product-details"),s){let e=s.querySelector("#add-to-cart-product-template");e&&t.push(e);let o=s.querySelector(".shopify-payment-button__button");o&&o.remove();let r=s.querySelector(".quantity");r&&t.push(r)}if(s=c.closest(".gryffeditor"),s){let e=s.querySelector(".gf_product-quantity");e&&e.parentElement.remove()}if(s=c.closest("#ProductSection-product-template"),s){let e=s.querySelector(".cbb
7177-frequently-bought-add-button");e&&e.remove();let t=s.querySelector(".cbb-frequently-bought-form");t&&t.remove()}if(s=c.closest(".product__info-wrapper"),s){let e=s.querySelector(".product-form__quantity");e&&e.remove();let t=s.querySelector(".product-form__buttons");t&&t.remove()}if(s=c.closest(".product-form"),s){let e=s.querySelector(".product-form__payment-container");e&&e.remove();let o=s.querySelector("#price");if(o&&o.classList.remove("product-price"),window.Shopify&&"wilkens-gmbh.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".unit-price");e&&t.push(e)}}if(s=c.closest(".product-details"),s){let e=s.querySelector(".button-common");e&&e.remove()}if(s=c.closest(".caption"),s){let e=s.querySelector(".button.btn-cart");e&&t.push(e)}if(s=c.closest(".product-info-main"),s){let e=s.querySelectorAll(".form-group")[1];e&&t.push(e);let o=s.querySelector(".price");o&&(o.id="")}if(s=c.closest(".form_buy_sticky"),s){let e=s.querySelector(".form-group .btn.button.button-cart");e&&t.push(e);let o=s.querySelector(".form-group input#Quantity");o&&t.push(o)}if(s=c.closest(".product-template__container"),s){let e=s.querySelector(".store-availability-container");e&&e.remove()}if(s=c.closest(".product-form--container"),s){let e=s.querySelector(".product-form--options");e&&t.push(e);let o=s.querySelector(".product-form--smart-payment-buttons");o&&t.push(o)}if(s=c.closest(".product--price-wrapper"),s){let e=s.querySelector('.product--from[data-item="accent-text"]');e&&t.push(e)}if(s=c.closest("#zpproductselectorfull1-wrapper"),s){let e=s.querySelector(".zpa-button-alignment-center");e&&t.push(e);let o=s.querySelector(".zpa-quantity-block");o&&t.push(o)}if(s=c.closest(".zpa-multi-product-buy-box"),s){let e=s.querySelector(".zpa-button-alignment-center");e&&t.push(e)}if(s=c.closest(".product-block__inner"),s){let e=s.querySelector('form[action="/cart/add"].product-form.product-form--mini');if(e&&t.push(e),window.Shopify&&"wilkens-gmbh.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".unit-price");e&&t.push(e)}}if(s=c.closest(".was-price.theme-money"),s&&t.push(s),s=c.closest(".box_product_page"),s){let e=s.querySelector(".product-options-bottom");e&&t.push(e)}if(s=c.closest(".product-default"),s){let e=s.querySelector(".add-links.clearfix");e&&t.push(e)}if(s=c.closest(".grid__item.medium-up--three-eighths"),s){let e=s.querySelector('form[action="/cart/add"].shopify-product-form');e&&t.push(e)}if(s=c.closest(".indiv-product"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}if(s=c.closest('form.product-form[action="/cart/add"]'),s){let e=s.querySelector(".sf__pcard-image .sf__pcard-quick-add");e&&t.push(e);let o=s.querySelector(".main-product__block-buy_buttons");o&&t.push(o)}if(s=c.closest(".product-grid-item.woodmart-hover-base"),s){let e=s.querySelector(".fade-in-block");e&&t.push(e);let o=s.querySelector(".product-compare-button");o&&t.push(o)}if(s=c.closest(".grid__item"),s){if("www-bonmatch-com.myshopify.com"===o){let e=s.querySelector(".selector-wrapper.bcpo-file"),o=s.querySelector(".uploadkit.uploadkit-injected"),r=s.querySelector(".uploadkit-form");e&&t.push(e),o&&r&&r.appendChild(o)}let e=s.querySelector(".product__submit__buttons");e&&t.push(e);let r=s.querySelector(".products > .product-detail > .product-button"),c=s.querySelector(".products > .product-container > .product-button > .quick-view-text");r&&t.push(r),c&&t.push(c);let l=s.querySelector("button#AddToCart"),u=s.querySelector('[data-shopify="payment-button"].shopify-payment-button');if(l&&t.push(l),u&&t.push(u),"tienda-suca-bikes.myshopify.com"===o){let e=s.querySelector(".product__unit-price.product__unit-price--spacing"),t=s.querySelector(".c_p-quantity-input-parent"),o=s.querySelector(".masIva"),r=s.querySelector(".c_col-sw-btn");e&&e.classList.remove("hide"),t&&t.remove(),o&&o.remove(),r&&r.remove()}if("youchique-4183.myshopify.com"===o){let e=s.querySelector(".card-information__button");e&&t.push(e);let o=s.querySelector(".swym-wishlist-button-bar");o&&t.push(o)}if("stelladetailsb2b.myshopify.com"===o){let e=s.querySelector(".bss-b2b-product-vat");e&&t.push(e);let o=s.querySelector("#bss-b2b-tax-inc-excl");o&&t.push(o);let r=s.querySelector(".bss-b2b-collection-item-vat");r&&t.push(r);let c=s.querySelector(".price__regular");if(c){c.classList.remove("price__regular");let e=s.querySelector(".price-item--regular");e&&e.classList.remove("price-item--regular")}let l=s.querySelector(".price__sale");l&&t.push(l)}let i=s.querySelector("quick-view-drawer");
7177i&&t.push(i);let p=s.querySelector("add-to-cart");p&&t.push(p)}if(s=c.closest(".shop-the-look__product-info"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}if(s=c.closest(".popover.popover--quick-buy"),s){let e=s.querySelector(".product-form__buy-buttons");e&&t.push(e)}if(s=c.closest(".product__section.product-template .product__section-content .product__section-details"),s){let e=s.querySelector('form[action="/cart/add"] input#addToCart');e&&t.push(e)}if(s=c.closest(".product-item__info-inner"),s){let e=s.querySelector(".unit-price-measurement");e&&t.push(e)}if(s=c.closest(".product-form__info-item"),s){let e=s.querySelector(".unit-price-measurement");e&&t.push(e)}if(s=c.closest("div[data-product-blocks]"),s){let e=s.querySelector(".payment-buttons");e&&t.push(e);let o=s.querySelector(".spt-wishlist-button__wrapper");o&&t.push(o)}if(s=c.closest(".sf__pcard-content.text-center"),s){let e=s.querySelector("button.add-to-cart.sf__btn");e&&t.push(e)}if(s=c.closest(".product-details.section"),s){let e=s.querySelector('form#AddToCartForm.product-content-inner[action="/cart/add"]');e&&t.push(e)}if(s=c.closest(".search-item .product-item, .product-grid-row .product-item"),s){let e=s.querySelector(".product-img .action-btn");e&&t.push(e)}if(s=c.closest(".product-collection__content,.product-page-info"),s){let e=s.querySelector(".js-product-button-add-to-cart");e&&t.push(e)}if(s=c.closest(".details-info"),s){let e=s.querySelector(".group-button .add-to-cart");e&&t.push(e)}if(s=c.closest(".product-collection"),s){let e=s.querySelector(".group-button .add-to-cart");e&&t.push(e)}let u=c.closest("[data-js-product-price]");if(u&&u.setAttribute("bss-ltsp-active",""),s=c.closest(".product__info-container"),s){let e=s.querySelector('.form[data-type="add-to-cart-form"] > .shopify-payment-button[data-shopify="payment-button"]');e&&t.push(e)}if(s=c.closest(".products"),s){let e=s.querySelector(".product-container > .product-button > .variants > .add-cart-btn"),o=s.querySelector(".product-container > .product-button > .quick-view-text");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".dt-sc-tabs-container"),s){let e=s.querySelector(".dt-sc-tabs-content > .tab2 > .owl-stage-outer > .owl-stage > .owl-item > .item-row > .products > .product-container > .product-button > .variants > .add-cart-btn");e&&t.push(e)}if(s=c.closest(".wrapper-container"),s){let e=s.querySelector(".recently-viewed-products > .products-grid > .grid__item > .product-item > .products > .product-bottom > .price-box > .regular-product > .special-price"),o=s.querySelector(".recently-viewed-products > .products-grid > .grid__item > .product-item > .products > .product-bottom > .action > .variants > .add-to-cart-btn");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".featured__collection-product.product-index"),s){let e=s.querySelector(".product_listing_options");e&&t.push(e)}if(s=c.closest(".product-index"),s){let e=s.querySelector(".product_listing_options");e&&t.push(e)}if(s=c.closest(".product__section-details"),s){let e=s.querySelector(".product__section-details__inner
7177--product_buttons");e&&t.push(e)}if(s=c.closest(".product-page--cart-form-block"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".price__sale"),s){let e=s.querySelector(".price-item--regular");e&&t.push(e)}if(s=c.closest(".product-item-v1"),s){let e=s.querySelector(".price-old"),o=s.querySelector(".product-icon-action");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".detail-info > .relative"),s){let e=s.querySelector("#AddToCartForm > .btn-action"),o=s.querySelector('div.shopify-payment-button[data-shopify="payment-button"]'),r=s.querySelector(".product-price > del");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product-details"),s){let e=s.querySelector(".product-block--form>.product-form--regular");e&&"eurosafetysystems.myshopify.com"!==o&&e.remove();let t=s.querySelector(".button-cart");t&&t.remove()}if("annabellenoeldesigns-com.myshopify.com"==o&&(s=c.closest(".product-block-list__item .card__section"),s)){let e=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE .multivariants_block_qty_box");e&&e.remove();let t=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE .multivariants_block_last_holder .multivariants_block_prc_holder");t&&t.remove();let o=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE #multivariants_add_to_cart_button_h");o&&o.remove();let r=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE #multivariants_block_subtotal_h");r&&r.remove()}if("fedua-b2b.myshopify.com"==o){if(s=c.closest(".gp-product-detail .container"),s){let e=s.querySelector(".gp-product-main-button button[type='submit']");e&&e.remove();let t=s.querySelector(".cbb-also-bought-add-to-cart-button");t&&t.remove();let o=s.querySelector(".cbb-also-bought-product-price-container");o&&o.remove()}if(s=c.closest(".gp-product-widget .product-card-grid"),s){let e=s.querySelector(".product-buttons .btn-quick-view ");e&&e.remove()}}if(s=c.closest(".product--price-container"),s){let e=s.querySelectorAll(".product--price-wrapper > a");e.length&&e.forEach(e=>e.remove())}if("linis-bites-b2b.myshopify.com"==window.location.host&&c.querySelector("[bss-customize-ltsp-message]")){let e=c.closest(".price .price__container");if(e){let o=e.querySelector(".unit-price.caption");o&&t.push(o)}}if(s=c.closest(".product-price--wrapper"),s){let e=s.querySelector(".product-price--compare");e&&e.remove()}if(s=c.closest(".price__pricing-group"),s){let e=s.querySelector(".price-item.price-item--regular[data-regular-price]");e&&(e.classList.remove("price-item"),e.classList.remove("price-item--regular"))}if(l.forEach((function(e){c.closest(e)&&t.push(c.closest(e))})),s=c.closest(".product-page-info"),s){let e=s.querySelector("[data-js-footbar-product-limit]");e&&t.push(e)}if(s=c.closest(".product-wrap"),s){let e=s.querySelector(".purchase-details button.button--add-to-cart"),o=s.querySelector(".product-action");if(e&&t.push(e),o&&t.push(o),window.Shopify&&"dermafirmusa.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".price.sale");e&&t.push(e)}}if(s=c.closest(".seven.columns.omega"),s){let e=s.querySelector(".purchase-details__buttons button.shopify-payment-button__button ");e&&t.push(e)}if(s=c.closest("#collectionPr"),s){let e=s.querySelectorAll("#PageContainer .collection .btn.add-to-cart");e.length&&e.forEach(e=>{t.push(e)})}if(s=c.closest(".grid.product-single"),s){let e=s.querySelector('#PageContainer .wrap-product-info button[type="submit"].btn.btn1.pr_btn.addtocart_js');e&&t.push(e)}if(s=c.closest(".gryffeditor"),s){let e=s.querySelector(".module-wrap .gf_add-to-cart.product-form-product-template");e&&t.push(e)}if(s=c.closest(".product-single .product-single__meta"),s){let e=s.querySelector('.product-form__item button[name="add"].product-form__cart-submit');e&&t.push(e)}if(s=c.closest(".shopify-product-form"),s){let e=s.querySelector("#product-price");e&&t.push(e)}if(s=c.closest(".product-item-price"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest('main#main[role="main"]'),s){let e=s.querySelector("div.atc-bar");e&&t.push(e)}if(s=c.closest("#CartDrawer"),s){let e=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__details dl .product-option");e&&t.push(e);let o=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__totals .cart-item__price-wrapper");o&&t.push(o);let r=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__quantity");r&&t.push(r);let c=s.querySelector(".drawer__footer");c&&t.push(c)}if(s=c.closest("#main-cart-items"),s){let e=s.querySelector(".cart-item .cart-item__details dl .product-option");e&&t.push(e);let o=s.querySelector(".cart-item .cart-item__quantity .cart-item__quantity-wrapper");o&&t.push(o);let r=s.querySelector(".cart-item .cart-item__totals.right.small-hide .cart-item__price-wrapper");r&&t.push(r)}if(s=c.closest("#main-cart-footer"),s){let e=s.querySelector(".cart__footer");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s&&window.Shopify&&("asiadirectfurniture.mysh
7177opify.com"===window.Shopify.shop||"pure-vision-ch.myshopify.com"===window.Shopify.shop)){let e=s.querySelector(".product__price[data-product-price]");e&&t.push(e)}if(s=c.closest(".product-inner.pr"),s){let e=s.querySelector(".pr_atc.pr_qty_atc > a.pr_atc_.js_addtc");e&&t.push(e)}if(s=c.closest("#shopify-section-pr_summary"),s){let e=s.querySelector("p.price_range, .price.price_varies");e&&t.push(e)}if(s=c.closest(".grid__item"),s){let e=s.querySelector(".product__form-container"),o=s.querySelector(".product__description");e&&(t.push(e),o.style.width="100%")}if(s=c.closest(".featured-product__content-wrapper"),s){let e=s.querySelector(".product-form");e&&t.push(e)}if(s=c.closest(".card__price"),s&&"exosomes-inc.myshopify.com"===o&&(s.style.textAlign="center"),s=c.closest(".Product__InfoWrapper > .Product__Info "),s){let e=s.querySelector('.ProductForm__BuyButtons > button[type="submit"].ProductForm__AddToCart');e&&t.push(e);let o=s.querySelector(".ProductForm__AddToCart");o&&t.push(o)}if(s=c.closest(".product-grid__container .product-grid__content"),s){let e=s.querySelector(".product-single__form .product__quantity");e&&t.push(e);let o=s.querySelector(".add-to-cart");o&&t.push(o);let r=s.querySelector(".product__price--compare");if(r&&t.push(r),window.Shopify&&"sparklinbluewholesale.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".product__price-savings");e&&t.push(e)}}if(s=c.closest(".product-grid-item"),s){let e=s.querySelector(".h1.medium--left");e&&"envogueusa.com"==window.location.host&&t.push(e)}if(s=c.closest("#productPrice-product-template"),s){let e=s.querySelector("small");e&&"envogueusa.com"==window.location.host&&t.push(e),s.appendChild(c)}if(s=c.closest(".product-grid-item"),s){let e=s.querySelector(".form-grid-btn");e&&"mamiereglissepro.myshopify.com"===o&&t.push(e)}if(s=c.closest("#cont-form"),s){let e=s.querySelector(".so-price");e&&t.push(e);let r=s.querySelector("#addToCart");r&&"mamiereglissepro.myshopify.com"===o&&t.push(r)}if(s=c.closest(".template-product"),s){let e=s.querySelector('button[name="add"]#addToCartBis, button[name="add"]#addToCart2');e&&t.push(e)}if(s=c.closest(".grid-product__content"),s){let e=s.querySelector(".quick-product__btn");!e||"wood-hill-boards.myshopify.com"!==o&&"wood-hill-boards-usa.myshopify.com"!==o&&"bundlecomph.myshopify.com"!==o||t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".product__quantity");!e||"wood-hill-boards.myshopify.com"!==o&&"wood-hill-boards-usa.myshopify.com"!==o||t.push(e)}if(s=c.closest(".product-block-area"),s){let e=s.querySelector("#addToCartButton");e&&"wanderlustvision.myshopify.com"===o&&t.push(e)}if(s=c.closest(".product-single__meta--wrapper .product-single__meta"),s){let e=s.querySelector(".price-container.text-money"),o=s.querySelector('button[name="add"].btn--add-to-cart');e&&t.push(e),o&&t.push(o)}if(s=c.closest(".product-single__metas"),s){let e=s.querySelector(".product-single__buttons .js-quantity-selector.product-quantity"),o=s.querySelector(".product-single__buttons button.btn--add-to-cart");e&&t.push(e),o&&t.push(o)}if("dollie-wholesale.myshopify.com"===o&&(s=c.closest(".product-card"),s)){let e=s.querySelector(".product-card__buttons .product-card__quickview"),o=s.querySelector(".product-card__buttons .product-card__form"),r=s.querySelector(".product-card__buttons .button-wishlist"),c=s.querySelector(".wpb-variants-swatch");e&&t.push(e),o&&t.push(o),r&&t.push(r),c&&t.push(c)}if("obsequ.myshopify.com"===o&&(s=c.closest(".product-meta"),s)){let e=s.querySelector(".price-list[data-product-price-list]");e&&e.remove()}if(s=c.closest(".sticky-cart"),s){let e=s.querySelector(".product-form__buttons");e&&t.push(e)}if("wholesale-rubypearlco.myshopify.com"!==o&&"coventa-demo.myshopify.com"!==o&&(s=c.closest(".productitem--info")||c.closest(".product-pricing"),s)){let e=s.querySelector(".price");e&&t.push(e)}if(s=c.closest(".productitem--info"),s){let e=s.querySelector(".price__compare-at.visible");e&&"coventa-demo.myshopify.com"===o&&t.push(e)}if(s=c.closest(".product-block-list"),s&&window.Shopify&&"axiom-wholesale-parts.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".price");e&&e.classList.remove("price")}if(s=c.closest(".product-layout"),s){let e=s.querySelector(".action-links");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".product-block--price");e&&"comphycompany.myshopify.com"===o&&t.push(e)}if(s=c.closest(".product-details, .modal_price"),s){let e=s.querySelector(".current_price, .price__container");e&&t.push(e)}if("wholesale-rubypearlco.myshopify.com"===window.Shopify.shop&&(s=c.closest(".productitem__container .productitem--info, .product-details .product-pricing"),s)){let e=s.querySelectorAll(".price__compare-at--single, .price__compare-at, .price__current--max");
7177e.length&&e.forEach(e=>e.remove())}if("kerriecapelliusa-com.myshopify.com"===window.Shopify.shop&&(s=c.closest(".product-detail.quickbuy-content.spaced-row.container"),s)){let e=s.querySelectorAll(".product-form.theme-init .variant-visibility-area");e.length&&e.forEach(e=>e.remove())}if(s=c.closest(".widget_if_pr, .product-inner, .al_center.fl_center, .widget_if_pr"),s){let e=s.querySelectorAll(".product-price-pr-search, .hover_button, .nt_add_w, .nt_add_cp, .sticky_atc_btn.variations_form, .transcy-money");e.length&&e.forEach(e=>e.remove())}if(s=c.closest(".ProductItem__Wrapper, .ProductForm"),s){let e=s.querySelector(".ProductItem__PriceList, .ProductForm__QuantitySelector");e&&"sirenwireless.myshopify.com"!==o&&e.remove();let r=s.querySelector(".ProductFormWrapper");r&&"sirenwireless.myshopify.com"===o&&t.push(r)}if("butterfly-health-and-wellness.myshopify.com"===window.Shopify.shop){if(s=c.closest(".item-content"),s){let e=s.querySelector('.module-wrap[data-label="(P) Cart Button"] button.gf_add-to-cart');e&&e.remove()}if(s=c.closest(".gf_product-desc"),s){let e=s.querySelector("h4");e&&(e.remove(),c.style.display="none")}if(s=c.closest(".gf_column[data-id]"),s){let e=s.querySelectorAll('.elementor-section[data-element_type="section"] .elementor-text-editor strong, .gf_product-desc h4, .gf_product-desc strong');if(e)for(let t of e)t.remove()}}if(s=c.closest(".product-block"),s){let e=s.querySelector(".quickbuy-toggle");e&&t.push(e)}if(s=c.closest(".productView-details"),s){let e=s.querySelector(".productView-buttons"),r=s.querySelector(".quantity_selector"),c=s.querySelector(".productView-subtotal");e&&t.push(e),r&&t.push(r),c&&t.push(c),"remote-king-au.myshopify.com"===o&&s.querySelectorAll(".product-customInformation").forEach(e=>e.remove())}if(s=c.closest(".product__content"),s&&"campomarzio-trade-uk.myshopify.com"===o){let e=s.querySelector(".product__text"),o=s.querySelector(".select__fieldset"),r=s.querySelector(".product__submit");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product-card__price, .product-single__meta-list"),s){let e=s.querySelector(".product-single__price, .money-product");e&&e.remove()}if("ens-nutrition-3419.myshopify.com"===o&&(s=c.closest(".card__content"),s)){let e=s.querySelector(".button.quick-add__submit");e&&e.remove()}if("b2b-nandu.myshopify.com"===o){if(s=c.closest(".grid-product__content"),s){let e=s.querySelector(".grid-product__meta .grid-product__price ");e&&e.remove()}let e=c.closest(".product-single__meta");if(e){let t=e.querySelector(".product__price.product__price--compare"),o=e.querySelector(".product__price.on-sale"),r=e.querySelector(".product__price-savings");t&&o&&r&&(t.remove(),o.remove(),r.remove())}}if("impjarwholesale.myshopify.com"===o){if(s=c.closest(".tp-product-content"),s){let e=s.querySelector("button#AddToCart"),o=s.querySelector(".tp-product-singe-action .tp-product-quantity");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".grid-item"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}}if("b2b-dbodhi-singapore.myshopify.com"===o&&(s=c.closest("del"),s&&t.push(c),s=c.closest(".product-information--inner"),s)){const e=s.querySelector(".product-form");e&&t.push(e)}if(s=c.closest(".lh-details-product"),s){if("ags2020.myshopify.com"===o){let e=s.querySelector(".lh-price");e&&e.classList.remove("lh-price")}let e=s.querySelector(".lh-add_to_cart");e&&t.push(e);let r=s.querySelector(".lh-buy-now");r&&t.push(r);let c=s.querySelector(".lh-compare-at-price");c&&t.push(c)}if(s=c.closest(".lh-collection-item"),s){if("ags2020.myshopify.com"===o){let e=s.querySelector(".lh-price");e&&e.classList.remove("lh-price")}let e=s.querySelector(".lh-product-compare-price");e&&t.push(e)}if(s=c.closest(".ProductMeta, .ProductItem__Info"),s){let e=s.querySelectorAll(".Price");e&&e.forEach(e=>e.remove())}}t.forEach((function(e){e.remove()}))}}(e),function(e){e.ltsp.removeElementByLTSPWrapper=function(){let e=document.getElementsByClassName("bss-ltsp-price-wrapper"),t=[];for(let o=0;o<e.length;o++){let r=e[o],c=[],l=r.closest(".product-parent");if(l){let e=l.querySelector("form .tt-btn-addtocart");e&&t.push(e);let o=l.querySelector(".tt-btn-quickview");o&&t.push(o)}if(l=r.closest(".product-single__meta"),l=r.closest(".tt-product-single-info"),l){let e=l.querySelector("form .btn-addtocart");e&&t.push(e);let o=l.querySelector('form[action*="/cart/add"]');o&&t.push(o)}if(l=r.closest(".product_section"),l){let e=l.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e);let o=l.querySelector(".sale.savings");o&&t.push(o)}if(l=r.closest(".quick-shop-style--inline"),l){let e=l.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e)}if(l=r.closest(".product-details"),l){let e=l.querySelector("small em");e&&t.push(e)}if(l=r.closest(".gt_product-body"),l){let e=l.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=l.querySelector(".gt_product-saved");o&&t.push(o);let r=l.querySelector(".gt_product-price--compare");r&&t.push(r)}if(l=r.closest(".gt_product_content"),l){let e=l.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=l.querySelector(".gt_product-price--compare");o&&t.push(o)}if(l=r.closest(".gt-single-product"),l){let e=l.querySelector("div.gt_method_addToCart");e&&t.push(e);let o=l.querySelector(".gt_product-price--compare");o&&t.push(o)}if(l=r.closest("#cont-form"),l){let e=l.querySelector("form .cont-add-btns");e&&t.push(e)}if(l=r.closest(".theiaStickySidebar"),l){let e=l.querySelector(".variations_button");e&&t.push(e)}if(l=r.closest(".product-submit"),l){let e=l.querySelector(".payment-buttons-container");e&&t.push(e)}if(l=r.closest(".productitem"),l){let e=l.querySelector(".productitem--action");e&&t.push(e)}if(l=r.closest(".product--outer"),l){let e=l.querySelector(".product-form--atc");e&&t.push(e),e=l.querySelector(".shopify-payment-button"),e&&t.push(e)}if(l=r.closest(".product-grouped"),l){let e=l.querySelector(".product_top form#add-to-cart-form");e&&t.push(e)}if(l=r.closest(".product-item"),l){let e=l.querySelector(".product-top .product-des .action");e&&t.push(e)}if(l=r.closest(".product-item"),l){let e=l.querySelector('.product-item__action-button[data-action="add-to-cart"]');e&&t.push(e)}if(l=r.closest(".grid__item.grid-product"),l){let e=l.querySelector('form[action="/cart/add"] input[type="submit"]');e&&t.push(e);let o=l.querySelector(".grid-product__tag");o&&t.push(o);let r=l.querySelector(".visually-hidden");r&&t.push(r)}if(l=r.closest(".product-info"),l){let e=l.querySelector('form[action="/cart/add"] .payment-buttons');e&&t.push(e);let o=l.querySelector(".variant-wrapper.variant-wrapper--button");o&&t.push(o)}if(l=r.closest("#product-right"),l){let e=l.querySelector(".was");e&&t.push(e);let o=l.querySelector(".product-add");o&&t.push(o)}if(l=r.closest(".was"),l&&t.push(l),l=r.closest(".product-single__meta"),l){let e=l.querySelector(".pf__actions");e&&t.push(e)}if(l=r.closest("#AddToCartForm-product-template"),l){let e=l.querySelector("#CartButtons-product-template");e&&t.push(e)}if(l=r.closest(".Product__Info"),l){let e=l.querySelector(".ProductMeta__PriceList");e&&t.push(e)}if(l=r.closest(".grid-item"),l){let e=l.querySelector("#addToCart-product-template");e&&t.push(e);let o=l.querySelector(".payment-buttons");o&&t.push(o)}c.forEach((function(e){r.closest(e)&&t.push(r.closest(e))}))}t.forEach((function(e){e.remove()}))}}(e),e.ltsp.removePattern=function(){e.ltsp.removeElementByLTSPMessage(),e.ltsp.removeElementByLTSPWrapper()},e.ltsp.insertBeforeAddToCart=function(){let t=document.querySelectorAll(".bsscommerce-ltsp-message[data-ltsp-cart-message]");for(let o=0;o<t.length;o++){let r=t[o],c=r.getAttribute("data-ltsp-cart-message");r.removeAttribute("data-ltsp-cart-message");let l=[".main-content .product-single__meta",".main-content .grid__item",".main-content .grid-item",".main-content .product__content.product__content--template.product__content--information","main#MainContent .product__info-container",".container#product-product .product-info-main",'main#main section[data-section-id="collection-template"] .product-item',".product-area__details.product-detail .product-detail__form"];for(let t=0;t<l.length;t++){let o=r.closest(l[t]);if(o&&!o.querySelector(".bsscommerce-ltsp-message.hide-message")){let t=
7177o.querySelector('form[action="/cart/add"]');if(t){let o=e.helperLTSP.createHidePriceMessageSpan(c);t.before(o)}}}let s=[[".product-layout .item .item-inner .caption",".button.btn-cart"],['main#main section[data-section-id="product-template"] .card__section',".product-form__payment-container"],[".main#MainContent .content.product",'form[action="/cart/add"] .offers']];for(let t=0;t<s.length;t++){let o=r.closest(s[t][0]);if(o&&!o.querySelector(".bsscommerce-ltsp-message.hide-message")){let r=o.querySelector(s[t][1]);if(r){let t=e.helperLTSP.createHidePriceMessageSpan(c);r.before(t)}}}if(window.Shopify&&"airbesafe.myshopify.com"===window.Shopify.shop){let t=[[".shopify-section--main-collection .product-list__inner .product-item ",".product-item__info  .product-item-meta__price-list-container .price-list"],[".shopify-section--main-product .product--thumbnails-bottom .product__info",".product-meta__price-list-container"],["product-item.product-item .product-item__info",".product-item-meta__price-list-container"]];for(let o=0;o<t.length;o++){let l=r.closest(t[o][0]);if(l&&!l.querySelector(".bsscommerce-ltsp-message.hide-message")){let r=l.querySelector(t[o][1]);if(r){let t=e.helperLTSP.createHidePriceMessageSpan(c);r.after(t)}}}}}}}function c(e){!function(e){e.helperLTSP={},e.helperLTSP.createHidePriceMessageSpan=function(e){let t=document.createElement("span");return t.classList.add("bsscommerce-ltsp-message"),t.classList.add("hide-message"),t.style.fontSize="16px",t.style.fontWeight="normal",t.style.color="initial",t.style.textTransform="none",t.style.visibility="visible",t.innerHTML=e,t},e.helperLTSP.onLoadMore=function(e){const t=document.querySelector([".sf__product-listing[data-product-container] > div",'.row[data-js-collection-replace="products"]',".product-list-container .product-list.use-infinite-scroll","#collection-product .product-container",".container #col-main"].join(","));if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e()}))})).observe(t,{childList:!0})}}}(e)}function l(){const e={};c(e),r(e),function(e){e.ptvp={},e.ptvp.addPasscodeForm=function(){let e=document.querySelector('form[action*="/cart/add"]'),t=document.getElementsByClassName("bss-passcode-wrapper-tag"),o=document.getElementsByClassName("bsscommerce-password-form"),r=document.querySelector(".toggle-passcode-input"),c=null;if(o.length&&(c=o[0],c.style.display="block",r&&r.addEventListener("click",(function(e){let t=document.getElementById("bsscommerce-password");"password"===t.type?(t.type="text",e.target.closest(".toggle-passcode-input").style.fill="#5C5F62"):(t.type="password",e.target.closest(".toggle-passcode-input").style.fill="#BABEC3")}))),t.length&&e&&o.length){e.before(c);let o=document.getElementById("bsscommerce-password"),r=new FormData;r.append(o.name,o.value),document.getElementById("bsscommerce-password-submit").style.padding="12px 16px",document.getElementById("bsscommerce-password-submit").style.display="block";let l=new XMLHttpRequest;l.open("post","/cart/update.js"),l.send(r);let s=document.getElementsByClassName("bsscommerce-ltap-password");if(s.length)for(let e=0;e<s.length;e++)s[e].addEventListener("submit",(function(e){e.preventDefault();let t=this;if(t.length)for(let e=0;e<t.length;e++)if("bsscommerce-password"==t[e].id){let o=t[e];if(o.addEventListener("input",(function(){o.classList.remove("input--error")})),o.value)if(""!=o.value){let e=new FormData;e.append(o.name,o.value);let t=new XMLHttpRequest;t.onreadystatechange=function(){4==t.readyState&&200==t.status&&location.reload()},t.open("post","/cart/update.js"),t.send(e)}else o.classList.add("input--error")}}));for(let e=0;e<t.length;e++)t[e].remove()}}}(e),e.ptvp.addPasscodeForm(),document.querySelectorAll(".quick-view-btn").forEach((function(t){t.addEventListener("click",(function(){setTimeout((function(){e.ptvp.addPasscodeForm()}),1e3)}))})),function e(){document.querySelectorAll(".advanced-filter a").forEach((function(t){t.addEventListener("click",(function(){setTimeout((function(){let t=document.getElementsByClassName("bsscommerce-ltsp-message");for(let e=0;e<t.length;e++){let o=t[e].closest(".item-row");
7177if(o){let e=o.querySelector(".add-to-cart");e&&e.remove()}}e()}),1200)}))}))}(),e.ltsp.quickView(),e.ltsp.insertBeforeAddToCart(),e.ltsp.removePattern(),e.helperLTSP.onLoadMore(e.ltsp.removePattern),setTimeout((function(){e.ltsp.removePattern()}),2500);if(window.Shopify&&-1!==["showroom1-ducanero.myshopify.com","sparklinbluewholesale.myshopify.com","youchique-4183.myshopify.com","wilkens-gmbh.myshopify.com","friends-forever-pets.myshopify.com"].indexOf(window.Shopify.shop)&&(window.onscroll=function(e,t){let o;return function(...r){o&&clearTimeout(o),o=setTimeout(()=>{e(...r),o=null},t)}}((function(){let t=setInterval((function(){e.ltsp.removePattern()}),200);setTimeout((function(){clearInterval(t)}),3e3)}),500)),"amoreo.eu"===window.location.host){let t=setInterval((function(){e.ltsp.removePattern()}),200);setTimeout((function(){clearInterval(t)}),3e3)}let t=document.querySelector(".infinite-scrolling-homepage a.btn");"airbesafe.myshopify.com"===window.location.host&&setTimeout((function(){e.ltsp.insertBeforeAddToCart()}),3e3),t&&(t.onclick=function(){setTimeout((function(){e.ltsp.removePattern()}),1e3)});let o=document.querySelectorAll("#shopify-section-product-recommendations, .product-modal-wrapper");var l,s,u;(o.length&&o.forEach((function(t){t.addEventListener("DOMSubtreeModified",(function(){e.ltsp.removePattern()}))})),"valleys-group.myshopify.com"===window.location.host)&&(l=function(){e.ltsp.removePattern();
7177let t=document.querySelectorAll(".slideout__drawer-right, .sidebar_leftside_wapper, .filtering__results");t.length&&t.forEach((function(e){e.addEventListener("click",(function(){setTimeout(()=>{l()},1700)}))}))});"b.salonpremium.com"===window.location.host&&(s=function(){e.ltsp.removePattern();let t=document.querySelectorAll(".pagination");t.length&&t.forEach((function(e){e.addEventListener("click",(function(){setTimeout(()=>{s()},3e3)}))}))});"www.internationalbeauty.ca"===window.location.host&&(u=function(){let t=document.querySelector('[id^="RecentlyViewed"]');new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&(e.ltsp.removePattern(),document.querySelectorAll(".btn--icon.quick-product__btn").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-grid__content");if(o){let e=o.querySelector(".payment-buttons");e&&e.remove()}}u()}),2e3)}))})))}))})).observe(t,{childList:!0})});if("bluebasketb2b.myshopify.com"===window.Shopify.shop){let t=document.querySelector("#CartDrawer");const o=()=>{let e=document.querySelectorAll("script#bss-ltap-login-require");for(let t in e)t.remove()};if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&(e.ltsp.removePattern(),o())}))})).observe(t,{childList:!0})}}if("dollie-wholesale.myshopify.com"===window.Shopify.shop){let t=document.querySelector("#product-grid .products__row");if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e.ltsp.removePattern()}))})).observe(t,{childList:!0})}}if("impjarwholesale.myshopify.com"===window.Shopify.shop){let t=document.querySelector(".tp-collection-content");if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e.ltsp.removePattern()}))})).observe(t,{childList:!0})}}if("inex-studio.myshopify.com"===window.Shopify.shop){let t=document.querySelector("#Search .Search__Results");if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e.ltsp.removePattern()}))})).observe(t,{childList:!0,subtree:!0})}}}o.r(t),o.d(t,"default",(function(){return l})),l()}]);
7178 </script>
7178
7179 
7180       </main>
7181       
7182       <div id="shopify-section-newsletter" class="shopify-section"><br>
7183   <style>
7184     #shopify-section-newsletter {
7185       background: url('image/background-emo78.png');
7186       background-attachment: fixed;
7187       margin-bottom: 0;
7188     }
7189     input:-webkit-autofill,
7190     input:-webkit-autofill:hover,
7191     input:-webkit-autofill:active,
7192     input:-webkit-autofill:focus {
7193       -webkit-box-shadow:0 0 0 50px white inset;
7194       -webkit-text-fill-color: #ffffff;
7195     }
7196     .section-newsletter {
7197       max-width: 800px;
7198       margin: auto;
7199       padding: 50px 0;
7200     }
7201     .section-newsletter h2 {
7202       font-weight: 700;
7203       font-size: 24px;
7204     }
7205     .section-newsletter input[type="email"] {
7206       width: 100%;
7207       text-align: center;
7208       border: none;
7209       border-bottom: 1px solid #ffffff;
7210       font-size: 16px;
7211       color: #757575;
7212       background-color: #eeeeee;
7213     }
7214     .section-newsletter .row label {
7215       font-size: 14px;
7216       cursor: pointer;
7217     }
7218     .section-newsletter .radio-inline input {
7219       width: auto;
7220     }
7221     .section-newsletter .btn {
7222       width: 130px;
7223       border: 1px solid #ffffff;
7224       box-shadow: none;
7225       font-size: 16px;
7226       font-weight: 500;
7227       text-transform: uppercase;
7228     }
7229     .section-newsletter form {
7230       margin: 30px 0 60px;
7231     }
7232     .section-newsletter input[type="radio"] {
7233       position: absolute;
7234       width: 1px;
7235       height: 1px;
7236     }
7237     .section-newsletter [type="radio"]:checked + label, .section-newsletter [type="radio"]:not(:checked) + label {
7238       position: relative;
7239       padding-left: 28px;
7240       cursor: pointer;
7241       line-height: 20px;
7242       display: inline-block;
7243       color: #666;
7244     }
7245     .section-newsletter [type="radio"]:checked + label:before, .section-newsletter [type="radio"]:not(:checked) + label:before {
7246       content: '';
7247       position: absolute;
7248       left: 0;
7249       top: 0;
7250       width: 18px;
7251       height: 18px;
7252       border: 1px solid #ddd;
7253       border-radius: 100%;
7254       background: #fff;
7255     }
7256     .section-newsletter [type="radio"]:checked + label:after, .section-newsletter [type="radio"]:not(:checked) + label:after {
7257       content: '';
7258       width: 12px;
7259       height: 12px;
7260       background: #ffffff;
7261       position: absolute;
7262       top: 3px;
7263       left: 3px;
7264       border-radius: 100%;
7265       -webkit-transition: all 0.2s ease;
7266       transition: all 0.2s ease;
7267     }
7268     .section-newsletter [type="radio"]:not(:checked) + label:after {
7269       opacity: 0;
7270       -webkit-transform: scale(0);
7271       transform: scale(0);
7272     }
7273     .opt-newsletter {display:none;}
7274     .footer-newsletter p, .footer-newsletter p a {
7275       color: #757575;
7276     }
7277     @media (max-width:991px){
7278       .section-newsletter h2 {
7279         font-size: 32px;
7280       }
7281       .section-newsletter input {
7282         width: 300px;
7283         font-size: 14px;
7284       }
7285       .section-newsletter {
7286         padding: 50px 20px;
7287       }
7288     }
7289     @media (max-width: 480px){
7290       .section-newsletter input[type="email"] {font-size: 16px;}
7291     }
7292   </style>
7293  <style>
7294 .icon-img-footer {
7295     width: 80px; 
7296     padding: 0px 5px;
7297 }
7298 @media (min-width: 768px) {
7299     .icon-img-footer {
7300         width: 120px; 
7301     }
7302 }
7303 @media (min-width: 992px) {
7304     .icon-img-footer {
7305         width: 120px; 
7306     }
7307 }
7308 
7309   .button-login-daftar {
7310                         display: grid;
7311                         grid-template-columns: repeat(2, 1fr);
7312                         font-weight: 700;
7313                     }
7314                     .button-login-daftar a {
7315                         text-align: center;
7316                     }
7317                     .login,
7318                     .register {
7319                         color: gold;
7320                         padding: 15px 10px;
7321                         font-size: 23px;
7322                     }
7323                     .login,
7324                     .login-button {
7325                         background: linear-gradient(to bottom,#000000 0,#000000 100%);
7326                         border: 2px solid gold;
7327                     }
7328                     .register,
7329                     .register-button {
7330                         background: linear-gradient(to bottom,#000000 0,#000000 100%);
7331                         border: 2px solid gold;
7332                     }
7333 
7334 
7335 
7336 </style>
7337 
7338 <!-- wp:html -->
7339  
7339<script>
7340         document.addEventListener('DOMContentLoaded',
7341             function(){const faqItems=document.querySelectorAll('.faq-item');
7342             faqItems.forEach(item=>{const question=item.querySelector('.faq-question');
7343             question.addEventListener('click',
7344             ()=>{const isActive=item.classList.contains('active');
7345             faqItems.forEach(otherItem=>{otherItem.classList.remove('active')});
7346             if(!isActive){item.classList.add('active')}})})});
7347         </script>
7347
7348 
7349 
7350             <div class="page__overlay" data-view="offCanvasNavToggle" data-off-canvas="close" bis_skin_checked="1">
7351             </div>
7352 <div class="faq-section">
7353    <h2>FAQ TERBARU BANDAR SLOT GACOR PROVIDER PRAGMATIC EMO78</h2>
7354<div class="faq-container">
7355
7356    <div class="faq-item">
7357        <button class="faq-question">
7358            1. Apa yang dimaksud dengan EMO78 sebagai Situs Slot Gacor dan Bandar Slot777?
7359            <span></span>
7360        </button>
7361        <div class="faq-answer">
7362            <p>
7363                EMO78 merupakan platform hiburan slot online yang menggabungkan berbagai kategori permainan digital,
7364                termasuk Slot777 dan pilihan game dari sejumlah provider populer. Struktur navigasinya dirancang agar
7365                pengguna lebih mudah menemukan permainan berdasarkan provider, tema, dan fitur yang tersedia.
7366            </p>
7367        </div>
7368    </div>
7369
7370    <div class="faq-item">
7371        <button class="faq-question">
7372            2. Apakah EMO78 menyediakan permainan dari provider Pragmatic Play?
7373            <span></span>
7374        </button>
7375        <div class="faq-answer">
7376            <p>
7377                EMO78 menghadirkan kategori permainan dari provider Pragmatic Play yang dikenal memiliki beragam tema,
7378                fitur bonus, free spin, multiplier, dan mekanisme permainan yang berbeda pada setiap judul. Daftar
7379                permainan dapat berubah mengikuti pembaruan katalog yang tersedia.
7380            </p>
7381        </div>
7382    </div>
7383
7384    <div class="faq-item">
7385        <button class="faq-question">
7386            3. Apa yang dimaksud dengan kategori Slot777 di EMO78?
7387            <span></span>
7388        </button>
7389        <div class="faq-answer">
7390            <p>
7391                Slot777 merupakan salah satu istilah yang banyak digunakan untuk menggambarkan kategori permainan slot
7392                digital. Di EMO78, pengguna dapat menjelajahi berbagai pilihan permainan berdasarkan provider, tema,
7393                fitur khusus, serta karakteristik masing-masing game.
7394            </p>
7395        </div>
7396    </div>
7397
7398    <div class="faq-item">
7399        <button class="faq-question">
7400            4. Apa arti istilah Slot Gacor di EMO78?
7401            <span></span>
7402        </button>
7403        <div class="faq-answer">
7404            <p>
7405                Slot gacor adalah istilah populer yang digunakan komunitas pemain untuk menyebut permainan yang sedang
7406                banyak diperhatikan atau dianggap menarik untuk dimainkan. Istilah tersebut tidak berarti suatu game
7407                dapat menjamin kemenangan karena hasil permainan tetap ditentukan oleh mekanisme dan peluangnya.
7408            </p>
7409        </div>
7410    </div>
7411
7412    <div class="faq-item">
7413        <button class="faq-question">
7414            5. Apa fungsi informasi RTP pada game Pragmatic di EMO78?
7415            <span></span>
7416        </button>
7417        <div class="faq-answer">
7418            <p>
7419                RTP atau Return to Player merupakan persentase teoretis pengembalian permainan dalam jangka panjang.
7420                Informasi RTP dapat digunakan untuk memahami karakteristik sebuah game, tetapi tidak dapat menjamin
7421                hasil kemenangan pada setiap putaran maupun sesi permainan tertentu.
7422            </p>
7423        </div>
7424    </div>
7425
7426    <div class="faq-item">
7427        <button class="faq-question">
7428            6. Apakah EMO78 dapat diakses melalui Android dan iPhone?
7429            <span></span>
7430        </button>
7431        <div class="faq-answer">
7432            <p>
7433                Platform dengan desain responsif dapat menyesuaikan tampilan dengan berbagai ukuran layar sehingga
7434                katalog EMO78 dapat dijelajahi melalui Android, iPhone, tablet, maupun komputer menggunakan browser
7435                yang kompatibel.
7436            </p>
7437        </div>
7438    </div>
7439
7440    <div class="faq-item">
7441        <button class="faq-question">
7442            7. Bagaimana cara memilih permainan Pragmatic dan Slot777 di EMO78?
7443            <span></span>
7444        </button>
7445        <div class="faq-answer">
7446            <p>
7447                Pengguna dapat mempertimbangkan tema permainan, fitur bonus, volatilitas, RTP, jumlah paylines, serta
7448                mekanisme permainan sebelum memilih game. Gunakan informasi tersebut sebagai referensi dan hindari
7449                menganggap istilah seperti gacor, maxwin, atau pasti menang sebagai jaminan hasil permainan.
7450            </p>
7451        </div>
7452    </div>
7453
7454</div>
7455</div>
7456
7457    
7458<section class="review-section">
7459    <h2>Apa Kata Mereka Tentang EMO78</h2>
7460
7461    <div class="review-container">
7462        
7463        <div class="review-card">
7464            <img src="https://ui-avatars.com/api/?name=Arka+Zenith&background=FF4500&color=fff" class="review-avatar" alt="Avatar Arka Zenith">
7465            <div class="review-name">Arka Zenith</div>
7466            <div class="review-stars">★★★★★</div>
7467            <div class="review-text">
7468                “Saya suka menjelajahi EMO78 karena kategori Slot777 dan pilihan game dari provider Pragmatic cukup mudah ditemukan. Tampilan menunya juga sederhana, jadi tidak perlu berpindah-pindah halaman terlalu banyak.”
7469            </div>
7470        </div>
7471
7472        <div class="review-card">
7473            <img src="https://ui-avatars.com/api/?name=Raka+Vortex&background=32CD32&color=fff" class="review-avatar" alt="Avatar Raka Vortex">
7474            <div class="review-name">Raka Vortex</div>
7475            <div class="review-stars">★★★★★</div>
7476            <div class="review-text">
7477                “Bagian yang paling menarik menurut saya adalah pilihan game Pragmatic Play. Saya bisa melihat berbagai tema, fitur bonus, free spin, dan karakteristik permainan sebelum menentukan game yang ingin dijelajahi.”
7478            </div>
7479        </div>
7480
7481        <div class="review-card">
7482            <img src="https://ui-avatars.com/api/?name=Dimas+Falcon&background=8A2BE2&color=fff" class="review-avatar" alt="Avatar Dimas Falcon">
7483            <div class="review-name">Dimas Falcon</div>
7484            <div class="review-stars">★★★★★</div>
7485            <div class="review-text">
7486                “Menurut saya EMO78 cukup nyaman digunakan melalui smartphone. Kategori slot gacor, Bandar Slot777, dan provider bisa ditemukan dengan cepat karena susunan navigasinya terasa lebih terorganisasi.”
7487            </div>
7488        </div>
7489
7490        <div class="review-card">
7491            <img src="https://ui-avatars.com/api/?name=Kevin+Orion&background=FF8C00&color=fff" class="review-avatar" alt="Avatar Kevin Orion">
7492            <div class="review-name">Kevin Orion</div>
7493            <div class="review-stars">★★★★★</div>
7494            <div class="review-text">
7495                “Saya biasanya membandingkan beberapa permainan berdasarkan tema, RTP, volatilitas, dan fitur yang tersedia. EMO78 membuat proses pencarian game Slot777 dan Pragmatic terasa lebih praktis karena kategorinya tersusun cukup jelas.”
7496            </div>
7497        </div>
7498
7499    </div>
7500</section>
7501 
7502 
7503 <div class="overlay overlay-cart"></div>
7504 <div id="CartDrawer" class="drawer drawer--right">
7505   <div class="drawer__header pl-2 pr-2">
7506     <div class="drawer__icon-cart display-table-cell">
7507       <a href="/cart" class="">
7508         <svg class="icon icon-cart" version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> <path fill="#fff" d="M13.638 23.203c0 0 3.5-2.113 3.502-4.11 0.002-2.304-2.689-3.537-3.497-1.76-0.916-1.778-3.493-1.714-3.497 0.59-0.003 1.999 3.491 5.28 3.491 5.28z"></path> <path fill="#fff" d="M8.112 9.809v16.662l11.063 2.491v-17.58l-11.063-1.573zM7.74 8.858l11.925 1.696c0.213 0.030 0.372 0.218 0.372 0.44v18.519c0 0.284-0.254 0.495-0.523 0.434l-11.925-2.685c-0.198-0.045-0.339-0.225-0.339-0.434v-17.53c0-0.27 0.231-0.477 0.49-0.44z"></path> <path fill="#fff" d="M23.7 10.046l-3.275 0.146-0.388 0.897v17.656l3.664-2.174v-16.526zM24.346 27.214l-4.526 2.685c-0.287 0.17-0.646-0.043-0.646-0.385v-18.519l0.037-0.181 0.534-1.235c0.067-0.154 0.212-0.256 0.375-0.263l3.991-0.178c0.245-0.011 0.45 0.191 0.45 0.444v17.247c0 0.159-0.082 0.306-0.216 0.385z"></path> <path fill="#000" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M11.336 8.354l-0.257-0.333c-0.243-0.315 0.012-0.774 0.398-0.717l12.51 1.838c0.236 0.035 0.399 0.26 0.366 0.503s-0.252 0.412-0.487 0.377l-11.436-1.68 0.056 0.073c0.209 0.27 0.052 0.672-0.281 0.718l-4.467 0.607c-0.236 0.032-0.452-0.139-0.484-0.383s0.135-0.467 0.371-0.499l3.711-0.504z"></path> <path fill="#fff" d="M17.152 11.344c0.026-0.003 0.053-0.005 0.079-0.005 0.357 0 0.645 0.297 0.645 0.665s-0.288 0.665-0.645 0.665c-0.322 0-0.59-0.245-0.637-0.565-0.383-0.45-0.515-1.321-0.521-2.536-0.003-0.556 0.026-1.149 0.076-1.739 0.028-0.339 0.057-0.603 0.074-0.735 0.195-2.391-2.008-3.379-3.568-1.658-0.64 0.707-1.041 1.855-1.266 3.412-0.092 0.634-0.137 1.111-0.194 2.024 0.107 0.119 0.172 0.278 0.172 0.453 0 0.342-0.251 0.624-0.573 0.661-0.031 0.005-0.064 0.007-0.097 0.005-0.015-0.001-0.029-0.003-0.044-0.
7508005-0.324-0.036-0.576-0.318-0.576-0.661 0-0.218 0.102-0.412 0.259-0.533 0.058-0.924 0.105-1.415 0.201-2.075 0.249-1.719 0.703-3.020 1.489-3.888 2.114-2.335 5.321-0.897 5.054 2.359-0.018 0.141-0.045 0.392-0.072 0.717-0.047 0.566-0.075 1.133-0.073 1.658 0.004 0.839 0.098 1.47 0.216 1.78z"></path> <path fill="#fff" d="M14.43 8.138c-0.008 0.245-0.207 0.438-0.445 0.43s-0.424-0.213-0.417-0.459c0.001-0.026 0.001-0.026 0.002-0.051 0.029-0.909 0.047-1.282 0.102-1.792 0.164-1.528 0.58-2.665 1.434-3.481 2.037-1.949 5.235-0.623 5.066 2.208-0.007 0.119-0.018 0.331-0.029 0.608-0.022 0.539-0.033 1.084-0.029 1.59 0.007 0.797 0.053 1.412 0.139 1.744 0.062 0.237-0.075 0.481-0.305 0.544s-0.466-0.077-0.528-0.314c-0.111-0.427-0.161-1.097-0.168-1.966-0.004-0.523 0.007-1.081 0.029-1.634 0.011-0.284 0.023-0.502 0.030-0.626 0.119-1.995-2.13-2.927-3.619-1.501-0.673 0.644-1.021 1.591-1.164 2.927-0.051 0.479-0.069 0.838-0.097 1.723-0.001 0.026-0.001 0.026-0.002 0.052z"></path> </svg>
7509       </a>
7510     </div>
7511     <div class="drawer__title h4">Keranjang Belanja</div>
7512     <div class="drawer__close js-drawer-close">
7513       <button type="button">
7514         <svg class="icon icon-close" version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32">
7515 <title>icon-close</title>
7516 <path d="M16.943 16l8.862 8.862c0.26 0.26 0.26 0.682 0 0.943s-0.682 0.26-0.943 0l-8.862-8.862-8.862 8.862c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l8.862-8.862-8.862-8.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8.862 8.862 8.862-8.862c0.26-0.26 0.682-0.26 0.943 0s0.26 0.682 0 0.943l-8.862 8.862z"></path>
7517 </svg>
7518       </button>
7519     </div>
7520   </div>
7521   <div id="CartContainer" class="p-2"></div>
7522 </div>
7523 
7524 
7524<script>
7525       
7526     </script>
7526
7527       
7527<script src="//outerbloom.com/cdn/shop/t/138/assets/handlebars.min.js?v=79044469952368397291752652415" defer></script>
7527
7528       <!-- /snippets/ajax-cart-template.liquid -->
7529 
7530   
7530<script id="CartTemplate" type="text/template">
7531   
7532     <form action="/cart" method="post" novalidate class="cart ajaxcart">
7533       <div class="ajaxcart__inner" {{ cart.item_count }}>
7534         {{#items}}
7535         <div class="ajaxcart__product">
7536           <div class="ajaxcart__row" data-line="{{line}}">
7537             <div class="grid">
7538               <div class="grid__item one-quarter">
7539                 <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a>
7540               </div>
7541               <div class="grid__item three-quarters">
7542                 <p class="d-block mb-3">
7543                   <a class="h4 d-block mb-2" href="{{url}}" class="ajaxcart__product-name">{{name}}</a>
7544                   {{#if variation}}
7545                     <span class="ajaxcart__product-meta p">{{variation}}</span>
7546                   {{/if}}
7547                   {{#properties}}
7548                     {{#each this}}
7549                       {{#if this}}
7550                         <span class="ajaxcart__product-meta p hide">{{@key}}: {{this}}</span>
7551                       {{/if}}
7552                     {{/each}}
7553                   {{/properties}}
7554                   
7555                 </p>
7556                 <div class="grid--full display-table">
7557                   <div class="grid__item display-table-cell one-half">
7558                     <div class="ajaxcart__qty">
7559                       <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}">
7560                         <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-minus</title><path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path></svg>
7561                         <span class="visually-hidden">Kurangi jumlah barang</span>
7562                       </button>
7563                       <input type="text" name="updates[]" class="btn ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" data-line="{{line}}" aria-label="quantity" pattern="[0-9]*">
7564                       <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}">
7565                         <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg>
7566                         <span class="visually-hidden">Tambahkan jumlah barang</span>
7567                       </button>
7568                     </div>
7569                   </div>
7570                   <div class="grid__item display-table-cell one-half text-right">
7571                     {{#if discountsApplied}}
7572                       <small class="ajaxcart-item__price-strikethrough"><s>{{{originalLinePrice}}}</s></small>
7573                       <br><span class="h4">{{{linePrice}}}</span>
7574                     {{else}}
7575                       <span class="h4">{{{linePrice}}}</span>
7576                     {{/if}}
7577                     </div>
7578                   </div>
7579                   {{#if discountsApplied}}
7580                     <div class="grid--full display-table">
7581                       <div class="grid__item text-right">
7582                         {{#each discounts}}
7583                           <small class="ajaxcart-item__discount">{{ this.title }}</small><br>
7584                         {{/each}}
7585                       </div>
7586                     </div>
7587                   {{/if}}
7588                   </div>
7589                 </div>
7590               </div>
7591             </div>
7592           </div>
7593         </div>
7594         {{/items}}
7595       </div>
7596       <div class="ajaxcart__footer">
7597         <div class="grid--full cart-subtotal py-2">
7598             <p>Subtotal</p>
7599             <h3 class="primary">{{{totalPrice}}}</h3>
7600           {{#if totalCartDiscount}}
7601             <p class="ajaxcart__savings text-center"><em>{{{totalCartDiscount}}}</em></p>
7602           {{/if}}
7603         </div>
7604         
7605         <a href="/cart" class="btn btn-cta view-more btn-block cart__checkout mt-2">Checkout</a>
7606         
7607         <p class="cart-checkout-shipping hide">Free Ongkir dengan belanja di atas Rp.10.000 <a href="/pages/pengiriman">detail</a></p>
7608       </div>
7609     </form>
7610   
7611   </script>
7611
7612   
7612<script id="AjaxQty" type="text/template">
7613   
7614     <div class="ajaxcart__qty">
7615       <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}">
7616         <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32">
7617             <title>icon-minus</title>
7618             <path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path>
7619         </svg>
7620         <span class="visually-hidden">Kurangi jumlah barang</span>
7621           </button>
7622               <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*">
7623           <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-qty="{{itemAdd}}">
7624         <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg>
7625         <span class="visually-hidden">Tambahkan jumlah barang</span>
7626       </button>
7627     </div>
7628   
7629   </script>
7629
7630   
7630<script id="JsQty" type="text/template">
7631   
7632     <div class="js-qty mx-auto mt-2">
7633       <button type="button" class="js-qty__adjust js-qty__adjust--minus" data-id="{{key}}" data-qty="{{itemMinus}}">
7634         <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-minus</title><path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path></svg>
7635         <span class="visually-hidden">Kurangi jumlah barang</span>
7636       </button>
7637       <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}">
7638       <button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{key}}" data-qty="{{itemAdd}}">
7639         <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg>
7640         <span class="visually-hidden">Tambahkan jumlah barang</span>
7641       </button>
7642     </div>
7643   
7644   </script>
7644
7645 
7646 <style>
7647   #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty button,
7648   #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty button,
7649   #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty button {display: none;}
7650   #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input,
7651   #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input,
7652   #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;opacity: 0.5;}
7653   #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input,
7654   #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input,
7655   #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;}
7656 </style>
7657       
7657<script src="//outerbloom.com/cdn/shop/t/138/assets/ajax-cart.js?v=51128912329657147331752652452" defer></script>
7657
7658       
7658<script>
7659         jQuery(function($) {
7660           ajaxCart.init({
7661             formSelector: '#AddToCartForm',
7662             cartContainer: '#CartContainer',
7663             addToCartSelector: '#AddToCartXX',
7664             cartCountSelector: '#CartCount, #CartCount2',
7665             cartCostSelector: '#CartCost',
7666             moneyFormat: "Rp {{amount_no_decimals}}"
7667           });
7668           });
7669 
7670           jQuery(document.body).on('afterCartLoad.ajaxCart', function(evt, cart) {
7671             // Bind to 'afterCartLoad.ajaxCart' to run any javascript after the cart has loaded in the DOM
7672             timber.RightDrawer.open();
7673           });
7674       </script>
7674
7675     
7676 
7677 
7678 
7679 <style>
7680   /** Search AutoComplete **/
7681   .resultsearch .ui-menu-item[data-cat="Collection"],
7682   .resultsearch .ui-menu-item[data-cat="Collection"] {display: none;}
7683   .resultsearch .ui-widget.ui-widget-content {
7684     width: 100%;
7685     top: 48px;
7686     border: none;
7687     box-shadow: 0 4px 8px rgba(255, 255, 255, 0.3);
7688   }
7689   .resultsearch .ui-menu-item {text-align: left;}
7690   .resultsearch .ui-menu-item>a, .resultsearch .ui-menu-item>span {display: inline-block;width: 100%;font-size: 16px;}.resultsearch .ui-menu-item img {vertical-align: middle;}.resultsearch .ui-menu-item a[data-cat="Collection"] img {display: none;}.resultsearch .ui-menu .ui-state-focus, .resultsearch .ui-menu .ui-state-active {margin: 0;}.ui-state-active, .ui-widget-content .ui-state-active {background: #f2f2f2;border: none;color: #ffffff;}.resultsearch .ui-menu-item>a,.resultsearch .ui-menu-item>span {display: inline-block;width: 100%;font-size: 13px;}.resultsearch .ui-menu-item a[data-cat="Produk"] img {margin-right: 10px;}.resultsearch .ui-menu-item a[data-cat="Produk"] .price {float: right;padding: 15px 0;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"]:before {content: "Product Populer";font-size: 13px;padding: 5px;margin: 5px 0;background: #f2f2f2;width: 100%;display: block;color: #ffffff;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"] span {display: none;}
7691   .ui-state-active {
7692     border: none!important;
7693     background-color: #fafafa!important;
7694     color: #000!important;
7695   }
7696   .ui-menu-item a[data-cat="Collection"] {padding: 5px 12px;}
7697   .ui-menu .ui-menu-item {line-height: normal;}
7698 </style>
7699 
7699<script>
7700 $(window).load(function(){
7701 
7702   function format(item) {var cell = '';cell += "<a data-cat=" + item.category + " " + "href=" + item.url + ">" + "<img src=" + item.images + "/>" + "<span class='title'>" + item.label + "</span>" + "<span class='price'>" + item.price + "</span>" + "</a>";return cell;}
7703 
7704   $.widget("custom.catcomplete", $.ui.autocomplete, {
7705     _renderMenu: function (ul, items) {
7706       // have search reults split up in categories
7707       var that = this,
7708           currentCategory = "";
7709       $.each(items, function (index, item) {
7710         if (item.category != currentCategory) {
7711           ul.append("<li class='ui-autocomplete-category' data-cat=" + item.category + ">" + "<span>" + item.category + "</span>" + "</li>");
7712           currentCategory = item.category;
7713         }
7714         that._renderItemData(ul, item);
7715       });
7716     }
7717   });
7718 
7719   // higlight searched for term
7720   $.ui.autocomplete.prototype._renderItem = function( ul, item ) {
7721     var term = this.element.val(),
7722         html = item.label.replace( term, "<b>$&</b>" );
7723     return $( "<li>" )
7724     .append(format(item))
7725     .appendTo( ul );
7726   };
7727 
7728 
7729   var data = [
7730       { label: "< Rp 500.000", category: "Collection", url: "/collections/rp-500-000", images: " ", price: " " },{ label: "> Rp 1.000.000", category: "Collection", url: "/collections/rp-1-000-000", images: " ", price: " " },{ label: "Acrylic Jewelry Box", category: "Collection", url: "/collections/acrylic-jewelry-box", images: " ", price: " " },{ label: "Ajmal", category: "Collection", url: "/collections/ajmal", images: " ", price: " " },{ label: "Alamat Rumah Duka", category: "Collection", url: "/collections/rumah-duka", images: " ", price: " " },{ label: "Anggrek Bulan", category: "Collection", url: "/collections/anggrek-bulan", images: " ", price: " " },{ label: "Anniversary Gift", category: "Collection", url: "/collections/kado-anniversary", images: " ", price: " " },{ label: "Aquarius ♒️ 20Jan - 18Feb", category: "Collection", url: "/collections/kado-untuk-zodiak-aquarius", images: " ", price: " " },{ label: "Aries ♈️ 21March - 19April", category: "Collection", url: "/collections/kado-untuk-zodiak-aries", images: " ", price: " " },{ label: "Armaf", category: "Collection", url: "/collections/armaf", images: " ", price: " " },{ label: "Aromatherapy Diffuser", category: "Collection", url: "/collections/aromatherapy-diffuser", images: " ", price: " " },{ label: "Artisan Soap", category: "Collection", url: "/collections/artisan-soap", images: " ", price: " " },{ label: "Artisan Tea", category: "Collection", url: "/collections/artisan-tea", images: " ", price: " " },{ label: "AsmaraKu", category: "Collection", url: "/collections/asmaraku", images: " ", price: " " },{ label: "Atkinsons", category: "Collection", url: "/collections/atkinsons", images: " ", price: " " },{ label: "Autumn by Outerbloom", category: "Collection", url: "/collections/autumn-by-outerbloom", images: " ", price: " " },{ label: "Autumn by Outerbloom Chinese New Year", category: "Collection", url: "/collections/autumn-by-outerbloom-chinese-new-year", images: " ", price: " " },{ label: "Autumn by Outerbloom Christmas", category: "Collection", url: "/collections/autumn-by-outerbloom-christmas", images: " ", price: " " },{ label: "Autumn by Outerbloom Luar Jadetabek", category: "Collection", url: "/collections/autumn-by-outerbloom-luar-jadetabek", images: " ", price: " " },{ label: "Autumn by Outerbloom Ramadan", category: "Collection", url: "/collections/autumn-by-outerbloom-ramadan", images: " ", price: " " },{ label: "Autumn Pop", category: "Collection", url: "/collections/autumn-pop", images: " ", price: " " },{ label: "Bachelorette", category: "Collection", url: "/collections/bachelorette", images: " ", price: " " },{ label: "Bag Newborn Hampers", category: "Collection", url: "/collections/bag-newborn-hampers", images: " ", price: " " },{ label: "Balon", category: "Collection", url: "/collections/balon", images: " ", price: " " },{ label: "Beauty Package", category: "Collection", url: "/collections/beauty-package", images: " ", price: " " },{ label: "Best Deal", category: "Collection", url: "/collections/best-deal", images: " ", price: " " },{ label: "Best Seller", category: "Collection", url: "/collections/best-seller", images: " ", price: " " },{ label: "Best Valentine's Deals", category: "Collection", url: "/collections/bes-valentines-deals", images: " ", price: " " },{ label: "Best Value Newborn Hampers Collection", category: "Collection", url: "/collections/best-value-newborn-hampers-collection", images: " ", price: " " },{ label: "Black Tea", category: "Collection", url: "/collections/black-tea", images: " ", price: " " },{ label: "Blessing Hampers", category: "Collection", url: "/collections/blessing-hampers", images: " ", price: " " },{ label: "Bloom Box", category: "Collection", url: "/collections/bloom-box", images: " ", price: " " },{ label: "Bloomcard", category: "Collection", url: "/collections/bloomcard", images: " ", price: " " },{ label: "Boutonniere", category: "Collection", url: "/collections/boutonniere", images: " ", price: " " },{ label: "Bracelet", category: "Collection", url: "/collections/gelang", images: " ", price: " " },{ label: "Buket Bunga Bali", category: "Collection", url: "/collections/buket-bunga-bali", images: " ", price: " " },{ label: "Buket Bunga Bandung", category: "Collection", url: "/collections/buket-bunga-bandung", images: " ", price: " " },{ label: "Buket Bunga Batam", category: "Collection", url: "/collections/buket-bunga-batam", images: " ", price: " " },{ label: "Buket Bunga Demak", category: "Collection", url: "/collections/buket-bunga-demak", images: " ", price: " " },{ label: "Buket Bunga Fresh", category: "Collection", url: "/collections/buket-bunga", images: " ", price: " " },{ label: "Buket Bunga Jepara", category: "Collection", url: "/collections/buket-bunga-jepara", images: " ", price: " " },{ label: "Buket Bunga Medan", category: "Collection", url: "/collections/buket-bunga-medan", images: " ", price: " " },{ label: "Buket Bunga Nusantara", category: "Collection", url: "/collections/buket-bunga-nusantara", images: " ", price: " " },{ label: "Buket Bunga Semarang", category: "Collection", url: "/collections/buket-bunga-semarang", images: " ", price: " " },{ label: "Buket Bunga Sidoarjo", category: "Collection", url: "/collections/buket-bunga-sidoarjo", images: " ", price: " " },{ label: "Buket Bunga Surabaya", category: "Collection", url: "/collections/buket-bunga-surabaya", images: " ", price: " " },{ label: "Buket Bunga Tangerang", category: "Collection", url: "/collections/buket-bunga-tangerang", images: " ", price: " " },{ label: "Buket Bunga Uang", category: "Collection", url: "/collections/buket-bunga-uang", images: " ", price: " " },{ label: "Buket Bunga Valentine", category: "Collection", url: "/collections/buket-bunga-valentine", images: " ", price: " " },{ label: "Buket Bunga Yogyakarta", category: "Collection", url: "/collections/buket-bunga-jogja", images: " ", price: " " },{ label: "Bunga Anggrek Bali", category: "Collection", url: "/collections/bunga-anggrek-bali", images: " ", price: " " },{ label: "Bunga Anggrek Bandung", category: "Collection", url: "/collections/bunga-anggrek-bandung", images: " ", price: " " },{ label: "Bunga Anggrek Surabaya", category: "Collection", url: "/collections/bunga-anggrek-surabaya", images: " ", price: " " },{ label: "Bunga Anniversary", category: "Collection", url: "/collections/bunga-anniversary", images: " ", price: " " },{ label: "Bunga Artificial", category: "Collection", url: "/collections/bunga-artificial", images: " ", price: " " },{ label: "Bunga Buket", category: "Collection", url: "/collections/bunga-buket", images: " ", price: " " },{ label: "Bunga Carnations Bali", category: "Collection", url: "/collections/bunga-carnations-bali", images: " ", price: " " },{ label: "Bunga Carnations Bandung", category: "Collection", url: "/collections/bunga-carnations-bandung", images: " ", price: " " },{ label: "Bunga Carnations Surabaya", category: "Collection", url: "/collections/bunga-carnations-surabaya", images: " ", price: " " },{ label: "Bunga Daisy Bali", category: "Collection", url: "/collections/bunga-daisy-bali", images: " ", price: " " },{ label: "Bunga Daisy Bandung", category: "Collection", url: "/collections/bunga-daisy-bandung", images: " ", price: " " },{ label: "Bunga Daisy Surabaya", category: "Collection", url: "/collections/bunga-daisy-surabaya", images: " ", price: " " },{ label: "Bunga Gerbera Bali", category: "Collection", url: "/collections/bunga-gerbera-bali", images: " ", price: " " },{ label: "Bunga Gerbera Bandung", category: "Collection", url: "/collections/bunga-gerbera-bandung", images: " ", price: " " },{ label: "Bunga Gerbera Surabaya", category: "Collection", url: "/collections/bunga-gerbera-surabaya", images: " ", price: " " },{ label: "Bunga Imlek", category: "Collection", url: "/collections/rangkaian-bunga-tahun-baru-imlek", images: " ", price: " " },{ label: "Bunga Lebaran", category: "Collection", url: "/collections/rangkaian-bunga-lebaran", images: " ", price: " " },{ label: "Bunga Lily Bali", category: "Collection", url: "/collections/bunga-lily-bali", images: " ", price: " " },{ label: "Bunga Lily Bandung", category: "Collection", url: "/collections/bunga-lily-bandung", images: " ", price: " " },{ label: "Bunga Lily Surabaya", category: "Collection", url: "/collections/bunga-lily-surabaya", images: " ", price: " " },{ label: "Bunga Matahari Bali", category: "Collection", url: "/collections/bunga-matahari-bali", images: " ", price: " " },{ label: "Bunga Matahari Bandung", category: "Collection", url: "/collections/bunga-matahari-bandung", images: " ", price: " " },{ label: "Bunga Matahari Surabaya", category: "Collection", url: "/collections/bunga-matahari-surabaya", images: " ", price: " " },{ label: "Bunga Mawar Bali", category: "Collection", url: "/collections/bunga-mawar-bali", images: " ", price: " " },{ label: "Bunga Mawar Bandung", category: "Collection", url: "/collections/bunga-mawar-bandung", images: " ", price: " " },{ label: "Bunga Mawar Surabaya", category: "Collection", url: "/collections/bunga-mawar-surabaya", images: " ", price: " " },{ label: "Bunga Meja", category: "Collection", url: "/collections/bunga-meja", images: " ", price: " " },{ label: "Bunga Meja Bali", category: "Collection", url: "/collections/bunga-meja-bali", images: " ", price: " " },{ label: "Bunga Meja Bandung", category: "Collection", url: "/collections/bunga-meja-bandung", images: " ", price: " " },{ label: "Bunga Meja Batam", category: "Collection", url: "/collections/bunga-meja-batam", images: " ", price: " " },{ label: "Bunga Meja Jepara", category: "Collection", url: "/collections/bunga-meja-jepara", images: " ", price: " " },{ label: "Bunga Meja Medan", category: "Collection", url: "/collections/bunga-meja-medan", images: " ", price: " " },{ label: "Bunga Meja Semarang", category: "Collection", url: "/collections/bunga-meja-semarang", images: " ", price: " " },{ label: "Bunga Meja Sidoarjo", category: "Collection", url: "/collections/bunga-meja-sidoarjo", images: " ", price: " " },{ label: "Bunga Meja Surabaya", category: "Collection", url: "/collections/bunga-meja-surabaya", images: " ", price: " " },{ label: "Bunga Meja Tangerang", category: "Collection", url: "/collections/bunga-meja-tangerang", images: " ", price: " " },{ label: "Bunga Meja Yogyakarta", category: "Collection", url: "/collections/bunga-meja-jogja", images: " ", price: " " },{ label: "Bunga Modern Pastel Bali", category: "Collection", url: "/collections/bunga-modern-pastel-bali", images: " ", price: " " },{ label: "Bunga Modern Pastel Bandung", category: "Collection", url: "/collections/bunga-modern-pastel-bandung", images: " ", price: " " },{ label: "Bunga Modern Pastel Medan", category: "Collection", url: "/collections/bunga-modern-pastel-medan", images: " ", price: " " },{ label: "Bunga Modern Pastel Semarang", category: "Collection", url: "/collections/bunga-modern-pastel-semarang", images: " ", price: " " },{ label: "Bunga Modern Pastel Surabaya", category: "Collection", url: "/collections/bunga-modern-pastel-surabaya", images: " ", price: " " },{ label: "Bunga Modern Pastel Yogyakarta", category: "Collection", url: "/collections/bunga-modern-pastel-yogyakarta", images: " ", price: " " },{ label: "Bunga Natal", category: "Collection", url: "/collections/rangkaian-bunga-christmas", images: " ", price: " " },{ label: "Bunga Papan", category: "Collection", url: "/collections/bunga-papan", images: " ", price: " " },{ label: "Bunga Pernikahan", category: "Collection", url: "/collections/bunga-pernikahan", images: " ", price: " " },{ label: "Bunga Plastik", category: "Collection", url: "/collections/bunga-plastik", images: " ", price: " " },{ label: "Bunga Tulip", category: "Collection", url: "/collections/bunga-tulip", images: " ", price: " " },{ label: "Bunga Ulang Tahun", category: "Collection", url: "/collections/bunga-ulang-tahun", images: " ", price: " " },{ label: "Bunga Wisuda", category: "Collection", url: "/collections/karangan-bunga-wisuda", images: " ", price: " " },{ label: "Cake", category: "Collection", url: "/collections/kue", images: " ", price: " " },{ label: "Cake", category: "Collection", url: "/collections/cake", images: " ", price: " " },{ label: "Cake Sameday Delivery", category: "Collection", url: "/collections/cake-sameday-delivery", images: " ", price: " " },{ label: "Cake, Hampers & Gifts", category: "Collection", url: "/collections/cake-hampers", images: " ", price: " " },{ label: "Cancer ♋️ 22June - 22July", category: "Collection", url: "/collections/kado-untuk-zodiak-cancer", images: " ", price: " " },{ label: "Capricorn ♑️ 21Dec - 19Jan", category: "Collection", url: "/collections/kado-untuk-zodiak-capricorn", images: " ", price: " " },{ label: "Care Packages", category: "Collection", url: "/collections/toko-parcel-murah", images: " ", price: " " },{ label: "Care Packages (Keluarga, Sahabat, Karyawan)", category: "Collection", url: "/collections/sehat-bebas-corona", images: " ", price: " " },{ label: "Carnations", category: "Collection", url: "/collections/bunga-anyelir", images: " ", price: " " },{ label: "Celebration", category: "Collection", url: "/collections/celebration", images: " ", price: " " },{ label: "Chléa Paperie", category: "Collection", url: "/collections/chlea-paperie", images: " ", price: " " },{ label: "Chocodot", category: "Collection", url: "/collections/chocodot", images: " ", price: " " },{ label: "Christmas", category: "Collection", url: "/collections/christmas", images: " ", price: " " },{ label: "Classic Cake", category: "Collection", url: "/collections/classic-cake", images: " ", price: " " },{ label: "Classic CNY Hampers", category: "Collection", url: "/collections/classic-cny-hampers", images: " ", price: " " },{ label: "Classic CNY Hampers Luar Jabodetabek", category: "Collection", url: "/collections/classic-cny-hampers-luar-jabodetabek", images: " ", price: " " },{ label: "Classic Hampers", category: "Collection", url: "/collections/classic-hampers", images: " ", price: " " },{ label: "Classic Hampers Luar Jadetabek", category: "Collection", url: "/collections/classic-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Classic Style Flowers", category: "Collection", url: "/collections/classic-style-flowers", images: " ", price: " " },{ label: "Cokelat", category: "Collection", url: "/collections/permen-coklat", images: " ", price: " " },{ label: "Collection List", category: "Collection", url: "/collections/collection-list", images: " ", price: " " },{ label: "Condolences", category: "Collection", url: "/collections/axa-condolences", images: " ", price: " " },{ label: "Congratulations", category: "Collection", url: "/collections/rangkaian-bunga-ucapan-selamat", images: " ", price: " " },{ label: "Corporate Gifts", category: "Collection", url: "/collections/corporate-gifts", images: " ", price: " " },{ label: "Corporate Hampers", category: "Collection", url: "/collections/corporate-hampers", images: " ", price: " " },{ label: "Couple Gift", category: "Collection", url: "/collections/couple-gift", images: " ", price: " " },{ label: "Craft Sweetbox Newborn", category: "Co
7730llection", url: "/collections/craft-sweetbox-newborn", images: " ", price: " " },{ label: "Crystal Florarium", category: "Collection", url: "/collections/crystal-florarium", images: " ", price: " " },{ label: "Cuddlemate Doll", category: "Collection", url: "/collections/boneka-lucu", images: " ", price: " " },{ label: "Cufflinks", category: "Collection", url: "/collections/cufflinks", images: " ", price: " " },{ label: "Cupcakes", category: "Collection", url: "/collections/cupcakes", images: " ", price: " " },{ label: "Custom Alat Tulis", category: "Collection", url: "/collections/alat-tulis", images: " ", price: " " },{ label: "Custom Cake", category: "Collection", url: "/collections/custom-cake", images: " ", price: " " },{ label: "Custom Card Holder", category: "Collection", url: "/collections/custom-card-holder", images: " ", price: " " },{ label: "Custom Coaster", category: "Collection", url: "/collections/custom-coaster", images: " ", price: " " },{ label: "Custom Cutlery", category: "Collection", url: "/collections/custom-cutlery", images: " ", price: " " },{ label: "Custom E-Money", category: "Collection", url: "/collections/custom-e-money", images: " ", price: " " },{ label: "Custom Earpod", category: "Collection", url: "/collections/custom-earpod", images: " ", price: " " },{ label: "Custom Fan", category: "Collection", url: "/collections/custom-fan", images: " ", price: " " },{ label: "Custom Jewelry", category: "Collection", url: "/collections/custom-jewelry", images: " ", price: " " },{ label: "Custom Keychain", category: "Collection", url: "/collections/custom-keychain", images: " ", price: " " },{ label: "Custom Medallion", category: "Collection", url: "/collections/custom-medallion", images: " ", price: " " },{ label: "Custom Mirror", category: "Collection", url: "/collections/custom-mirror", images: " ", price: " " },{ label: "Custom Mug", category: "Collection", url: "/collections/custom-mug", images: " ", price: " " },{ label: "Custom Necklace", category: "Collection", url: "/collections/custom-necklace", images: " ", price: " " },{ label: "Custom Notebook", category: "Collection", url: "/collections/custom-notebook", images: " ", price: " " },{ label: "Custom Pen & Pencil", category: "Collection", url: "/collections/custom-pen-pencil", images: " ", price: " " },{ label: "Custom Photo Frame", category: "Collection", url: "/collections/photo-frame", images: " ", price: " " },{ label: "Custom Pillow", category: "Collection", url: "/collections/bantal-custom", images: " ", price: " " },{ label: "Custom Powerbank", category: "Collection", url: "/collections/custom-powerbank", images: " ", price: " " },{ label: "Custom Scarf", category: "Collection", url: "/collections/custom-scarf", images: " ", price: " " },{ label: "Custom Speaker", category: "Collection", url: "/collections/custom-speaker", images: " ", price: " " },{ label: "Custom T-Shirt", category: "Collection", url: "/collections/custom-t-shirt", images: " ", price: " " },{ label: "Custom Tote Bag", category: "Collection", url: "/collections/custom-tote-bag", images: " ", price: " " },{ label: "Custom Tumbler Minuman", category: "Collection", url: "/collections/custom-tumbler-minuman", images: " ", price: " " },{ label: "D'paris", category: "Collection", url: "/collections/dparis", images: " ", price: " " },{ label: "Daisy", category: "Collection", url: "/collections/bunga-aster", images: " ", price: " " },{ label: "Dekorasi", category: "Collection", url: "/collections/dekorasi", images: " ", price: " " },{ label: "Dekorasi Duka Cita", category: "Collection", url: "/collections/dekorasi-bunga-duka-cita", images: " ", price: " " },{ label: "Dekorasi Pemakaman", category: "Collection", url: "/collections/dekorasi-pemakaman", images: " ", price: " " },{ label: "Dekorasi Pernikahan", category: "Collection", url: "/collections/dekorasi-bunga-pernikahan", images: " ", price: " " },{ label: "Dekorasi Ulang Tahun", category: "Collection", url: "/collections/dekorasi-bunga-ulang-tahun", images: " ", price: " " },{ label: "Delivery", category: "Collection", url: "/collections/delivery", images: " ", price: " " },{ label: "Deluxe Newborn Hampers Collection", category: "Collection", url: "/collections/deluxe-newborn-hampers-collection", images: " ", price: " " },{ label: "Digital Gift", category: "Collection", url: "/collections/digital-gift", images: " ", price: " " },{ label: "Donasi", category: "Collection", url: "/collections/donasi", images: " ", price: " " },{ label: "E-Card", category: "Collection", url: "/collections/ecard", images: " ", price: " " },{ label: "E-Gift Card", category: "Collection", url: "/collections/e-gift-card", images: " ", price: " " },{ label: "Earrings", category: "Collection", url: "/collections/anting", images: " ", price: " " },{ label: "Edible Gift", category: "Collection", url: "/collections/edible-gift", images: " ", price: " " },{ label: "Enchanted Grande Love Pirouette", category: "Collection", url: "/collections/enchanted-grande-love-pirouette", images: " ", price: " " },{ label: "Enchanted Love Pirouette", category: "Collection", url: "/collections/enchanted-love-pirouette", images: " ", price: " " },{ label: "Engagement", category: "Collection", url: "/collections/rangkaian-bunga-lamaran", images: " ", price: " " },{ label: "Expression", category: "Collection", url: "/collections/expression", images: " ", price: " " }
7730,{ label: "Father's Day Special", category: "Collection", url: "/collections/kado-untuk-ayah", images: " ", price: " " },{ label: "Ferrari", category: "Collection", url: "/collections/ferrari", images: " ", price: " " },{ label: "Ferrero Rocher", category: "Collection", url: "/collections/ferrero-rocher", images: " ", price: " " },{ label: "Festival Belanja Online", category: "Collection", url: "/collections/fbo-2018", images: " ", price: " " },{ label: "Floatbox", category: "Collection", url: "/collections/floatbox", images: " ", price: " " },{ label: "Flower", category: "Collection", url: "/collections/flower", images: " ", price: " " },{ label: "Flower Best Deals", category: "Collection", url: "/collections/flower-best-deals", images: " ", price: " " },{ label: "Flowers", category: "Collection", url: "/collections/toko-bunga", images: " ", price: " " },{ label: "Flowers For Him", category: "Collection", url: "/collections/bunga-untuk-pria", images: " ", price: " " },{ label: "Flowers Style", category: "Collection", url: "/collections/style", images: " ", price: " " },{ label: "Flowers Type", category: "Collection", url: "/collections/type", images: " ", price: " " },{ label: "For Her", category: "Collection", url: "/collections/kado-untuk-wanita", images: " ", price: " " },{ label: "For Him", category: "Collection", url: "/collections/kado-untuk-pria", images: " ", price: " " },{ label: "Forever Flower", category: "Collection", url: "/collections/forever-flower", images: " ", price: " " },{ label: "Forever Flower Holo Series", category: "Collection", url: "/collections/forever-flower-holo-series", images: " ", price: " " },{ label: "Forever Flower x NestBloom", category: "Collection", url: "/collections/forever-flower-x-nestbloom", images: " ", price: " " },{ label: "Fortune Hampers", category: "Collection", url: "/collections/fortune-hampers", images: " ", price: " " },{ label: "Frank & Co", category: "Collection", url: "/collections/franknco", images: " ", price: " " },{ label: "Fresh Flowers", category: "Collection", url: "/collections/fresh-flower", images: " ", price: " " },{ label: "Gantungan Kunci", category: "Collection", url: "/collections/gantungan-kunci", images: " ", price: " " },{ label: "Gelato", category: "Collection", url: "/collections/gelato", images: " ", price: " " },{ label: "Gelato Pie", category: "Collection", url: "/collections/gelato-pie", images: " ", price: " " },{ label: "Gemini ♊️ 21May - 21June", category: "Collection", url: "/collections/kado-untuk-zodiak-gemini", images: " ", price: " " },{ label: "Gerbera", category: "Collection", url: "/collections/gerbera", images: " ", price: " " },{ label: "Get Well Soon", category: "Collection", url: "/collections/rangkaian-bunga-gws", images: " ", price: " " },{ label: "Giant Flower Bali", category: "Collection", url: "/collections/giant-flower-bali", images: " ", price: " " },{ label: "Giant Flower Bandung", category: "Collection", url: "/collections/giant-flower-bandung", images: " ", price: " " },{ label: "Giant Flower Bouquet", category: "Collection", url: "/collections/giant-flower", images: " ", price: " " },{ label: "Gift", category: "Collection", url: "/collections/souvenir-kado-hadiah", images: " ", price: " " },{ label: "Gift by Recipient", category: "Collection", url: "/collections/gift-by-recipient", images: " ", price: " " },{ label: "Gift for Your Girlfriend", category: "Collection", url: "/collections/kado-untuk-pacar-wanita", images: " ", price: " " },{ label: "Gifts", category: "Collection", url: "/collections/gifts", images: " ", price: " " },{ label: "Glassbox Hampers", category: "Collection", url: "/collections/glassbox-hampers", images: " ", price: " " },{ label: "Glassware Hampers", category: "Collection", url: "/collections/parcel-pecah-belah", images: " ", price: " " },{ label: "Gold Jewelry", category: "Collection", url: "/collections/perhiasan-emas", images: " ", price: " " },{ label: "Grand Opening", category: "Collection", url: "/collections/grand-opening", images: " ", price: " " },{ label: "Granola", category: "Collection", url: "/collections/granola", images: " ", price: " " },{ label: "Green Tea", category: "Collection", url: "/collections/green-tea", images: " ", price: " " },{ label: "Greeting Card All", category: "Collection", url: "/collections/greeting-card-all", images: " ", price: " " },{ label: "Greeting Card Anniversary", category: "Collection", url: "/collections/greeting-card-anniversary", images: " ", price: " " },{ label: "Greeting Card Birthday", category: "Collection", url: "/collections/greeting-card-birthday", images: " ", price: " " },{ label: "Greeting Card Eid", category: "Collection", url: "/collections/greeting-card-eid", images: " ", price: " " },{ label: "Greeting Card Graduation", category: "Collection", url: "/collections/greeting-card-graduation", images: " ", price: " " },{ label: "Greeting Card Mother's Day", category: "Collection", url: "/collections/greeting-card-mothers-day", images: " ", price: " " },{ label: "Greeting Card Newborn", category: "Collection", url: "/collections/greeting-card-newborn", images: " ", price: " " },{ label: "Greeting Card Others", category: "Collection", url: "/collections/greeting-card-others", images: " ", price: " " },{ label: "Greeting Card Valentine", category: "Collection", url: "/collections/greeting-card-valentine", images: " ", price: " " },{ label: "Greeting Card Wedding", category: "Collection", url: "/collections/greeting-card-wedding", images: " ", price: " " },{ label: "Grooming", category: "Collection", url: "/collections/grooming", images: " ", price: " " },{ label: "Hadiah Tahun Baru Imlek", category: "Collection", url: "/collections/kado-imlek", images: " ", price: " " },{ label: "Hadiah untuk Bayi", category: "Collection", url: "/collections/kado-untuk-bayi", images: " ", price: " " },{ label: "Hadiah untuk Pacar", category: "Collection", url: "/collections/kado-untuk-pacar", images: " ", price: " " },{ label: "Hadiah untuk Pernikahan", category: "Collection", url: "/collections/kado-untuk-pernikahan", images: " ", price: " " },{ label: "Hadiah untuk Sahabat", category: "Collection", url: "/collections/kado-untuk-sahabat", images: " ", price: " " },{ label: "Hampers", category: "Collection", url: "/collections/hampers", images: " ", price: " " },{ label: "Hampers Baby Boy", category: "Collection", url: "/collections/hampers-baby-boy", images: " ", price: " " },{ label: "Hampers Baby Girl", category: "Collection", url: "/collections/hampers-baby-girl", images: " ", price: " " },{ label: "Hampers Baby Unisex", category: "Collection", url: "/collections/hampers-baby-unisex", images: " ", price: " " },{ label: "Hampers Delivery Indonesia", category: "Collection", url: "/collections/parcel-indonesia", images: " ", price: " " },{ label: "Hampers Lebaran 2025", category: "Collection", url: "/collections/parcel-lebaran", images: " ", price: " " },{ label: "Hampers Lebaran Bali", category: "Collection", url: "/collections/hampers-lebaran-bali", images: " ", price: " " },{ label: "Hampers Lebaran Bandung", category: "Collection", url: "/collections/hampers-lebaran-bandung", images: " ", price: " " },{ label: "Hampers Lebaran Jakarta", category: "Collection", url: "/collections/hampers-lebaran-jakarta", images: " ", price: " " },{ label: "Hampers Lebaran Semarang", category: "Collection", url: "/collections/hampers-lebaran-semarang", images: " ", price: " " },{ label: "Hampers Lebaran Surabaya", category: "Collection", url: "/collections/hampers-lebaran-surabaya", images: " ", price: " " },{ label: "Hampers Lebaran Yogyakarta", category: "Collection", url: "/collections/hampers-lebaran-yogyakarta", images: " ", price: " " },{ label: "Hand Sanitizer", category: "Collection", url: "/collections/hand-sanitizer", images: " ", price: " " },{ label: "Happy Birthday", category: "Collection", url: "/collections/kado-ulang-tahun", images: " ", price: " " },{ label: "Harbolnas", category: "Collection", url: "/collections/harbolnas-2018", images: " ", price: " " },{ label: "Harbolnas Produk Lokal", category: "Collection", url: "/collections/produk-lokal", images: " ", price: " " },{ label: "Hari Belanja Online Nasional", category: "Collection", url: "/collections/harbolnas", images: " ", price: " " },{ label: "Hari Guru", category: "Collection", url: "/collections/hari-guru", images: " ", price: " " },{ label: "Healthy Creations", category: "Collection", url: "/collections/healthy-creations", images: " ", price: " " },{ label: "Healthy Hampers", category: "Collection", url: "/collections/healthy-hampers", images: " ", price: " " },{ label: "Heritage Box", category: "Collection", url: "/collections/heritage-boxes", images: " ", price: " " },{ label: "Heritage Chinese New Year Hampers", category: "Collection", url: "/collections/heritage-chinese-new-year-hampers", images: " ", price: " " },{ label: "Heritage Christmas Hampers", category: "Collection", url: "/collections/heritage-christmas-hampers", images: " ", price: " " },{ label: "Heritage Hampers", category: "Collection", url: "/collections/heritage-hampers", images: " ", price: " " },{ label: "Heritage Ramadan Hampers", category: "Collection", url: "/collections/heritage-ramadan-hampers", images: " ", price: " " },{ label: "Hexa Hampers", category: "Collection", url: "/collections/hexa-hampers", images: " ", price: " " },{ label: "Hexa Hampers Luar Jadetabek", category: "Collection", url: "/collections/hexa-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Hexa Newborn", category: "Collection", url: "/collections/hexa-newborn", images: " ", price: " " },{ label: "Holo Bag", category: "Collection", url: "/collections/holo-bag", images: " ", price: " " },{ label: "Holo Series", category: "Collection", url: "/collections/holo-series", images: " ", price: " " },{ label: "Home Decoration & Photo Frame", category: "Collection", url: "/collections/home-decoration", images: " ", price: " " }
7730,{ label: "Hospitalization", category: "Collection", url: "/collections/axa-hospitalization", images: " ", price: " " },{ label: "House Hampers", category: "Collection", url: "/collections/house-hampers", images: " ", price: " " },{ label: "I'm Sorry", category: "Collection", url: "/collections/rangkaian-bunga-sorry", images: " ", price: " " },{ label: "Ice Cream Cake", category: "Collection", url: "/collections/ice-cream-cake", images: " ", price: " " },{ label: "Idul Fitri", category: "Collection", url: "/collections/rangkaian-bunga-idul-fitri", images: " ", price: " " },{ label: "Jam Tangan", category: "Collection", url: "/collections/jam-tangan", images: " ", price: " " },{ label: "Jam Tangan Couple", category: "Collection", url: "/collections/jam-tangan-couple", images: " ", price: " " },{ label: "Jam Tangan Pria", category: "Collection", url: "/collections/jam-tangan-pria", images: " ", price: " " },{ label: "Jam Tangan Wanita", category: "Collection", url: "/collections/jam-tangan-wanita", images: " ", price: " " },{ label: "Jasa Packing Parcel", category: "Collection", url: "/collections/jasa-packing-parcel", images: " ", price: " " },{ label: "Jewelry", category: "Collection", url: "/collections/jewelry", images: " ", price: " " },{ label: "Jolly Hampers", category: "Collection", url: "/collections/jolly-hampers", images: " ", price: " " },{ label: "Jual Custom Cake & Hampers Termurah & Terlengkap | Outerbloom Florist & Gift", category: "Collection", url: "/collections/custom-cake-hampers", images: " ", price: " " },{ label: "Just Because", category: "Collection", url: "/collections/just-because", images: " ", price: " " },{ label: "Kado Makanan", category: "Collection", url: "/collections/kado-makanan", images: " ", price: " " },{ label: "Kado Minuman", category: "Collection", url: "/collections/kado-minuman", images: " ", price: " " },{ label: "Kado Natal", category: "Collection", url: "/collections/kado-natal", images: " ", price: " " },{ label: "Kado Unik", category: "Collection", url: "/collections/kado-unik", images: " ", price: " " },{ label: "Kado Valentine Nusantara", category: "Collection", url: "/collections/kado-valentine-nusantara", images: " ", price: " " },{ label: "Kado Valentine untuk Pria", category: "Collection", url: "/collections/kado-valentine-untuk-pria", images: " ", price: " " },{ label: "Kado Wisuda", category: "Collection", url: "/collections/kado-wisuda", images: " ", price: " " },{ label: "Kado Zodiak", category: "Collection", url: "/collections/kado-untuk-zodiak", images: " ", price: " " },{ label: "Karangan Bunga Aceh", category: "Collection", url: "/collections/karangan-bunga-aceh", images: " ", price: " " },{ label: "Karangan Bunga Ambon", category: "Collection", url: "/collections/karangan-bunga-ambon", images: " ", price: " " },{ label: "Karangan Bunga Atambua", category: "Collection", url: "/collections/karangan-bunga-atambua", images: " ", price: " " },{ label: "Karangan Bunga Bali", category: "Collection", url: "/collections/karangan-bunga-bali", images: " ", price: " " },{ label: "Karangan Bunga Balikpapan", category: "Collection", url: "/collections/karangan-bunga-balikpapan", images: " ", price: " " },{ label: "Karangan Bunga Bandung", category: "Collection", url: "/collections/karangan-bunga-bandung", images: " ", price: " " },{ label: "Karangan Bunga Bandung Barat", category: "Collection", url: "/collections/karangan-bunga-bandung-barat", images: " ", price: " " },{ label: "Karangan Bunga Bangka", category: "Collection", url: "/collections/karangan-bunga-bangka", images: " ", price: " " },{ label: "Karangan Bunga Banjarmasin", category: "Collection", url: "/collections/karangan-bunga-banjarmasin", images: " ", price: " " },{ label: "Karangan Bunga Banten", category: "Collection", url: "/collections/karangan-bunga-banten", images: " ", price: " " },{ label: "Karangan Bunga Banyumas", category: "Collection", url: "/collections/karangan-bunga-banyumas", images: " ", price: " " },{ label: "Karangan Bunga Banyuwangi", category: "Collection", url: "/collections/karangan-bunga-banyuwangi", images: " ", price: " " },{ label: "Karangan Bunga Batam", category: "Collection", url: "/collections/karangan-bunga-batam", images: " ", price: " " },{ label: "Karangan Bunga Baubau", category: "Collection", url: "/collections/karangan-bunga-baubau", images: " ", price: " " },{ label: "Karangan Bunga Bengkalis", category: "Collection", url: "/collections/karangan-bunga-bengkalis", images: " ", price: " " },{ label: "Karangan Bunga Bengkayang", category: "Collection", url: "/collections/karangan-bunga-bengkayang", images: " ", price: " " },{ label: "Karangan Bunga Bengkulu", category: "Collection", url: "/collections/karangan-bunga-bengkulu", images: " ", price: " " },{ label: "Karangan Bunga Blora", category: "Collection", url: "/collections/karangan-bunga-blora", images: " ", price: " " },{ label: "Karangan Bunga Bogor", category: "Collection", url: "/collections/karangan-bunga-bogor", images: " ", price: " " },{ label: "Karangan Bunga Bojonegoro", category: "Collection", url: "/collections/karangan-bunga-bojonegoro", images: " ", price: " " },{ label: "Karangan Bunga Boyolali", category: "Collection", url: "/collections/karangan-bunga-boyolali", images: " ", price: " " },{ label: "Karangan Bunga Brebes", category: "Collection", url: "/collections/karangan-bunga-brebes", images: " ", price: " " },{ label: "Karangan Bunga Bukittinggi", category: "Collection", url: "/collections/karangan-bunga-bukittinggi", images: " ", price: " " },{ label: "Karangan Bunga Ciamis", category: "Collection", url: "/collections/karangan-bunga-ciamis", images: " ", price: " " }
7730,{ label: "Karangan Bunga Cianjur", category: "Collection", url: "/collections/karangan-bunga-cianjur", images: " ", price: " " },{ label: "Karangan Bunga Cikarang", category: "Collection", url: "/collections/karangan-bunga-cikarang", images: " ", price: " " },{ label: "Karangan Bunga Cikupa", category: "Collection", url: "/collections/karangan-bunga-cikupa", images: " ", price: " " },{ label: "Karangan Bunga Cilacap", category: "Collection", url: "/collections/karangan-bunga-cilacap", images: " ", price: " " },{ label: "Karangan Bunga Cileunyi", category: "Collection", url: "/collections/karangan-bunga-cileunyi", images: " ", price: " " },{ label: "Karangan Bunga Cimahi", category: "Collection", url: "/collections/karangan-bunga-cimahi", images: " ", price: " " },{ label: "Karangan Bunga Cirebon", category: "Collection", url: "/collections/karangan-bunga-cirebon", images: " ", price: " " },{ label: "Karangan Bunga Ciwidey", category: "Collection", url: "/collections/karangan-bunga-ciwidey", images: " ", price: " " },{ label: "Karangan Bunga Danau Toba", category: "Collection", url: "/collections/karangan-bunga-danau-toba", images: " ", price: " " },{ label: "Karangan Bunga Demak", category: "Collection", url: "/collections/karangan-bunga-demak", images: " ", price: " " },{ label: "Karangan Bunga Denpasar", category: "Collection", url: "/collections/karangan-bunga-denpasar", images: " ", price: " " },{ label: "Karangan Bunga Depok", category: "Collection", url: "/collections/karangan-bunga-depok", images: " ", price: " " },{ label: "Karangan Bunga Duka Cita", category: "Collection", url: "/collections/karangan-bunga-duka-cita", images: " ", price: " " },{ label: "Karangan Bunga Garut", category: "Collection", url: "/collections/karangan-bunga-garut", images: " ", price: " " },{ label: "Karangan Bunga Gianyar", category: "Collection", url: "/collections/karangan-bunga-gianyar", images: " ", price: " " },{ label: "Karangan Bunga Gorontalo", category: "Collection", url: "/collections/karangan-bunga-gorontalo", images: " ", price: " " },{ label: "Karangan Bunga Gowa", category: "Collection", url: "/collections/karangan-bunga-gowa", images: " ", price: " " },{ label: "Karangan Bunga Gresik", category: "Collection", url: "/collections/karangan-bunga-gresik", images: " ", price: " " },{ label: "Karangan Bunga Grobogan", category: "Collection", url: "/collections/karangan-bunga-grobogan", images: " ", price: " " },{ label: "Karangan Bunga Gunung Kidul", category: "Collection", url: "/collections/karangan-bunga-gunungkidul", images: " ", price: " " },{ label: "Karangan Bunga Indramayu", category: "Collection", url: "/collections/karangan-bunga-indramayu", images: " ", price: " " },{ label: "Karangan Bunga Jakarta", category: "Collection", url: "/collections/karangan-bunga-jakarta", images: " ", price: " " },{ label: "Karangan Bunga Jambi", category: "Collection", url: "/collections/karangan-bunga-jambi", images: " ", price: " " },{ label: "Karangan Bunga Jayapura", category: "Collection", url: "/collections/karangan-bunga-jayapura", images: " ", price: " " },{ label: "Karangan Bunga Jember", category: "Collection", url: "/collections/karangan-bunga-jember", images: " ", price: " " },{ label: "Karangan Bunga Jembrana", category: "Collection", url: "/collections/karangan-bunga-jembrana", images: " ", price: " " },{ label: "Karangan Bunga Jepara", category: "Collection", url: "/collections/karangan-bunga-jepara", images: " ", price: " " },{ label: "Karangan Bunga Jombang", category: "Collection", url: "/collections/karangan-bunga-jombang", images: " ", price: " " },{ label: "Karangan Bunga Kampung Baru", category: "Collection", url: "/collections/karangan-bunga-kampung-baru", images: " ", price: " " },{ label: "Karangan Bunga Kapuas", category: "Collection", url: "/collections/karangan-bunga-kapuas", images: " ", price: " " },{ label: "Karangan Bunga Karanganyar", category: "Collection", url: "/collections/karangan-bunga-karanganyar", images: " ", price: " " },{ label: "Karangan Bunga Karangasem", category: "Collection", url: "/collections/karangan-bunga-karangasem", images: " ", price: " " },{ label: "Karangan Bunga Karawang", category: "Collection", url: "/collections/karangan-bunga-karawang", images: " ", price: " " },{ label: "Karangan Bunga Kartosuro", category: "Collection", url: "/collections/karangan-bunga-kartosuro", images: " ", price: " " },{ label: "Karangan Bunga Kebumen", category: "Collection", url: "/collections/karangan-bunga-kebumen", images: " ", price: " " },{ label: "Karangan Bunga Kediri", category: "Collection", url: "/collections/karangan-bunga-kediri", images: " ", price: " " },{ label: "Karangan Bunga Kendal", category: "Collection", url: "/collections/karangan-bunga-ken
7730dal", images: " ", price: " " },{ label: "Karangan Bunga Kendari", category: "Collection", url: "/collections/karangan-bunga-kendari", images: " ", price: " " },{ label: "Karangan Bunga Ketapang", category: "Collection", url: "/collections/karangan-bunga-ketapang", images: " ", price: " " },{ label: "Karangan Bunga Klaten", category: "Collection", url: "/collections/karangan-bunga-klaten", images: " ", price: " " },{ label: "Karangan Bunga Kota Batu", category: "Collection", url: "/collections/karangan-bunga-kota-batu", images: " ", price: " " },{ label: "Karangan Bunga Kudus", category: "Collection", url: "/collections/karangan-bunga-kudus", images: " ", price: " " },{ label: "Karangan Bunga Kupang", category: "Collection", url: "/collections/karangan-bunga-kupang", images: " ", price: " " },{ label: "Karangan Bunga Lamongan", category: "Collection", url: "/collections/karangan-bunga-lamongan", images: " ", price: " " },{ label: "Karangan Bunga Lampung", category: "Collection", url: "/collections/karangan-bunga-lampung", images: " ", price: " " },{ label: "Karangan Bunga Langkat", category: "Collection", url: "/collections/karangan-bunga-langkat", images: " ", price: " " },{ label: "Karangan Bunga Lembang", category: "Collection", url: "/collections/karangan-bunga-lembang", images: " ", price: " " },{ label: "Karangan Bunga Lombok", category: "Collection", url: "/collections/karangan-bunga-lombok", images: " ", price: " " },{ label: "Karangan Bunga Lubuk Pakam", category: "Collection", url: "/collections/karangan-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Karangan Bunga Lumajang", category: "Collection", url: "/collections/karangan-bunga-lumajang", images: " ", price: " " },{ label: "Karangan Bunga Madiun", category: "Collection", url: "/collections/karangan-bunga-madiun", images: " ", price: " " },{ label: "Karangan Bunga Magelang", category: "Collection", url: "/collections/karangan-bunga-magelang", images: " ", price: " " },{ label: "Karangan Bunga Majalengka", category: "Collection", url: "/collections/karangan-bunga-majalengka", images: " ", price: " " },{ label: "Karangan Bunga Makassar", category: "Collection", url: "/collections/karangan-bunga-makassar", images: " ", price: " " },{ label: "Karangan Bunga Malang", category: "Collection", url: "/collections/karangan-bunga-malang", images: " ", price: " " },{ label: "Karangan Bunga Mamuju", category: "Collection", url: "/collections/karangan-bunga-mamuju", images: " ", price: " " },{ label: "Karangan Bunga Manado", category: "Collection", url: "/collections/karangan-bunga-manado", images: " ", price: " " },{ label: "Karangan Bunga Manokwari", category: "Collection", url: "/collections/karangan-bunga-manokwari", images: " ", price: " " },{ label: "Karangan Bunga Maros", category: "Collection", url: "/collections/karangan-bunga-maros", images: " ", price: " " },{ label: "Karangan Bunga Mataram", category: "Collection", url: "/collections/karangan-bunga-mataram", images: " ", price: " " },{ label: "Karangan Bunga Mojokerto", category: "Collection", url: "/collections/karangan-bunga-mojokerto", images: " ", price: " " },{ label: "Karangan Bunga Nganjuk", category: "Collection", url: "/collections/karangan-bunga-nganjuk", images: " ", price: " " },{ label: "Karangan Bunga Nias", category: "Collection", url: "/collections/karangan-bunga-nias", images: " ", price: " " },{ label: "Karangan Bunga Padang", category: "Collection", url: "/collections/karangan-bunga-padang", images: " ", price: " " },{ label: "Karangan Bunga Palangkaraya", category: "Collection", url: "/collections/karangan-bunga-palangkaraya", images: " ", price: " " },{ label: "Karangan Bunga Palu", category: "Collection", url: "/collections/karangan-bunga-palu", images: " ", price: " " },{ label: "Karangan Bunga Pangkal Pinang", category: "Collection", url: "/collections/karangan-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Karangan Bunga Papan", category: "Collection", url: "/collections/karangan-bunga", images: " ", price: " " },{ label: "Karangan Bunga Papan Bandar Lampung", category: "Collection", url: "/collections/karangan-bunga-bandar-lampung", images: " ", price: " " },{ label: "Karangan Bunga Papan Bekasi", category: "Collection", url: "/collections/karangan-bunga-bekasi", images: " ", price: " " },{ label: "Karangan Bunga Papan Binjai", category: "Collection", url: "/collections/karangan-bunga-binjai", images: " ", price: " " },{ label: "Karangan Bunga Papan Blitar", category: "Collection", url: "/collections/karangan-bunga-blitar", images: " ", price: " " },{ label: "Karangan Bunga Papan Buleleng", category: "Collection", url: "/collections/karangan-bunga-buleleng", images: " ", price: " " },{ label: "Karangan Bunga Papan Cibubur", category: "Collection", url: "/collections/karangan-bunga-cibubur", images: " ", price: " " },{ label: "Karangan Bunga Papan Deli Serdang", category: "Collection", url: "/collections/karangan-bunga-deli-serdang", images: " ", price: " " },{ label: "Karangan Bunga Papan Jakarta Timur", category: "Collection", url: "/collections/karangan-bunga-jakarta-timur", images: " ", price: " " },{ label: "Karangan Bunga Papan Karo", category: "Collection", url: "/collections/karangan-bunga-karo", images: " ", price: " " },{ label: "Karangan Bunga Papan Medan", category: "Collection", url: "/collections/karangan-bunga-medan", images: " ", price: " " },{ label: "Karangan Bunga Papan Ngawi", category: "Collection", url: "/collections/karangan-bunga-ngawi", images: " ", price: " " },{ label: "Karangan Bunga Papan Palembang", category: "Collection", url: "/collections/karangan-bunga-palembang", images: " ", price: " " },{ label: "Karangan Bunga Papan Pemalang", category: "Collection", url: "/collections/karangan-bunga-pemalang", images: " ", price: " " },{ label: "Karangan Bunga Papan Rembang", category: "Collection", url: "/collections/karangan-bunga-rembang", images: " ", price: " " },{ label: "Karangan Bunga Papan Sragen", category: "Collection", url: "/collections/karangan-bunga-sragen", images: " ", price: " " },{ label: "Karangan Bunga Papan Tegal", category: "Collection", url: "/collections/karangan-bunga-tegal", images: " ", price: " " },{ label: "Karangan Bunga Papan Temanggung", category: "Collection", url: "/collections/karangan-bunga-temanggung", images: " ", price: " " },{ label: "Karangan Bunga Parepare", category: "Collection", url: "/collections/karangan-bunga-parepare", images: " ", price: " " },{ label: "Karangan Bunga Pasuruan", category: "Collection", url: "/collections/karangan-bunga-pasuruan", images: " ", price: " " },{ label: "Karangan Bunga Pati", category: "Collection", url: "/collections/karangan-bunga-pati", images: " ", price: " " },{ label: "Karangan Bunga Pekalongan", category: "Collection", url: "/collections/karangan-bunga-pekalongan", images: " ", price: " " },{ label: "Karangan Bunga Pekanbaru", category: "Collection", url: "/collections/karangan-bunga-pekanbaru", images: " ", price: " " },{ label: "Karangan Bunga Pematangsiantar", category: "Collection", url: "/collections/karangan-bunga-pematangsiantar", images: " ", price: " " },{ label: "Karangan Bunga Ponorogo", category: "Collection", url: "/collections/karangan-bunga-ponorogo", images: " ", price: " " },{ label: "Karangan Bunga Pontianak", category: "Collection", url: "/collections/karangan-bunga-pontianak", images: " ", price: " " },{ label: "Karangan Bunga Probolinggo", category: "Collection", url: "/collections/karangan-bunga-probolinggo", images: " ", price: " " },{ label: "Karangan Bunga Purbalingga", category: "Collection", url: "/collections/karangan-bunga-purbalingga", images: " ", price: " " },{ label: "Karangan Bunga Purwokerto", category: "Collection", url: "/collections/karangan-bunga-purwokerto", images: " ", price: " " },{ label: "Karangan Bunga Purworejo", category: "Collection", url: "/collections/karangan-bunga-purworejo", images: " ", price: " " },{ label: "Karangan Bunga Riau", category: "Collection", url: "/collections/karangan-bunga-riau", images: " ", price: " " },{ label: "Karangan Bunga Salatiga", category: "Collection", url: "/collections/karangan-bunga-salatiga", images: " ", price: " " },{ label: "Karangan Bunga Samarinda", category: "Collection", url: "/collections/karangan-bunga-samarinda", images: " ", price: " " },{ label: "Karangan Bunga Semarang", category: "Collection", url: "/collections/karangan-bunga-semarang", images: " ", price: " " },{ label: "Karangan Bunga Serang", category: "Collection", url: "/collections/karangan-bunga-serang", images: " ", price: " " },{ label: "Karangan Bunga Sibolga", category: "Collection", url: "/collections/karangan-bunga-sibolga", images: " ", price: " " },{ label: "Karangan Bunga Sidoarjo", category: "Collection", url: "/collections/karangan-bunga-sidoarjo", images: " ", price: " " },{ label: "Karangan Bunga Singkawang", category: "Collection", url: "/collections/karangan-bunga-singkawang", images: " ", price: " " },{ label: "Karangan Bunga Solo", category: "Collection", url: "/collections/karangan-bunga-solo", images: " ", price: " " },{ label: "Karangan Bunga Sorong", category: "Collection", url: "/collections/karangan-bunga-sorong", images: " ", price: " " },{ label: "Karangan Bunga Subang", category: "Collection", url: "/collections/karangan-bunga-subang", images: " ", price: " " },{ label: "Karangan Bunga Sukabumi", category: "Collection", url: "/collections/karangan-bunga-sukabumi", images: " ", price: " " },{ label: "Karangan Bunga Sumbawa", category: "Collection", url: "/collections/karangan-bunga-sumbawa", images: " ", price: " " },{ label: "Karangan Bunga Surabaya", category: "Collection", url: "/collections/karangan-bunga-surabaya", images: " ", price: " " },{ label: "Karangan Bunga Surakarta", category: "Collection", url: "/collections/karangan-bunga-surakarta", images: " ", price: " " },{ label: "Karangan Bunga Tangerang", category: "Collection", url: "/collections/karangan-bunga-tangerang", images: " ", price: " " },{ label: "Karangan Bunga Tasikmalaya", category: "Collection", url: "/collections/karangan-bunga-tasikmalaya", images: " ", price: " " },{ label: "Karangan Bunga Ternate", category: "Collection", url: "/collections/karangan-bunga-ternate", images: " ", price: " " },{ label: "Karangan Bunga Tolitoli", category: "Collection", url: "/collections/karangan-bunga-tolitoli", images: " ", price: " " },{ label: "Karangan Bunga Toraja", category: "Collection", url: "/collections/karangan-bunga-toraja", images: " ", price: " " },{ label: "Karangan Bunga Tuban", category: "Collection", url: "/collections/karangan-bunga-tuban", images: " ", price: " " },{ label: "Karangan Bunga Tulungagung", category: "Collection", url: "/collections/karangan-bunga-tulungagung", images: " ", price: " " },{ label: "Karangan Bunga Wakatobi", category: "Collection", url: "/collections/karangan-bunga-wakatobi", images: " ", price: " " },{ label: "Karangan Bunga Wiyung", category: "Collection", url: "/collections/karangan-bunga-wiyung", images: " ", price: " " },{ label: "Karangan Bunga Wonogiri", category: "Collection", url: "/collections/karangan-bunga-wonogiri", images: " ", price: " " },{ label: "Karangan Bunga Wonokromo", category: "Collection", url: "/collections/karangan-bunga-wonokromo", images: " ", price: " " },{ label: "Karangan Bunga Wonosobo", category: "Collection", url: "/collections/karangan-bunga-wonosobo", images: " ", price: " " },{ label: "Karangan Bunga Yogyakarta", category: "Collection", url: "/collections/karangan-bunga-yogyakarta", images: " ", price: " " },{ label: "Kartu Ucapan", category: "Collection", url: "/collections/kartu-ucapan", images: " ", price: " " },{ label: "Kue Anniversary", category: "Collection", url: "/collections/kue-anniversary", images: " ", price: " " },{ label: "Kue Bachelorette", category: "Collection", url: "/collections/kue-bachelorette", images: " ", price: " " },{ label: "Kue Bandung", category: "Collection", url: "/collections/kue-bandung", images: " ", price: " " },{ label: "Kue Bulan", category: "Collection", url: "/collections/kue-bulan", images: " ", price: " " },{ label: "Kue Imlek", category: "Collection", url: "/collections/kue-imlek", images: " ", price: " " },{ label: "Kue Kering", category: "Collection", url: "/collections/kue-kering", images: " ", price: " " },{ label: "Kue Natal", category: "Collection", url: "/collections/kue-natal", images: " ", price: " " },{ label: "Kue Pernikahan", category: "Collection", url: "/collections/kue-pernikahan", images: " ", price: " " },{ label: "Kue Tart", category: "Collection", url: "/collections/kue-tart", images: " ", price: " " },{ label: "Kue Tart Oma Elly", category: "Collection", url: "/collections/kue-tart-oma-elly", images: " ", price: " " },{ label: "Kue Ulang Tahun", category: "Collection", url: "/collections/kue-ulang-tahun", images: " ", price: " " },{ label: "Lalique", category: "Collection", url: "/collections/lalique", images: " ", price: " " },{ label: "Le Sucre Du Patisserie", category: "Collection", url: "/collections/le-sucre-du-patisserie", images: " ", price: " " },{ label: "Leo ♌️ 23July - 22Augst", category: "Collection", url: "/collections/kado-untuk-zodiak-leo", images: " ", price: " " },{ label: "Letter Box", category: "Collection", url: "/collections/letter-box", images: " ", price: " " },{ label: "Libra ♎️ 23Sept - 23Oct", category: "Collection", url: "/collections/kado-untuk-zodiak-libra", images: " ", price: " " },{ label: "Lilin Aromaterapi", category: "Collection", url: "/collections/lilin-aromaterapi", images: " ", price: " " },{ label: "Lily", category: "Collection", url: "/collections/bunga-lily", images: " ", price: " " },{ label: "Lindt", category: "Collection", url: "/collections/lindt", images: " ", price: " " },{ label: "Locations", category: "Collection", url: "/collections/locations", images: " ", price: " " },{ label: "Love & Romance", category: "Collection", url: "/collections/rangkaian-bunga-i-love-you", images: " ", price: " " },{ label: "Love Bag Collection", category: "Collection", url: "/collections/love-bag-collection", images: " ", price: " " },{ label: "Love Bundle", category: "Collection", url: "/collections/paket-promo-spesial-valentine", images: " ", price: " " },{ label: "Love Bundle Nusantara", category: "Collection", url: "/collections/love-bundle-nusantara", images: " ", price: " " },{ label: "Luxury Chinese New Year Hampers", category: "Collection", url: "/collections/luxury-chinese-new-year-hampers", images: " ", price: " " },{ label: "Luxury Christmas Hampers", category: "Collection", url: "/collections/luxury-christmas-hampers", images: " ", price: " " },{ label: "Luxury Hampers", category: "Collection", url: "/collections/luxury-hampers", images: " ", price: " " },{ label: "Luxury Hampers Luar Jadetabek", category: "Collection", url: "/collections/luxury-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Luxury Newborn Hampers Collection", category: "Collection", url: "/collections/luxury-newborn-hampers-collection", images: " ", price: " " },{ label: "Luxury Ramadan Hampers", category: "Collection", url: "/collections/luxury-ramadan-hampers", images: " ", price: " " },{ label: "Luxury Set", category: "Collection", url: "/collections/luxury", images: " ", price: " " },{ label: "Manual", category: "Collection", url: "/collections/manual", images: " ", price: " " },{ label: "Massimo Gelato", category: "Collection", url: "/collections/massimo-gelato", images: " ", price: " " },{ label: "Men's Collection", category: "Collection", url: "/collections/mens-collection", images: " ", price: " " },{ label: "Mercedes Benz", category: "Collection", url: "/collections/mercedes-benz", images: " ", price: " " },{ label: "Mercy Hampers", category: "Collection", url: "/collections/mercy-
7730hampers", images: " ", price: " " },{ label: "Merry Hampers", category: "Collection", url: "/collections/merry-hampers", images: " ", price: " " },{ label: "Merry Hampers Luar Jabodetabek", category: "Collection", url: "/collections/merry-hampers-luar-jabodetabek", images: " ", price: " " },{ label: "Mini Bouquet", category: "Collection", url: "/collections/mini-bouquet", images: " ", price: " " },{ label: "Miss Mondial", category: "Collection", url: "/collections/miss-mondial", images: " ", price: " " },{ label: "Modern & Chic Chinese New Year", category: "Collection", url: "/collections/modern-chic-chinese-new-year", images: " ", price: " " },{ label: "Modern & Chic Christmas Hampers", category: "Collection", url: "/collections/modern-chic-christmas", images: " ", price: " " },{ label: "Modern & Chic Hampers", category: "Collection", url: "/collections/modern-chic-hampers", images: " ", price: " " },{ label: "Modern & Chic Hampers Luar Jadetabek", category: "Collection", url: "/collections/modern-chic-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Modern & Chic Ramadan Hampers", category: "Collection", url: "/collections/modern-chic-ramadan-hampers", images: " ", price: " " },{ label: "Modern & Classy Hampers", category: "Collection", url: "/collections/parcel-unik", images: " ", price: " " },{ label: "Modern 3D Cake", category: "Collection", url: "/collections/custom-3d-cake", images: " ", price: " " },{ label: "Modern Style Flowers", category: "Collection", url: "/collections/modern-style-flowers", images: " ", price: " " },{ label: "Monochrome Hampers", category: "Collection", url: "/collections/monochrome-hampers", images: " ", price: " " },{ label: "Monochrome Hampers Luar Jadetabek", category: "Collection", url: "/collections/monochrome-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Mooncake", category: "Collection", url: "/collections/kue-bulan-mooncake-2025-mid-autumn-festival", images: " ", price: " " },{ label: "Mooncake Assorted Selection", category: "Collection", url: "/collections/mooncake-assorted-selection", images: " ", price: " " },{ label: "Mother's Day", category: "Collection", url: "/collections/rangkaian-bunga-hari-ibu", images: " ", price: " " },{ label: "Mother's Day Special", category: "Collection", url: "/collections/kado-untuk-ibu", images: " ", price: " " },{ label: "Necklace", category: "Collection", url: "/collections/kalung", images: " ", price: " " },{ label: "NestBloom Bird Nest Hampers", category: "Collection", url: "/collections/nestbloom-birds-nest", images: " ", price: " " },{ label: "NestBloom Gift Set", category: "Collection", url: "/collections/nestbloom-gift-set", images: " ", price: " " },{ label: "Nestbloom Ritual Kit", category: "Collection", url: "/collections/nestbloom-ritual-kit", images: " ", price: " " },{ label: "NestBloom Single Bloom", category: "Collection", url: "/collections/nestbloom-single-bloom", images: " ", price: " " },{ label: "New Collection", category: "Collection", url: "/collections/produk-baru", images: " ", price: " " },{ label: "New Product", category: "Collection", url: "/collections/new-product", images: " ", price: " " },{ label: "Newborn", category: "Collection", url: "/collections/rangkaian-bunga-newborn-baby", images: " ", price: " " },{ label: "Newborn Hampers", category: "Collection", url: "/collections/parcel-newborn", images: " ", price: " " },{ label: "Occasions", category: "Collection", url: "/collections/occasions", images: " ", price: " " },{ label: "Oma Elly", category: "Collection", url: "/collections/oma-elly", images: " ", price: " " },{ label: "Oma Elly Gelato", category: "Collection", url: "/collections/oma-elly-gelato", images: " ", price: " " },{ label: "Orchid", category: "Collection", url: "/collections/bunga-anggrek", images: " ", price: " " },{ label: "Orori", category: "Collection", url: "/collections/orori", images: " ", price: " " },{ label: "Outerbloom", category: "Collection", url: "/collections/outerbloom", images: " ", price: " " },{ label: "Outerbloom Cake", category: "Collection", url: "/collections/outerbloom-cake", images: " ", price: " " },{ label: "Outerbloom Florist", category: "Collection", url: "/collections/outerbloom-florist", images: " ", price: " " },{ label: "Outerbloom Gift", category: "Collection", url: "/collections/outerbloom-gift", images: " ", price: " " },{ label: "Outerbloom Hampers", category: "Collection", url: "/collections/outerbloom-hampers", images: " ", price: " " },{ label: "Outerbloom Indonesia", category: "Collection", url: "/collections/indonesia", images: " ", price: " " },{ label: "Outerbloom x Boho Panna", category: "Collection", url: "/collections/outerbloom-x-boh
7730o-panna", images: " ", price: " " },{ label: "Outerbloom x Clairmont", category: "Collection", url: "/collections/outerbloom-x-clairmont", images: " ", price: " " },{ label: "Outerbloom x Kikido", category: "Collection", url: "/collections/outerbloom-x-kikido", images: " ", price: " " },{ label: "Outerbloom x Miwa Pattern", category: "Collection", url: "/collections/outerbloom-x-miwa", images: " ", price: " " },{ label: "Outerbloom x Nestbloom Chinese New Year", category: "Collection", url: "/collections/outerbloom-x-nestbloom-chinese-new-year", images: " ", price: " " },{ label: "Outerbloom x NestBloom Hampers", category: "Collection", url: "/collections/outerbloom-x-nestbloom", images: " ", price: " " },{ label: "Paket Kolaborasi Outerbloom", category: "Collection", url: "/collections/paket-kolaborasi-outerbloom", images: " ", price: " " },{ label: "Paket Kolaborasi Valentine", category: "Collection", url: "/collections/paket-kolaborasi-valentine", images: " ", price: " " },{ label: "Paket Ulang Tahun", category: "Collection", url: "/collections/paket-ulang-tahun", images: " ", price: " " },{ label: "Paket Valentine Nusantara", category: "Collection", url: "/collections/paket-valentine-nusantara", images: " ", price: " " },{ label: "Paket Valentine Outerbloom", category: "Collection", url: "/collections/paket-valentine", images: " ", price: " " },{ label: "Papan Bunga", category: "Collection", url: "/collections/papan-bunga", images: " ", price: " " },{ label: "Papan Bunga Aceh", category: "Collection", url: "/collections/papan-bunga-aceh", images: " ", price: " " },{ label: "Papan Bunga Acrylic", category: "Collection", url: "/collections/papan-bunga-acrylic", images: " ", price: " " },{ label: "Papan Bunga Ambon", category: "Collection", url: "/collections/papan-bunga-ambon", images: " ", price: " " },{ label: "Papan Bunga Artificial", category: "Collection", url: "/collections/papan-bunga-artificial", images: " ", price: " " },{ label: "Papan Bunga Atambua", category: "Collection", url: "/collections/papan-bunga-atambua", images: " ", price: " " },{ label: "Papan Bunga Bali", category: "Collection", url: "/collections/papan-bunga-bali", images: " ", price: " " },{ label: "Papan Bunga Balikpapan", category: "Collection", url: "/collections/papan-bunga-balikpapan", images: " ", price: " " },{ label: "Papan Bunga Bandar Lampung", category: "Collection", url: "/collections/papan-bunga-bandar-lampung", images: " ", price: " " },{ label: "Papan Bunga Bandung", category: "Collection", url: "/collections/papan-bunga-bandung", images: " ", price: " " },{ label: "Papan Bunga Bandung Barat", category: "Collection", url: "/collections/papan-bunga-bandung-barat", images: " ", price: " " },{ label: "Papan Bunga Bangka", category: "Collection", url: "/collections/papan-bunga-bangka", images: " ", price: " " },{ label: "Papan Bunga Banjarmasin", category: "Collection", url: "/collections/papan-bunga-banjarmasin", images: " ", price: " " },{ label: "Papan Bunga Banten", category: "Collection", url: "/collections/papan-bunga-banten", images: " ", price: " " },{ label: "Papan Bunga Banyumas", category: "Collection", url: "/collections/papan-bunga-banyumas", images: " ", price: " " },{ label: "Papan Bunga Banyuwangi", category: "Collection", url: "/collections/papan-bunga-banyuwangi", images: " ", price: " " },{ label: "Papan Bunga Batam", category: "Collection", url: "/collections/papan-bunga-batam", images: " ", price: " " },{ label: "Papan Bunga Baubau", category: "Collection", url: "/collections/papan-bunga-baubau", images: " ", price: " " },{ label: "Papan Bunga Bekasi", category: "Collection", url: "/collections/papan-bunga-bekasi", images: " ", price: " " },{ label: "Papan Bunga Bengkalis", category: "Collection", url: "/collections/papan-bunga-bengkalis", images: " ", price: " " },{ label: "Papan Bunga Bengkayang", category: "Collection", url: "/collections/papan-bunga-bengkayang", images: " ", price: " " },{ label: "Papan Bunga Bengkulu", category: "Collection", url: "/collections/papan-bunga-bengkulu", images: " ", price: " " }
7730,{ label: "Papan Bunga Binjai", category: "Collection", url: "/collections/papan-bunga-binjai", images: " ", price: " " },{ label: "Papan Bunga Blitar", category: "Collection", url: "/collections/papan-bunga-blitar", images: " ", price: " " },{ label: "Papan Bunga Blora", category: "Collection", url: "/collections/papan-bunga-blora", images: " ", price: " " },{ label: "Papan Bunga Bogor", category: "Collection", url: "/collections/papan-bunga-bogor", images: " ", price: " " },{ label: "Papan Bunga Bojonegoro", category: "Collection", url: "/collections/papan-bunga-bojonegoro", images: " ", price: " " },{ label: "Papan Bunga Boyolali", category: "Collection", url: "/collections/papan-bunga-boyolali", images: " ", price: " " },{ label: "Papan Bunga Brebes", category: "Collection", url: "/collections/papan-bunga-brebes", images: " ", price: " " },{ label: "Papan Bunga Bukittinggi", category: "Collection", url: "/collections/papan-bunga-bukittinggi", images: " ", price: " " },{ label: "Papan Bunga Buleleng", category: "Collection", url: "/collections/papan-bunga-buleleng", images: " ", price: " " },{ label: "Papan Bunga Ciamis", category: "Collection", url: "/collections/papan-bunga-ciamis", images: " ", price: " " },{ label: "Papan Bunga Cianjur", category: "Collection", url: "/collections/papan-bunga-cianjur", images: " ", price: " " },{ label: "Papan Bunga Cibubur", category: "Collection", url: "/collections/papan-bunga-cibubur", images: " ", price: " " },{ label: "Papan Bunga Cikarang", category: "Collection", url: "/collections/papan-bunga-cikarang", images: " ", price: " " },{ label: "Papan Bunga Cikupa", category: "Collection", url: "/collections/papan-bunga-cikupa", images: " ", price: " " },{ label: "Papan Bunga Cikupa", category: "Collection", url: "/collections/papan-bunga-cikupa-1", images: " ", price: " " },{ label: "Papan Bunga Cilacap", category: "Collection", url: "/collections/papan-bunga-cilacap", images: " ", price: " " },{ label: "Papan Bunga Cileunyi", category: "Collection", url: "/collections/papan-bunga-cileunyi", images: " ", price: " " },{ label: "Papan Bunga Cirebon", category: "Collection", url: "/collections/papan-bunga-cirebon", images: " ", price: " " },{ label: "Papan Bunga Congratulations", category: "Collection", url: "/collections/papan-bunga-ucapan-selamat", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bali", category: "Collection", url: "/collections/papan-bunga-congratulations-bali", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bandung", category: "Collection", url: "/collections/papan-bunga-congratulations-bandung", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bekasi", category: "Collection", url: "/collections/papan-bunga-congratulations-bekasi", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bogor", category: "Collection", url: "/collections/papan-bunga-congratulations-bogor", images: " ", price: " " },{ label: "Papan Bunga Congratulations Cikupa", category: "Collection", url: "/collections/papan-bunga-congratulations-cikupa", images: " ", price: " " },{ label: "Papan Bunga Congratulations Demak", category: "Collection", url: "/collections/papan-bunga-congratulations-demak", images: " ", price: " " },{ label: "Papan Bunga Congratulations Depok", category: "Collection", url: "/collections/papan-bunga-congratulations-depok", images: " ", price: " " },{ label: "Papan Bunga Congratulations Gresik", category: "Collection", url: "/collections/papan-bunga-congratulations-gresik", images: " ", price: " " },{ label: "Papan Bunga Congratulations Jakarta", category: "Collection", url: "/collections/papan-bunga-congratulations-jakarta", images: " ", price: " " },{ label: "Papan Bunga Congratulations Jepara", category: "Collection", url: "/collections/papan-bunga-congratulations-jepara", images: " ", price: " " },{ label: "Papan Bunga Congratulations Medan", category: "Collection", url: "/collections/papan-bunga-congratulations-medan", images: " ", price: " " },{ label: "Papan Bunga Congratulations Semarang", category: "Collection", url: "/collections/papan-bunga-congratulations-semarang", images: " ", price: " " }
7730,{ label: "Papan Bunga Congratulations Serang", category: "Collection", url: "/collections/papan-bunga-congratulations-serang", images: " ", price: " " },{ label: "Papan Bunga Congratulations Sidoarjo", category: "Collection", url: "/collections/papan-bunga-congratulations-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Congratulations Surabaya", category: "Collection", url: "/collections/papan-bunga-congratulations-surabaya", images: " ", price: " " },{ label: "Papan Bunga Congratulations Tangerang", category: "Collection", url: "/collections/papan-bunga-congratulations-tangerang", images: " ", price: " " },{ label: "Papan Bunga Congratulations Yogyakarta", category: "Collection", url: "/collections/papan-bunga-congratulations-yogyakarta", images: " ", price: " " },{ label: "Papan Bunga Danau Toba", category: "Collection", url: "/collections/papan-bunga-danau-toba", images: " ", price: " " },{ label: "Papan Bunga Deli Serdang", category: "Collection", url: "/collections/papan-bunga-deli-serdang", images: " ", price: " " },{ label: "Papan Bunga Demak", category: "Collection", url: "/collections/papan-bunga-demak", images: " ", price: " " },{ label: "Papan Bunga Denpasar", category: "Collection", url: "/collections/papan-bunga-denpasar", images: " ", price: " " },{ label: "Papan Bunga Depok", category: "Collection", url: "/collections/papan-bunga-depok", images: " ", price: " " },{ label: "Papan Bunga Duka Cita", category: "Collection", url: "/collections/bunga-duka-cita", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bali", category: "Collection", url: "/collections/papan-bunga-duka-cita-bali", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bandung", category: "Collection", url: "/collections/papan-bunga-duka-cita-bandung", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bekasi", category: "Collection", url: "/collections/papan-bunga-duka-cita-bekasi", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bogor", category: "Collection", url: "/collections/papan-bunga-duka-cita-bogor", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Cikupa", category: "Collection", url: "/collections/papan-bunga-duka-cita-cikupa", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Demak", category: "Collection", url: "/collections/papan-bunga-duka-cita-demak", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Depok", category: "Collection", url: "/collections/papan-bunga-duka-cita-depok", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Gresik", category: "Collection", url: "/collections/papan-bunga-duka-cita-gresik", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Jakarta", category: "Collection", url: "/collections/papan-bunga-duka-cita-jakarta", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Jepara", category: "Collection", url: "/collections/papan-bunga-duka-cita-jepara", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Medan", category: "Collection", url: "/collections/papan-bunga-duka-cita-medan", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Semarang", category: "Collection", url: "/collections/papan-bunga-duka-cita-semarang", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Serang", category: "Collection", url: "/collections/papan-bunga-duka-cita-serang", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Sidoarjo", category: "Collection", url: "/collections/papan-bunga-duka-cita-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Surabaya", category: "Collection", url: "/collections/papan-bunga-duka-cita-surabaya", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Tangerang", category: "Collection", url: "/collections/papan-bunga-duka-cita-tangerang", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Yogyakarta", category: "Collection", url: "/collections/papan-bunga-duka-cita-yogyakarta", images: " ", price: " " },{ label: "Papan Bunga Garut", category: "Collection", url: "/collections/papan-bunga-garut", images: " ", price: " " },{ label: "Papan Bunga Gianyar", category: "Collection", url: "/collections/papan-bunga-gianyar", images: " ", price: " " }
7730,{ label: "Papan Bunga Gorontalo", category: "Collection", url: "/collections/papan-bunga-gorontalo", images: " ", price: " " },{ label: "Papan Bunga Gowa", category: "Collection", url: "/collections/papan-bunga-gowa", images: " ", price: " " },{ label: "Papan Bunga Gresik", category: "Collection", url: "/collections/papan-bunga-gresik", images: " ", price: " " },{ label: "Papan Bunga Grobogan", category: "Collection", url: "/collections/papan-bunga-grobogan", images: " ", price: " " },{ label: "Papan Bunga Gunungkidul", category: "Collection", url: "/collections/papan-bunga-gunungkidul", images: " ", price: " " },{ label: "Papan Bunga Indramayu", category: "Collection", url: "/collections/papan-bunga-indramayu", images: " ", price: " " },{ label: "Papan Bunga Jakarta", category: "Collection", url: "/collections/papan-bunga-jakarta", images: " ", price: " " },{ label: "Papan Bunga Jakarta Timur", category: "Collection", url: "/collections/papan-bunga-jakarta-timur", images: " ", price: " " },{ label: "Papan Bunga Jambi", category: "Collection", url: "/collections/papan-bunga-jambi", images: " ", price: " " },{ label: "Papan Bunga Jayapura", category: "Collection", url: "/collections/papan-bunga-jayapura", images: " ", price: " " },{ label: "Papan Bunga Jember", category: "Collection", url: "/collections/papan-bunga-jember", images: " ", price: " " },{ label: "Papan Bunga Jembrana", category: "Collection", url: "/collections/papan-bunga-jembrana", images: " ", price: " " },{ label: "Papan Bunga Jepara", category: "Collection", url: "/collections/papan-bunga-jepara", images: " ", price: " " },{ label: "Papan Bunga Jombang", category: "Collection", url: "/collections/papan-bunga-jombang", images: " ", price: " " },{ label: "Papan Bunga Kampung Baru", category: "Collection", url: "/collections/papan-bunga-kampung-baru", images: " ", price: " " },{ label: "Papan Bunga Kapuas", category: "Collection", url: "/collections/papan-bunga-kapuas", images: " ", price: " " },{ label: "Papan Bunga Karanganyar", category: "Collection", url: "/collections/papan-bunga-karanganyar", images: " ", price: " " },{ label: "Papan Bunga Karangasem", category: "Collection", url: "/collections/papan-bunga-karangasem", images: " ", price: " " },{ label: "Papan Bunga Karawang", category: "Collection", url: "/collections/papan-bunga-karawang", images: " ", price: " " },{ label: "Papan Bunga Karo", category: "Collection", url: "/collections/papan-bunga-karo", images: " ", price: " " },{ label: "Papan Bunga Kartosuro", category: "Collection", url: "/collections/papan-bunga-kartosuro", images: " ", price: " " },{ label: "Papan Bunga Kebumen", category: "Collection", url: "/collections/papan-bunga-kebumen", images: " ", price: " " },{ label: "Papan Bunga Kediri", category: "Collection", url: "/collections/papan-bunga-kediri", images: " ", price: " " },{ label: "Papan Bunga Kendal", category: "Collection", url: "/collections/papan-bunga-kendal", images: " ", price: " " },{ label: "Papan Bunga Kendari", category: "Collection", url: "/collections/papan-bunga-kendari", images: " ", price: " " },{ label: "Papan Bunga Ketapang", category: "Collection", url: "/collections/papan-bunga-ketapang", images: " ", price: " " },{ label: "Papan Bunga Klaten", category: "Collection", url: "/collections/papan-bunga-klaten", images: " ", price: " " },{ label: "Papan Bunga Kota Batu", category: "Collection", url: "/collections/papan-bunga-kota-batu", images: " ", price: " " },{ label: "Papan Bunga Kudus", category: "Collection", url: "/collections/papan-bunga-kudus", images: " ", price: " " },{ label: "Papan Bunga Kupang", category: "Collection", url: "/collections/papan-bunga-kupang", images: " ", price: " " },{ label: "Papan Bunga Lamongan", category: "Collection", url: "/collections/papan-bunga-lamongan", images: " ", price: " " },{ label: "Papan Bunga Lampu LED", category: "Collection", url: "/collections/papan-bunga-lampu-led", images: " ", price: " " },{ label: "Papan Bunga Lampung", category: "Collection", url: "/collections/papan-bunga-lampung", images: " ", price: " " }
7730,{ label: "Papan Bunga Langkat", category: "Collection", url: "/collections/papan-bunga-langkat", images: " ", price: " " },{ label: "Papan Bunga Lembang", category: "Collection", url: "/collections/papan-bunga-lembang", images: " ", price: " " },{ label: "Papan Bunga Lombok", category: "Collection", url: "/collections/papan-bunga-lombok", images: " ", price: " " },{ label: "Papan Bunga Lubuk Pakam", category: "Collection", url: "/collections/papan-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Papan Bunga Lumajang", category: "Collection", url: "/collections/papan-bunga-lumajang", images: " ", price: " " },{ label: "Papan Bunga Madiun", category: "Collection", url: "/collections/papan-bunga-madiun", images: " ", price: " " },{ label: "Papan Bunga Magelang", category: "Collection", url: "/collections/papan-bunga-magelang", images: " ", price: " " },{ label: "Papan Bunga Majalengka", category: "Collection", url: "/collections/papan-bunga-majalengka", images: " ", price: " " },{ label: "Papan Bunga Makassar", category: "Collection", url: "/collections/papan-bunga-makassar", images: " ", price: " " },{ label: "Papan Bunga Malang", category: "Collection", url: "/collections/papan-bunga-malang", images: " ", price: " " },{ label: "Papan Bunga Mamuju", category: "Collection", url: "/collections/papan-bunga-mamuju", images: " ", price: " " },{ label: "Papan Bunga Manado", category: "Collection", url: "/collections/papan-bunga-manado", images: " ", price: " " },{ label: "Papan Bunga Manokwari", category: "Collection", url: "/collections/papan-bunga-manokwari", images: " ", price: " " },{ label: "Papan Bunga Maros", category: "Collection", url: "/collections/papan-bunga-maros", images: " ", price: " " },{ label: "Papan Bunga Mataram", category: "Collection", url: "/collections/papan-bunga-mataram", images: " ", price: " " },{ label: "Papan Bunga Medan", category: "Collection", url: "/collections/papan-bunga-medan", images: " ", price: " " },{ label: "Papan Bunga Mojokerto", category: "Collection", url: "/collections/papan-bunga-mojokerto", images: " ", price: " " },{ label: "Papan Bunga Nganjuk", category: "Collection", url: "/collections/papan-bunga-nganjuk", images: " ", price: " " },{ label: "Papan Bunga Ngawi", category: "Collection", url: "/collections/papan-bunga-ngawi", images: " ", price: " " },{ label: "Papan Bunga Nias", category: "Collection", url: "/collections/papan-bunga-nias", images: " ", price: " " },{ label: "Papan Bunga Organza", category: "Collection", url: "/collections/papan-bunga-organza", images: " ", price: " " },{ label: "Papan Bunga Padang", category: "Collection", url: "/collections/papan-bunga-padang", images: " ", price: " " },{ label: "Papan Bunga Palangkaraya", category: "Collection", url: "/collections/papan-bunga-palangkaraya", images: " ", price: " " },{ label: "Papan Bunga Palembang", category: "Collection", url: "/collections/papan-bunga-palembang", images: " ", price: " " },{ label: "Papan Bunga Palu", category: "Collection", url: "/collections/papan-bunga-palu", images: " ", price: " " },{ label: "Papan Bunga Pangkal Pinang", category: "Collection", url: "/collections/papan-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Papan Bunga Parepare", category: "Collection", url: "/collections/papan-bunga-parepare", images: " ", price: " " },{ label: "Papan Bunga Pasuruan", category: "Collection", url: "/collections/papan-bunga-pasuruan", images: " ", price: " " },{ label: "Papan Bunga Pati", category: "Collection", url: "/collections/papan-bunga-pati", images: " ", price: " " },{ label: "Papan Bunga Pekalongan", category: "Collection", url: "/collections/papan-bunga-pekalongan", images: " ", price: " " },{ label: "Papan Bunga Pekanbaru", category: "Collection", url: "/collections/papan-bunga-pekanbaru", images: " ", price: " " },{ label: "Papan Bunga Pemalang", category: "Collection", url: "/collections/papan-bunga-pemalang", images: " ", price: " " },{ label: "Papan Bunga Pematangsiantar", category: "Collection", url: "/collections/papan-bunga-pematangsiantar", images: " ", price: " " }
7730,{ label: "Papan Bunga Pernikahan Bali", category: "Collection", url: "/collections/papan-bunga-pernikahan-bali", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Bandung", category: "Collection", url: "/collections/papan-bunga-pernikahan-bandung", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Bekasi", category: "Collection", url: "/collections/papan-bunga-pernikahan-bekasi", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Bogor", category: "Collection", url: "/collections/papan-bunga-pernikahan-bogor", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Cikupa", category: "Collection", url: "/collections/papan-bunga-pernikahan-cikupa", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Demak", category: "Collection", url: "/collections/papan-bunga-pernikahan-demak", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Depok", category: "Collection", url: "/collections/papan-bunga-pernikahan-depok", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Gresik", category: "Collection", url: "/collections/papan-bunga-pernikahan-gresik", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Jakarta", category: "Collection", url: "/collections/papan-bunga-pernikahan-jakarta", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Jepara", category: "Collection", url: "/collections/papan-bunga-pernikahan-jepara", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Medan", category: "Collection", url: "/collections/papan-bunga-pernikahan-medan", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Semarang", category: "Collection", url: "/collections/papan-bunga-pernikahan-semarang", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Serang", category: "Collection", url: "/collections/papan-bunga-pernikahan-serang", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Sidoarjo", category: "Collection", url: "/collections/papan-bunga-pernikahan-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Surabaya", category: "Collection", url: "/collections/papan-bunga-pernikahan-surabaya", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Tangerang", category: "Collection", url: "/collections/papan-bunga-pernikahan-tangerang", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Yogyakarta", category: "Collection", url: "/collections/papan-bunga-pernikahan-yogyakarta", images: " ", price: " " },{ label: "Papan Bunga Ponorogo", category: "Collection", url: "/collections/papan-bunga-ponorogo", images: " ", price: " " },{ label: "Papan Bunga Pontianak", category: "Collection", url: "/collections/papan-bunga-pontianak", images: " ", price: " " },{ label: "Papan Bunga Premium", category: "Collection", url: "/collections/papan-bunga-premium", images: " ", price: " " },{ label: "Papan Bunga Printing", category: "Collection", url: "/collections/papan-bunga-printing", images: " ", price: " " },{ label: "Papan Bunga Printing Congratulations", category: "Collection", url: "/collections/papan-bunga-printing-congratulations", images: " ", price: " " },{ label: "Papan Bunga Probolinggo", category: "Collection", url: "/collections/papan-bunga-probolinggo", images: " ", price: " " },{ label: "Papan Bunga Promo", category: "Collection", url: "/collections/promo-papan-bunga", images: " ", price: " " },{ label: "Papan Bunga Purbalingga", category: "Collection", url: "/collections/papan-bunga-purbalingga", images: " ", price: " " },{ label: "Papan Bunga Purwokerto", category: "Collection", url: "/collections/papan-bunga-purwokerto", images: " ", price: " " },{ label: "Papan Bunga Purworejo", category: "Collection", url: "/collections/papan-bunga-purworejo", images: " ", price: " " },{ label: "Papan Bunga Rembang", category: "Collection", url: "/collections/papan-bunga-rembang", images: " ", price: " " },{ label: "Papan Bunga Riau", category: "Collection", url: "/collections/papan-bunga-riau", images: " ", price: " " },{ label: "Papan Bunga Salatiga", category: "Collection", url: "/collections/papan-bunga-salatiga", images: " ", price: " " }
7730,{ label: "Papan Bunga Samarinda", category: "Collection", url: "/collections/papan-bunga-samarinda", images: " ", price: " " },{ label: "Papan Bunga Selamat Bandung", category: "Collection", url: "/collections/papan-bunga-selamat-bandung", images: " ", price: " " },{ label: "Papan Bunga Selamat Medan", category: "Collection", url: "/collections/papan-bunga-selamat-medan", images: " ", price: " " },{ label: "Papan Bunga Semarang", category: "Collection", url: "/collections/papan-bunga-semarang", images: " ", price: " " },{ label: "Papan Bunga Serang", category: "Collection", url: "/collections/papan-bunga-serang", images: " ", price: " " },{ label: "Papan Bunga Sibolga", category: "Collection", url: "/collections/papan-bunga-sibolga", images: " ", price: " " },{ label: "Papan Bunga Sidoarjo", category: "Collection", url: "/collections/papan-bunga-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Singkawang", category: "Collection", url: "/collections/papan-bunga-singkawang", images: " ", price: " " },{ label: "Papan Bunga Solo", category: "Collection", url: "/collections/papan-bunga-solo", images: " ", price: " " },{ label: "Papan Bunga Sorong", category: "Collection", url: "/collections/papan-bunga-sorong", images: " ", price: " " },{ label: "Papan Bunga Sragen", category: "Collection", url: "/collections/papan-bunga-sragen", images: " ", price: " " },{ label: "Papan Bunga Standard", category: "Collection", url: "/collections/papan-bunga-standard", images: " ", price: " " },{ label: "Papan Bunga Subang", category: "Collection", url: "/collections/papan-bunga-subang", images: " ", price: " " },{ label: "Papan Bunga Sukabumi", category: "Collection", url: "/collections/papan-bunga-sukabumi", images: " ", price: " " },{ label: "Papan Bunga Sumbawa", category: "Collection", url: "/collections/papan-bunga-sumbawa", images: " ", price: " " },{ label: "Papan Bunga Surabaya", category: "Collection", url: "/collections/papan-bunga-surabaya", images: " ", price: " " },{ label: "Papan Bunga Surakarta", category: "Collection", url: "/collections/papan-bunga-surakarta", images: " ", price: " " },{ label: "Papan Bunga Tangerang", category: "Collection", url: "/collections/papan-bunga-tangerang", images: " ", price: " " },{ label: "Papan Bunga Tasikmalaya", category: "Collection", url: "/collections/papan-bunga-tasikmalaya", images: " ", price: " " },{ label: "Papan Bunga Tegal", category: "Collection", url: "/collections/papan-bunga-tegal", images: " ", price: " " },{ label: "Papan Bunga Temanggung", category: "Collection", url: "/collections/papan-bunga-temanggung", images: " ", price: " " },{ label: "Papan Bunga Ternate", category: "Collection", url: "/collections/papan-bunga-ternate", images: " ", price: " " },{ label: "Papan Bunga Tolitoli", category: "Collection", url: "/collections/papan-bunga-tolitoli", images: " ", price: " " },{ label: "Papan Bunga Toraja", category: "Collection", url: "/collections/papan-bunga-toraja", images: " ", price: " " },{ label: "Papan Bunga Tuban", category: "Collection", url: "/collections/papan-bunga-tuban", images: " ", price: " " },{ label: "Papan Bunga Tulungagung", category: "Collection", url: "/collections/papan-bunga-tulungagung", images: " ", price: " " },{ label: "Papan Bunga Wakatobi", category: "Collection", url: "/collections/papan-bunga-wakatobi", images: " ", price: " " },{ label: "Papan Bunga Wedding", category: "Collection", url: "/collections/papan-bunga-ucapan-pernikahan", images: " ", price: " " },{ label: "Papan Bunga Wiyung", category: "Collection", url: "/collections/papan-bunga-wiyung", images: " ", price: " " },{ label: "Papan Bunga Wonogiri", category: "Collection", url: "/collections/papan-bunga-wonogiri", images: " ", price: " " },{ label: "Papan Bunga Wonokromo", category: "Collection", url: "/collections/papan-bunga-wonokromo", images: " ", price: " " },{ label: "Papan Bunga Wonosobo", category: "Collection", url: "/collections/papan-bunga-wonosobo", images: " ", price: " " },{ label: "Papan Bunga Yogyakarta", category: "Collection", url: "/collections/papan-bunga-yogyakarta", images: " ", price: " " }
7730,{ label: "Paper Flower Board", category: "Collection", url: "/collections/papan-bunga-kertas", images: " ", price: " " },{ label: "Paper Flower Board Bali", category: "Collection", url: "/collections/papan-bunga-kertas-bali", images: " ", price: " " },{ label: "Paper Flower Board Gresik", category: "Collection", url: "/collections/papan-bunga-kertas-gresik", images: " ", price: " " },{ label: "Paper Flower Board Sidoarjo", category: "Collection", url: "/collections/papan-bunga-kertas-sidoarjo", images: " ", price: " " },{ label: "Paper Flower Board Surabaya", category: "Collection", url: "/collections/papan-bunga-kertas-surabaya", images: " ", price: " " },{ label: "Paper Flower Board Yogyakarta", category: "Collection", url: "/collections/papan-bunga-kertas-yogyakarta", images: " ", price: " " },{ label: "Parcel", category: "Collection", url: "/collections/parcel", images: " ", price: " " },{ label: "Parcel Buah", category: "Collection", url: "/collections/parcel-buah-segar", images: " ", price: " " },{ label: "Parcel Buah Bandung", category: "Collection", url: "/collections/parcel-buah-bandung", images: " ", price: " " },{ label: "Parcel Buah Semarang", category: "Collection", url: "/collections/parcel-buah-semarang", images: " ", price: " " },{ label: "Parcel Buah Sidoarjo", category: "Collection", url: "/collections/parcel-buah-sidoarjo", images: " ", price: " " },{ label: "Parcel Buah Surabaya", category: "Collection", url: "/collections/parcel-buah-surabaya", images: " ", price: " " },{ label: "Parcel Imlek 2025", category: "Collection", url: "/collections/parcel-imlek", images: " ", price: " " },{ label: "Parcel Imlek Bandung", category: "Collection", url: "/collections/parcel-imlek-bandung", images: " ", price: " " },{ label: "Parcel Imlek Nusantara", category: "Collection", url: "/collections/parcel-imlek-nusantara", images: " ", price: " " },{ label: "Parcel Lebaran Bandung", category: "Collection", url: "/collections/parcel-lebaran-bandung", images: " ", price: " " },{ label: "Parcel Lebaran Nusantara", category: "Collection", url: "/collections/parcel-lebaran-indonesia", images: " ", price: " " },{ label: "Parcel Lebaran Surabaya", category: "Collection", url: "/collections/parcel-lebaran-surabaya", images: " ", price: " " },{ label: "Parcel Makanan", category: "Collection", url: "/collections/parcel-makanan", images: " ", price: " " },{ label: "Parcel Natal & Tahun Baru 2026", category: "Collection", url: "/collections/hampers-natal", images: " ", price: " " },{ label: "Parcel Natal & Tahun Baru Bandung", category: "Collection", url: "/collections/parcel-natal-bandung", images: " ", price: " " },{ label: "Parcel Newborn Nusantara", category: "Collection", url: "/collections/parcel-newborn-nusantara", images: " ", price: " " },{ label: "Parcel Tahun Baru", category: "Collection", url: "/collections/new-year-tahun-baru", images: " ", price: " " },{ label: "Party Supplies", category: "Collection", url: "/collections/party-supplies", images: " ", price: " " },{ label: "Partysaurus", category: "Collection", url: "/collections/partysaurus", images: " ", price: " " },{ label: "Pasar Bunga Splendid Malang", category: "Collection", url: "/collections/pasar-bunga-splendid-malang", images: " ", price: " " },{ label: "Passionate Red Valentine", category: "Collection", url: "/collections/red-valentine", images: " ", price: " " },{ label: "Pendant", category: "Collection", url: "/collections/liontin", images: " ", price: " " },{ label: "Personalized Fashion", category: "Collection", url: "/collections/fashion", images: " ", price: " " },{ label: "Personalized Gift", category: "Collection", url: "/collections/personalized-gift", images: " ", price: " " },{ label: "Personalized Gift Pria", category: "Collection", url: "/collections/personalized-gift-pria", images: " ", price: " " },{ label: "Personalized Gift Wanita", category: "Collection", url: "/collections/personalized-gift-wanita", images: " ", price: " " },{ label: "Personalized Gifts", category: "Collection", url: "/collections/personalized-gifts", images: " ", price: " " },{ label: "Pesca Ice Cream Cakes", category: "Collection", url: "/collections/pesca", images: " ", price: " " },{ label: "Phone Case", category: "Collection", url: "/collections/phone-case", images: " ", price: " " },{ label: "Photobook", category: "Collection", url: "/collections/photobook", images: " ", price: " " },{ label: "Pisces ♓️ 19Feb - 20March", category: "Collection", url: "/collections/kado-untuk-zodiak-pisces", images: " ", price: " " },{ label: "Pohon Natal", category: "Collection", url: "/collections/pohon-natal", images: " ", price: " " },{ label: "Premium Hampers", category: "Collection", url: "/collections/parcel-premium", images: " ", price: " " },{ label: "Premium Newborn Hampers Collection", category: "Collection", url: "/collections/premium-newborn-hampers-collection", images: " ", price: " " },{ label: "Printing Cake", category: "Collection", url: "/collections/printing-cake", images: " ", price: " " },{ label: "Prom", category: "Collection", url: "/collections/prom", images: " ", price: " " },{ label: "Promo Merdeka", category: "Collection", url: "/collections/merdeka", images: " ", price: " " },{ label: "Rangkaian Bunga", category: "Collection", url: "/collections/rangkaian-bunga", images: " ", price: " " },{ label: "Rangkaian Bunga Dekorasi", category: "Collection", url: "/collections/rangkaian-bunga-dekorasi", images: " ", price: " " },{ label: "Rangkaian Bunga Ulang Tahun", category: "Collection", url: "/collections/rangkaian-bunga-ulang-tahun", images: " ", price: " " },{ label: "Romantic & Sweets", category: "Collection", url: "/collections/romantic-sweets", images: " ", price: " " },{ label: "Romantic Package", category: "Collection", url: "/collections/romantic-package", images: " ", price: " " },{ label: "Rose Beam", category: "Collection", url: "/collections/rose-beam", images: " ", price: " " },{ label: "Rose Box", category: "Collection", url: "/collections/rose-box", images: " ", price: " " },{ label: "Roses", category: "Collection", url: "/collections/bunga-mawar", images: " ", price: " " },{ label: "Rp 500.000 - Rp 800.000", category: "Collection", url: "/collections/rp-500-000-rp-800-000", images: " ", price: " " },{ label: "Rp 800.000 - Rp 1.000.000", category: "Collection", url: "/collections/rp-800-000-rp-1-000-000", images: " ", price: " " },{ label: "Rustic & Monochrome Ramadan Hampers", category: "Collection", url: "/collections/rustic-monochrome-ramadanhampers", images: " ", price: " " },{ label: "Rustic Bloom", category: "Collection", url: "/collections/dried-flowers", images: " ", price: " " },{ label: "Rustic Style Flowers", category: "Collection", url: "/collections/rustic-style-flowers", images: " ", price: " " },{ label: "Sagittarius ♐️ 22Nov - 21Des", category: "Collection", url: "/collections/kado-untuk-zodiak-sagittarius", images: " ", price: " " },{ label: "Sameday Delivery", category: "Collection", url: "/collections/sameday", images: " ", price: " " },{ label: "Savoury Dish", category: "Collection", url: "/collections/savoury-dish", images: " ", price: " " },{ label: "Saychiz", category: "Collection", url: "/collections/saychiz", images: " ", price: " " },{ label: "Scented Candles", category: "Collection", url: "/collections/scented-candles", images: " ", price: " " },{ label: "Scorpio ♏️ 24Oct - 21Nov", category: "Collection", url: "/collections/kado-untuk-zodiak-scorpio", images: " ", price: " " },{ label: "Self Pick-Up", category: "Collection", url: "/collections/self-pick-up", images: " ", price: " " },{ label: "Semua Produk", category: "Collection", url: "/collections/all", images: " ", price: " " },{ label: "Serenitea", category: "Collection", url: "/collections/serenitea", images: " ", price: " " },{ label: "Share Outerbloom Moment", category: "Collection", url: "/collections/share-moment", images: " ", price: " " },{ label: "Share your Happiness", category: "Collection", url: "/collections/share-happiness", images: " ", price: " " },{ label: "Signature Cake", category: "Collection", url: "/collections/signature-cake", images: " ", price: " " },{ label: "Signature Chinese New Year Hampers", category: "Collection", url: "/collections/signature-chinese-new-year-hampers", images: " ", price: " " },{ label: "Signature Christmas & New Year Hampers", category: "Collection", url: "/collections/signature-christmas-hampers", images: " ", price: " " },{ label: "Signature Hampers", category: "Collection", url: "/collections/signature-hampers", images: " ", price: " " },{ label: "Signature Hampers Luar Jadetabek", category: "Collection", url: "/collections/signature-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Signature Hampers Sameday", category: "Collection", url: "/collections/signature-hampers-sameday", images: " ", price: " " },{ label: "Signature Ramadan Hampers", category: "Collection", url: "/collections/signature-ramadan-hampers", images: " ", price: " " },{ label: "Slice Cake", category: "Collection", url: "/collections/slice-cake", images: " ", price: " " },{ label: "Snack Box", category: "Collection", url: "/collections/snack-box", images: " ", price: " " },{ label: "Sol et Terre", category: "Collection", url: "/collections/sol-et-terre", images: " ", price: " " },{ label: "Sorbet", category: "Collection", url: "/collections/sorbet", images: " ", price: " " },{ label: "Special Day", category: "Collection", url: "/collections/special-day", images: " ", price: " " },{ label: "Special Edition", category: "Collection", url: "/collections/special-edition", images: " ", price: " " },{ label: "Special For Her", category: "Collection", url: "/collections/special-for-her", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik", category: "Collection", url: "/collections/standing-flower", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Bali", category: "Collection", url: "/collections/standing-flower-bali", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Bandung", category: "Collection", url: "/collections/standing-flower-bandung", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Congratulations", category: "Collection", url: "/collections/standing-flower-congratulations", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Demak", category: "Collection", url: "/collections/standing-flower-demak", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Jepara", category: "Collection", url: "/collections/standing-flower-jepara", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Semarang", category: "Collection", url: "/collections/standing-flower-semarang", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Sidoarjo", category: "Collection", url: "/collections/standing-flower-sidoarjo", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Surabaya", category: "Collection", url: "/collections/standing-flower-surabaya", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Yogyakarta", category: "Collection", url: "/collections/standing-flower-yogyakarta", images: " ", price: " " },{ label: "Standing Giant Flower", category: "Collection", url: "/collections/standing-giant-flower", images: " ", price: " " },{ label: "Stationery", category: "Collection", url: "/collections/stationery", images: " ", price: " " },{ label: "Steekwerk", category: "Collection", url: "/collections/steekwerk", images: " ", price: " " },{ label: "Stylish Hampers", category: "Collection", url: "/collections/stylish-hampers", images: " ", price: " " },{ label: "Stylish Hampers Luar Jadetabek", category: "Collection", url: "/collections/stylish-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Succulent", category: "Collection", url: "/collections/succulent", images: " ", price: " " },{ label: "Sunflower", category: "Collection", url: "/collections/bunga-matahari", images: " ", price: " " },{ label: "Sweet & Savoury Hampers", category: "Collection", url: "/collections/sweet-savoury-hampers", images: " ", price: " " },{ label: "Sweet Gracie", category: "Collection", url: "/collections/sweet-gracie", images: " ", price: " " },{ label: "Sweet Pastel Love", category: "Collection", url: "/collections/pastel-love", images: " ", price: " " },{ label: "Sweet Pastel Love Nusantara", category: "Collection", url: "/collections/sweet-pastel-love-nusantara", images: " ", price: " " },{ label: "Sweet Treats", category: "Collection", url: "/collections/sweet-treats", images: " ", price: " " },{ label: "Sweetooth", category: "Collection", url: "/collections/sweetooth", images: " ", price: " " },{ label: "Taurus ♉️ 20April - 20May", category: "Collection", url: "/collections/kado-untuk-zodiak-taurus", images: " ", price: " " },{ label: "Teddy Bear", category: "Collection", url: "/collections/boneka-teddy-bear", images: " ", price: " " },{ label: "Teh", category: "Collection", url: "/collections/teh", images: " ", price: " " },{ label: "Test Error", category: "Collection", url: "/collections/test-error", images: " ", price: " " },{ label: "Testing", category: "Collection", url: "/collections/testing", images: " ", price: " " },{ label: "Thank You", category: "Collection", url: "/collections/rangkaian-bunga-ucapan-terima-kasih", images: " ", price: " " },{ label: "The Classic Astoria", category: "Collection", url: "/collections/astoria", images: " ", price: " " },{ label: "The Classic Enchanted Dome", category: "Collection", url: "/collections/enchanted-dome", images: " ", price: " " },{ label: "The Enchanted Love Pirouette Special Edition", category: "Collection", url: "/collections/the-enchanted-love-pirouette-special-edition", images: " ", price: " " },{ label: "The F Thing", category: "Collection", url: "/collections/the-f-thing", images: " ", price: " " },{ label: "The First", category: "Collection", url: "/collections/the-first", images: " ", price: " " },{ label: "The Novo Astoria", category: "Collection", url: "/collections/the-novo-astoria", images: " ", price: " " },{ label: "The Novo Enchanted Dome", category: "Collection", url: "/collections/the-novo-enchanted-dome", images: " ", price: " " },{ label: "The Novo Enchanted Dome Special Edition", category: "Collection", url: "/collections/the-novo-enchanted-dome-special-edition", images: " ", price: " " },{ label: "The Palace", category: "Collection", url: "/collections/the-palace", images: " ", price: " " },{ label: "Ties", category: "Collection", url: "/collections/dasi", images: " ", price: " " },{ label: "Tisane", category: "Collection", url: "/collections/tisane", images: " ", price: " " },{ label: "Toko Bunga Aceh", category: "Collection", url: "/collections/toko-bunga-aceh", images: " ", price: " " },{ label: "Toko Bunga Ambon", category: "Collection", url: "/collections/toko-bunga-ambon", images: " ", price: " " },{ label: "Toko Bunga Atambua", category: "Collection", url: "/collections/toko-bunga-atambua"
7730, images: " ", price: " " },{ label: "Toko Bunga Bali", category: "Collection", url: "/collections/toko-bunga-bali", images: " ", price: " " },{ label: "Toko Bunga Balikpapan", category: "Collection", url: "/collections/toko-bunga-balikpapan", images: " ", price: " " },{ label: "Toko Bunga Bandar Lampung", category: "Collection", url: "/collections/toko-bunga-bandar-lampung", images: " ", price: " " },{ label: "Toko Bunga Bandung", category: "Collection", url: "/collections/toko-bunga-bandung", images: " ", price: " " },{ label: "Toko Bunga Bandung Barat", category: "Collection", url: "/collections/toko-bunga-bandung-barat", images: " ", price: " " },{ label: "Toko Bunga Banjarmasin", category: "Collection", url: "/collections/toko-bunga-banjarmasin", images: " ", price: " " },{ label: "Toko Bunga Banten", category: "Collection", url: "/collections/toko-bunga-banten", images: " ", price: " " },{ label: "Toko Bunga Banyumas", category: "Collection", url: "/collections/toko-bunga-banyumas", images: " ", price: " " },{ label: "Toko Bunga Banyuwangi", category: "Collection", url: "/collections/toko-bunga-banyuwangi", images: " ", price: " " },{ label: "Toko Bunga Batam", category: "Collection", url: "/collections/toko-bunga-batam", images: " ", price: " " },{ label: "Toko Bunga Baubau", category: "Collection", url: "/collections/toko-bunga-baubau", images: " ", price: " " },{ label: "Toko Bunga Bekasi", category: "Collection", url: "/collections/toko-bunga-bekasi", images: " ", price: " " },{ label: "Toko Bunga Bengkalis", category: "Collection", url: "/collections/toko-bunga-bengkalis", images: " ", price: " " },{ label: "Toko Bunga Bengkayang", category: "Collection", url: "/collections/toko-bunga-bengkayang", images: " ", price: " " },{ label: "Toko Bunga Binjai", category: "Collection", url: "/collections/toko-bunga-binjai", images: " ", price: " " },{ label: "Toko Bunga Bintaro", category: "Collection", url: "/collections/toko-bunga-bintaro", images: " ", price: " " },{ label: "Toko Bunga Blitar", category: "Collection", url: "/collections/toko-bunga-blitar", images: " ", price: " " },{ label: "Toko Bunga Blora", category: "Collection", url: "/collections/toko-bunga-blora", images: " ", price: " " },{ label: "Toko Bunga Bogor", category: "Collection", url: "/collections/toko-bunga-bogor", images: " ", price: " " },{ label: "Toko Bunga Bojonegoro", category: "Collection", url: "/collections/toko-bunga-bojonegoro", images: " ", price: " " },{ label: "Toko Bunga Boyolali", category: "Collection", url: "/collections/toko-bunga-boyolali", images: " ", price: " " },{ label: "Toko Bunga Brebes", category: "Collection", url: "/collections/toko-bunga-brebes", images: " ", price: " " },{ label: "Toko Bunga Bukittinggi", category: "Collection", url: "/collections/toko-bunga-bukittinggi", images: " ", price: " " },{ label: "Toko Bunga Buleleng", category: "Collection", url: "/collections/toko-bunga-buleleng", images: " ", price: " " },{ label: "Toko Bunga Cakung", category: "Collection", url: "/collections/toko-bunga-cakung", images: " ", price: " " },{ label: "Toko Bunga Cawang", category: "Collection", url: "/collections/toko-bunga-cawang", images: " ", price: " " },{ label: "Toko Bunga Cempaka Putih", category: "Collection", url: "/collections/toko-bunga-cempaka-putih", images: " ", price: " " },{ label: "Toko Bunga Cengkareng", category: "Collection", url: "/collections/toko-bunga-cengkareng", images: " ", price: " " },{ label: "Toko Bunga Ciamis", category: "Collection", url: "/collections/toko-bunga-ciamis", images: " ", price: " " },{ label: "Toko Bunga Cianjur", category: "Collection", url: "/collections/toko-bunga-cianjur", images: " ", price: " " },{ label: "Toko Bunga Cibinong", category: "Collection", url: "/collections/toko-bunga-cibinong", images: " ", price: " " },{ label: "Toko Bunga Cibubur", category: "Collection", url: "/collections/toko-bunga-cibubur", images: " ", price: " " },{ label: "Toko Bunga Cijantung", category: "Collection", url: "/collections/toko-bunga-cijantung", images: " ", price: " " },{ label: "Toko Bunga Cikarang", category: "Collection", url: "/collections/toko-bunga-cikarang", images: " ", price: " " },{ label: "Toko Bunga Cikini", category: "Collection", url: "/collections/toko-bunga-cikini", images: " ", price: " " },{ label: "Toko Bunga Cilacap", category: "Collection", url: "/collections/toko-bunga-cilacap", images: " ", price: " " },{ label: "Toko Bunga Cilandak", category: "Collection", url: "/collections/toko-bunga-cilandak", images: " ", price: " " },{ label: "Toko Bunga Cileunyi", category: "Collection", url: "/collections/toko-bunga-cileunyi", images: " ", price: " " },{ label: "Toko Bunga Ciracas", category: "Collection", url: "/collections/toko-bunga-ciracas", images: " ", price: " " },{ label: "Toko Bunga Cirebon", category: "Collection", url: "/collections/toko-bunga-cirebon", images: " ", price: " " }
7730,{ label: "Toko Bunga Ciwidey", category: "Collection", url: "/collections/toko-bunga-ciwidey", images: " ", price: " " },{ label: "Toko Bunga Danau Toba", category: "Collection", url: "/collections/toko-bunga-danau-toba", images: " ", price: " " },{ label: "Toko Bunga Demak", category: "Collection", url: "/collections/toko-bunga-demak", images: " ", price: " " },{ label: "Toko Bunga Denpasar", category: "Collection", url: "/collections/toko-bunga-denpasar", images: " ", price: " " },{ label: "Toko Bunga Depok", category: "Collection", url: "/collections/toko-bunga-depok", images: " ", price: " " },{ label: "Toko Bunga Duren Sawit", category: "Collection", url: "/collections/toko-bunga-duren-sawit", images: " ", price: " " },{ label: "Toko Bunga Garut", category: "Collection", url: "/collections/toko-bunga-garut", images: " ", price: " " },{ label: "Toko Bunga Gianyar", category: "Collection", url: "/collections/toko-bunga-gianyar", images: " ", price: " " },{ label: "Toko Bunga Gowa", category: "Collection", url: "/collections/toko-bunga-gowa", images: " ", price: " " },{ label: "Toko Bunga Gresik", category: "Collection", url: "/collections/toko-bunga-gresik", images: " ", price: " " },{ label: "Toko Bunga Grobogan", category: "Collection", url: "/collections/toko-bunga-grobogan", images: " ", price: " " },{ label: "Toko Bunga Grogol", category: "Collection", url: "/collections/toko-bunga-grogol", images: " ", price: " " },{ label: "Toko Bunga Gunungkidul", category: "Collection", url: "/collections/toko-bunga-gunungkidul", images: " ", price: " " },{ label: "Toko Bunga Indramayu", category: "Collection", url: "/collections/toko-bunga-indramayu", images: " ", price: " " },{ label: "Toko Bunga Jakarta", category: "Collection", url: "/collections/toko-bunga-jakarta", images: " ", price: " " },{ label: "Toko Bunga Jakarta Barat", category: "Collection", url: "/collections/toko-bunga-jakarta-barat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Pusat", category: "Collection", url: "/collections/toko-bunga-jakarta-pusat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Selatan", category: "Collection", url: "/collections/toko-bunga-jakarta-selatan", images: " ", price: " " },{ label: "Toko Bunga Jakarta Timur", category: "Collection", url: "/collections/toko-bunga-jakarta-timur", images: " ", price: " " },{ label: "Toko Bunga Jakarta Utara", category: "Collection", url: "/collections/toko-bunga-jakarta-utara", images: " ", price: " " },{ label: "Toko Bunga Jambi", category: "Collection", url: "/collections/toko-bunga-jambi", images: " ", price: " " },{ label: "Toko Bunga Jatinegara", category: "Collection", url: "/collections/toko-bunga-jatinegara", images: " ", price: " " },{ label: "Toko Bunga Jawa & Bali", category: "Collection", url: "/collections/toko-bunga-jawa-bali", images: " ", price: " " },{ label: "Toko Bunga Jayapura", category: "Collection", url: "/collections/toko-bunga-jayapura", images: " ", price: " " },{ label: "Toko Bunga Jelambar - Florist Onine 24 Jam", category: "Collection", url: "/collections/toko-bunga-jelambar", images: " ", price: " " },{ label: "Toko Bunga Jember", category: "Collection", url: "/collections/toko-bunga-jember", images: " ", price: " " },{ label: "Toko Bunga Jembrana", category: "Collection", url: "/collections/toko-bunga-jembrana", images: " ", price: " " },{ label: "Toko Bunga Jepara", category: "Collection", url: "/collections/toko-bunga-jepara", images: " ", price: " " },{ label: "Toko Bunga Joglo", category: "Collection", url: "/collections/toko-bunga-joglo", images: " ", price: " " },{ label: "Toko Bunga Jombang", category: "Collection", url: "/collections/toko-bunga-jombang", images: " ", price: " " },{ label: "Toko Bunga Kalibata", category: "Collection", url: "/collections/toko-bunga-kalibata", images: " ", price: " " },{ label: "Toko Bunga Kalimantan", category: "Collection", url: "/collections/toko-bunga-kalimantan", images: " ", price: " " },{ label: "Toko Bunga Kalisari Semarang", category: "Collection", url: "/collections/toko-bunga-kalisari-semarang", images: " ", price: " " },{ label: "Toko Bunga Kampung Baru", category: "Collection", url: "/collections/toko-bunga-kampung-baru", images: " ", price: " " },{ label: "Toko Bunga Kapuas", category: "Collection", url: "/collections/toko-bunga-kapuas", images: " ", price: " " },{ label: "Toko Bunga Karanganyar", category: "Collection", url: "/collections/toko-bunga-karanganyar", images: " ", price: " " },{ label: "Toko Bunga Karangasem", category: "Collection", url: "/collections/toko-bunga-karangasem", images: " ", price: " " },{ label: "Toko Bunga Karawang", category: "Collection", url: "/collections/toko-bunga-karawang", images: " ", price: " " },{ label: "Toko Bunga Kartosuro", category: "Collection", url: "/collections/toko-bunga-kartosuro", images: " ", price: " " },{ label: "Toko Bunga Kayoon Surabaya", category: "Collection", url: "/collections/toko-bunga-kayoon-surabaya", images: " ", price: " " },{ label: "Toko Bunga Kebayoran Baru", category: "Collection", url: "/collections/toko-bunga-kebayoran-baru", images: " ", price: " " },{ label: "Toko Bunga Kebon Jeruk", category: "Collection", url: "/collections/toko-bunga-kebon-jeruk", images: " ", price: " " },{ label: "Toko Bunga Kebumen", category: "Collection", url: "/collections/toko-bunga-kebumen", images: " ", price: " " },{ label: "Toko Bunga Kediri", category: "Collection", url: "/collections/toko-bunga-kediri", images: " ", price: " " },{ label: "Toko Bunga Kelapa Gading", category: "Collection", url: "/collections/toko-bunga-kelapa-gading", images: " ", price: " " },{ label: "Toko Bunga Kemayoran", category: "Collection", url: "/collections/toko-bunga-kemayoran", images: " ", price: " " },{ label: "Toko Bunga Kendal", category: "Collection", url: "/collections/toko-bunga-ken
7730dal", images: " ", price: " " },{ label: "Toko Bunga Kendari", category: "Collection", url: "/collections/toko-bunga-kendari", images: " ", price: " " },{ label: "Toko Bunga Ketapang", category: "Collection", url: "/collections/toko-bunga-ketapang", images: " ", price: " " },{ label: "Toko Bunga Klaten", category: "Collection", url: "/collections/toko-bunga-klaten", images: " ", price: " " },{ label: "Toko Bunga Klender", category: "Collection", url: "/collections/toko-bunga-klender", images: " ", price: " " },{ label: "Toko Bunga Kota Baru Yogyakarta", category: "Collection", url: "/collections/toko-bunga-kota-baru-yogyakarta", images: " ", price: " " },{ label: "Toko Bunga Kota Batu", category: "Collection", url: "/collections/toko-bunga-kota-batu", images: " ", price: " " },{ label: "Toko Bunga Kramat Jati", category: "Collection", url: "/collections/toko-bunga-kramat-jati", images: " ", price: " " },{ label: "Toko Bunga Kudus", category: "Collection", url: "/collections/toko-bunga-kudus", images: " ", price: " " },{ label: "Toko Bunga Kupang", category: "Collection", url: "/collections/toko-bunga-kupang", images: " ", price: " " },{ label: "Toko Bunga Lamongan", category: "Collection", url: "/collections/toko-bunga-lamongan", images: " ", price: " " },{ label: "Toko Bunga Langkat", category: "Collection", url: "/collections/toko-bunga-langkat", images: " ", price: " " },{ label: "Toko Bunga Lebak Bulus", category: "Collection", url: "/collections/toko-bunga-lebak-bulus", images: " ", price: " " },{ label: "Toko Bunga Lembang", category: "Collection", url: "/collections/toko-bunga-lembang", images: " ", price: " " },{ label: "Toko Bunga Lenteng Agung", category: "Collection", url: "/collections/toko-bunga-lenteng-agung", images: " ", price: " " },{ label: "Toko Bunga Lombok", category: "Collection", url: "/collections/toko-bunga-lombok", images: " ", price: " " },{ label: "Toko Bunga Lubuk Pakam", category: "Collection", url: "/collections/toko-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Toko Bunga Lumajang", category: "Collection", url: "/collections/toko-bunga-lumajang", images: " ", price: " " },{ label: "Toko Bunga Madiun", category: "Collection", url: "/collections/toko-bunga-madiun", images: " ", price: " " },{ label: "Toko Bunga Magelang", category: "Collection", url: "/collections/toko-bunga-magelang", images: " ", price: " " },{ label: "Toko Bunga Majalengka", category: "Collection", url: "/collections/toko-bunga-majalengka", images: " ", price: " " },{ label: "Toko Bunga Makassar", category: "Collection", url: "/collections/toko-bunga-makassar", images: " ", price: " " },{ label: "Toko Bunga Malang", category: "Collection", url: "/collections/toko-bunga-malang", images: " ", price: " " },{ label: "Toko Bunga Manado", category: "Collection", url: "/collections/toko-bunga-manado", images: " ", price: " " },{ label: "Toko Bunga Mangga Besar", category: "Collection", url: "/collections/toko-bunga-mangga-besar", images: " ", price: " " },{ label: "Toko Bunga Manokwari", category: "Collection", url: "/collections/toko-bunga-manokwari", images: " ", price: " " },{ label: "Toko Bunga Maros", category: "Collection", url: "/collections/toko-bunga-maros", images: " ", price: " " },{ label: "Toko Bunga Mataram", category: "Collection", url: "/collections/toko-bunga-mataram", images: " ", price: " " },{ label: "Toko Bunga Medan", category: "Collection", url: "/collections/toko-bunga-medan", images: " ", price: " " },{ label: "Toko Bunga Mojokerto", category: "Collection", url: "/collections/toko-bunga-mojokerto", images: " ", price: " " },{ label: "Toko Bunga Nganjuk", category: "Collection", url: "/collections/toko-bunga-nganjuk", images: " ", price: " " },{ label: "Toko Bunga Ngawi", category: "Collection", url: "/collections/toko-bunga-ngawi", images: " ", price: " " },{ label: "Toko Bunga Nias", category: "Collection", url: "/collections/toko-bunga-nias", images: " ", price: " " },{ label: "Toko Bunga Nusa Tenggara", category: "Collection", url: "/collections/toko-bunga-nusa-tenggara", images: " ", price: " " },{ label: "Toko Bunga Padang", category: "Collection", url: "/collections/toko-bunga-padang", images: " ", price: " " },{ label: "Toko Bunga Palembang", category: "Collection", url: "/collections/toko-bunga-palembang", images: " ", price: " " },{ label: "Toko Bunga Palu", category: "Collection", url: "/collections/toko-bunga-palu", images: " ", price: " " },{ label: "Toko Bunga Pangkal Pinang", category: "Collection", url: "/collections/toko-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Toko Bunga Papua", category: "Collection", url: "/collections/toko-bunga-papua", images: " ", price: " " },{ label: "Toko Bunga Parepare", category: "Collection", url: "/collections/toko-bunga-parepare", images: " ", price: " " },{ label: "Toko Bunga Pasar Baru", category: "Collection", url: "/collections/toko-bunga-pasar-baru", images: " ", price: " " },{ label: "Toko Bunga Pasar Minggu", category: "Collection", url: "/collections/toko-bunga-pasar-minggu", images: " ", price: " " },{ label: "Toko Bunga Pasar Rebo", category: "Collection", url: "/collections/toko-bunga-pasar-rebo", images: " ", price: " " },{ label: "Toko Bunga Pasuruan", category: "Collection", url: "/collections/toko-bunga-pasuruan", images: " ", price: " " },{ label: "Toko Bunga Pati", category: "Collection", url: "/collections/toko-bunga-pati", images: " ", price: " " },{ label: "Toko Bunga Pekalongan", category: "Collection", url: "/collections/toko-bunga-pekalongan", images: " ", price: " " },{ label: "Toko Bunga Pekanbaru", category: "Collection", url: "/collections/toko-bunga-pekanbaru", images: " ", price: " " },{ label: "Toko Bunga Pemalang", category: "Collection", url: "/collections/toko-bunga-pemalang", images: " ", price: " " },
7731       { label: "grand salutation jabodetabek", category: "Produk", url: "/products/grand-salutation", images: "//outerbloom.com/cdn/shop/files/JKTCON1005_Grand-Salutation-Jabodetabek-WM_thumb.jpg?v=1703241523", price: "Rp 435.000" },{ label: "consolantibus jabodetabek", category: "Produk", url: "/products/consolantibus", images: "//outerbloom.com/cdn/shop/files/JKTDUK1011_Consolantibus-Jabodetabek-WM_thumb.jpg?v=1703239823", price: "Rp 435.000" },{ label: "classic midnight hand bouquet fiery red", category: "Produk", url: "/products/the-classic-midnight-hand-bouquet-fiery-red", images: "//outerbloom.com/cdn/shop/files/OBVBUN1422_Classic-Midnight-Hand-Bouquet---Fiery-Red-large_thumb.jpg?v=1757302521", price: "Rp 385.000" },{ label: "enchanted dome passionate red", category: "Produk", url: "/products/enchanted-dome-passionate-red", images: "//outerbloom.com/cdn/shop/files/Enchanted-dome-red-new-box_3_2_26c081bf-f2a5-42b4-9ce4-3c0304c498e5_thumb.jpg?v=1712639476", price: "Rp 1.435.000" },{ label: "endearing ruby", category: "Produk", url: "/products/endearing-ruby", images: "//outerbloom.com/cdn/shop/products/OUTSTF1003_Endearing-Ruby_thumb.jpg?v=1631296611", price: "Rp 585.000" },{ label: "gentle soul jabodetabek", category: "Produk", url: "/products/gentle-soul-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTDUK1030_Gentle-Soul-Jabodetabek-WM_thumb.jpg?v=1703239894", price: "Rp 435.000" },{ label: "belleza jabodetabek", category: "Produk", url: "/products/belleza", images: "//outerbloom.com/cdn/shop/files/Belleza-Jabodetabek-LED_aecb756a-0737-45cc-8bfb-008515ca0a37_thumb.gif?v=1759229680", price: "Rp 435.000" }
7731,{ label: "majestic pink roses with baby breath bouquet", category: "Produk", url: "/products/majestic-pink-roses-with-baby-breath-bouquet", images: "//outerbloom.com/cdn/shop/products/ef4a3be9-c938-4c70-98ac-4873e7da82bf_90820a66-923a-463d-a464-81bcbe6e6644_thumb.jpg?v=1581413440", price: "Rp 485.000" },{ label: "sentiments jabodetabek", category: "Produk", url: "/products/sentiments", images: "//outerbloom.com/cdn/shop/files/Sentiments-Jabodetabek-WM_thumb.jpg?v=1759224099", price: "Rp 485.000" },{ label: "rose poetry bouquet", category: "Produk", url: "/products/rose-poetry-bouquet", images: "//outerbloom.com/cdn/shop/products/Rose-Poetry-Bouquet-20-tangkai_thumb.jpg?v=1675151039", price: "Rp 385.000" },{ label: "genuine feeling", category: "Produk", url: "/products/genuine-feeling", images: "//outerbloom.com/cdn/shop/products/OUTSTF1004Genuine-Feeling_981ade89-af27-433e-81aa-8d76175a0e4d_thumb.jpg?v=1612352389", price: "Rp 585.000" },{ label: "eternal fidelity jabodetabek", category: "Produk", url: "/products/eternal-fidelity-jabodetabek", images: "//outerbloom.com/cdn/shop/products/0b89df45-dcc1-4876-820e-61b2243a1945_964e211d-2972-46c9-8593-976210929089_thumb.jpg?v=1590491458", price: "Rp 435.000" },{ label: "rosabelle hand bouquet", category: "Produk", url: "/products/rosabelle-hand-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1429_Rosabelle-Hand-Bouquet-Medium_thumb.jpg?v=1756971848", price: "Rp 385.000" },{ label: "dreaming in pink luxury in vase", category: "Produk", url: "/products/dreaming-in-pink-luxury-in-vase", images: "//outerbloom.com/cdn/shop/products/OBVBUN1051_Dreaming-In-Pink-Luxury-In-Vase_3_thumb.jpg?v=1614594504", price: "Rp 735.000" },{ label: "excito jabodetabek", category: "Produk", url: "/products/excito", images: "//outerbloom.com/cdn/shop/files/JKTCON1010_Excito-Jabodetabek-2023_thumb.gif?v=1717494677", price: "Rp 485.000" },{ label: "golden toast jabodetabek", category: "Produk", url: "/products/golden-toast", images: "//outerbloom.com/cdn/shop/products/LED-GoldenToast_thumb.gif?v=1579249585", price: "Rp 485.000" },{ label: "spirit of eminance jabodetabek", category: "Produk", url: "/products/spirit-of-eminance-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTCON1026_Spirit-of-Eminance-Jabodetabek-newest-WM_thumb.jpg?v=1693297526", price: "Rp 485.000" },{ label: "white elysian bloom box", category: "Produk", url: "/products/white-elysian-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1704_White-Elysian-Bloom-Box_thumb.jpg?v=1757328247", price: "Rp 685.000" },{ label: "charming forevermore jabodetabek", category: "Produk", url: "/products/charming-forevermore-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTWED1036_Charming-Forevermore-Jabodetabek-WM_thumb.jpg?v=1703239534", price: "Rp 485.000" },{ label: "moment of glory jabodetabek", category: "Produk", url: "/products/moment-of-glory-jabodetabek", images: "//outerbloom.com/cdn/shop/products/JKTCON1051_Moment-of-Glory-Jabodetabek_2_thumb.jpg?v=1596614663", price: "Rp 385.000" },{ label: "sweet romance jabodetabek", category: "Produk", url: "/products/sweet-romance", images: "//outerbloom.com/cdn/shop/products/JKTWED1005_Sweet-Romance-Jabodetabek_thumb.gif?v=1677134791", price: "Rp 635.000" },{ label: "with love bouquet", category: "Produk", url: "/products/with-love-bouquet", images: "//outerbloom.com/cdn/shop/products/c5d6fed6-8ada-4c38-ae0f-36d395aacb19_613f78f0-d52c-443b-9e13-63a151cd8ec5_thumb.jpg?v=1590748429", price: "Rp 535.000" },{ label: "sunflower yellow and with white daisies in vase", category: "Produk", url: "/products/sunflower-yellow-roses-with-white-and-yellow-daisies-in-a-glass-vase", images: "//outerbloom.com/cdn/shop/files/OBVBUN1132_Sunflower-Yellow-And-With-White-Daisies-in-Vase_thumb.jpg?v=1757930628", price: "Rp 435.000" },{ label: "everlasting peace jabodetabek", category: "Produk", url: "/products/everlasting-peace-jabodetabek", images: "//outerbloom.com/cdn/shop/products/JKTDUK1034_Everlasting-Peace-Jabodetabek_2_thumb.jpg?v=1596614613", price: "Rp 385.000" },{ label: "astoria passionate red", category: "Produk", url: "/products/astoria-passionate-red", images: "//outerbloom.com/cdn/shop/products/Astoria-passionate-red_b59b26f6-c39d-46d3-adcb-262c675bb16f_thumb.jpg?v=1633502742", price: "Rp 685.000" },{ label: "classic purple orchid majesty in vase", category: "Produk", url: "/products/classic-purple-orchid-majesty-in-vase", images: "//outerbloom.com/cdn/shop/products/Classic-Purple-Orchid-Majesty-in-Vase---White---4-Tangkai_40a5e337-283f-40f5-911c-5df9b506b9da_thumb.jpg?v=1639981404", price: "Rp 435.000" },{ label: "passion rouge bloom box", category: "Produk", url: "/products/passion-rouge-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1725_Passion-Rouge-Bloom-Box_thumb.jpg?v=1756972410", price: "Rp 385.000" },{ label: "classic white orchid majesty in vase", category: "Produk", url: "/products/classic-white-orchid-majesty-in-vase", images: "//outerbloom.com/cdn/shop/products/Classic-white-Orchid-Majesty-in-Vase---white---4-Tangkai_thumb.jpg?v=1644205542", price: "Rp 435.000" }
7731,{ label: "majestic blue romance bouquet", category: "Produk", url: "/products/majestic-blue-romance-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1357_Majestic-Blue-Romance-Bouquet_99b8ba96-0e67-4eef-a00e-b2daedcddb6a_thumb.jpg?v=1757390540", price: "Rp 435.000" },{ label: "sincerely", category: "Produk", url: "/products/sincerely", images: "//outerbloom.com/cdn/shop/files/Sincerely-WM_thumb.jpg?v=1688354677", price: "Rp 585.000" },{ label: "happy days jabodetabek", category: "Produk", url: "/products/happy-days-jabodetabek", images: "//outerbloom.com/cdn/shop/files/Happy-Days-Jabodetabek_WM_thumb.jpg?v=1759224026", price: "Rp 485.000" },{ label: "solemn comfort jabodetabek", category: "Produk", url: "/products/solemn-comfort-jabodetabek", images: "//outerbloom.com/cdn/shop/products/7fe123d8-6bb2-4c0d-bd4c-f8c3032823f2_6b9c33b6-4a23-41cb-8709-fc9223fe096a_thumb.png?v=1590662086", price: "Rp 635.000" },{ label: "big dreams jabodetabek", category: "Produk", url: "/products/big-dreams", images: "//outerbloom.com/cdn/shop/files/JKTCON1002_Big-Dreams-Jabodetabek_thumb.gif?v=1717494603", price: "Rp 485.000" },{ label: "signature ramadan deluxe hampers", category: "Produk", url: "/products/outerbloom-signature-ramadhan-deluxe-hampers", images: "//outerbloom.com/cdn/shop/files/Signature-Deluxe-Hampers_thumb.jpg?v=1739242254", price: "Rp 985.000" },{ label: "amorous amos jabodetabek", category: "Produk", url: "/products/amorous-amos-jabodetabek", images: "//outerbloom.com/cdn/shop/files/Amorous-Amos-Jabodetabek-WM_thumb.jpg?v=1759224071", price: "Rp 485.000" },{ label: "pink darling bouquet", category: "Produk", url: "/products/pink-darling-bouquet", images: "//outerbloom.com/cdn/shop/products/Pink-Darling-Bouquet_thumb.jpg?v=1669969725", price: "Rp 485.000" },{ label: "black pink bouquet", category: "Produk", url: "/products/black-pink-bouquet", images: "//outerbloom.com/cdn/shop/files/Black-Pink-Bouquet_thumb.jpg?v=1756434063", price: "Rp 485.000" },{ label: "profound happiness jabodetabek", category: "Produk", url: "/products/profound-happiness-jabodetabek", images: "//outerbloom.com/cdn/shop/files/profound-happiness_thumb.gif?v=1689940309", price: "Rp 635.000" },{ label: "healing trove", category: "Produk", url: "/products/healing-trove", images: "//outerbloom.com/cdn/shop/products/2ef5379f-27a6-41ba-85c7-c65cf3ec3f08_thumb.jpg?v=1571471845", price: "Rp 485.000" },{ label: "sincerity solace", category: "Produk", url: "/products/sincerity-solace", images: "//outerbloom.com/cdn/shop/products/OUTSTF1038_sincerity-solace-WM_thumb.jpg?v=1612352477", price: "Rp 485.000" },{ label: "bellarosa bloom box", category: "Produk", url: "/products/bellarosa-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1783_Bellarosa-Bloom-Box_c0000424-411c-48ed-abf4-0de7d925ea53_thumb.jpg?v=1757316757", price: "Rp 785.000" }
7732   ];
7733 
7734              
7735         $( ".header-input-search" ).catcomplete({
7736          appendTo: ".searchResult",source: function(request, response) {
7737             var results = $.ui.autocomplete.filter(data, request.term);
7738             var predicate = function () {
7739                 var counter = { Collection: 0, Produk: 0 };
7740             var fn = function(item) {counter[item.category] += 1;return (counter[item.category] <= 5);}
7741             return fn
7742             }();
7743             response(results.filter(predicate));
7744           },
7745           minLength:1,
7746            //results are clickable
7747           select: function( event, ui ) {window.location = ui.item.url;}
7748 });
7749 $( ".header-input-search2" ).catcomplete({
7750         appendTo: ".searchResult2",
7751                    source: function(request, response) {
7752                     var results = $.ui.autocomplete.filter(data, request.term);
7753                     var predicate = function () {
7754                         var counter = { Collection: 0, Produk: 0 };
7755               var fn = function(item) {
7756               counter[item.category] += 1;
7757   return (counter[item.category] <= 5);
7758 }
7759                return fn
7760                }();
7761 response(results.filter(predicate));
7762 },
7763   minLength:1,
7764         //results are clickable
7765         select: function( event, ui ) {
7766           window.location = ui.item.url;
7767         }
7768 });
7769 });
7770 </script>
7770
7771 
7772     
7772<script src="//outerbloom.com/cdn/shop/t/138/assets/vendors.js?v=6349622868601634021752652419" defer></script>
7772
7773 
7773<script src="//outerbloom.com/cdn/shop/t/138/assets/app.js?v=136050180318808583701752652452" defer></script>
7773
7774 
7775 
7775<script>
7776   ( function() {
7777     var youtube = document.querySelectorAll( ".youtube" );
7778     for (var i = 0; i < youtube.length; i++) {
7779       var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault_1x.jpg";
7780       var datasource = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg";
7781       var image = new Image();
7782       image.src = source;
7783       image.setAttribute("data-src", datasource);
7784       image.classList.add("swiper-lazy");
7785       image.addEventListener( "load", function() {
7786         youtube[ i ].appendChild( image );
7787       }( i ) );
7788       youtube[i].addEventListener( "click", function() {
7789         var iframe = document.createElement( "iframe" );
7790         iframe.setAttribute( "width", "480" );
7791         iframe.setAttribute( "height", "480" );
7792         iframe.setAttribute( "frameborder", "0" );
7793         iframe.setAttribute( "allowfullscreen", "" );
7794         iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" );
7795         this.innerHTML = "";
7796         this.appendChild( iframe );
7797       } );
7798     };
7799 
7800   } )();
7801 
7802   /* Lazy Load */
7803   const mainLazyLoad = new LazyLoad({threshold:400});
7804   $(document).ready(function(){
7805 
7806     $("selectxxx").addClass("needsclick");
7807     FastClick.attach(document.body);
7808     
7809     var $customSelects = $('.select-search');
7810     $customSelects.select2({
7811       templateResult: function(result, container) {
7812         if (!result.id) {
7813           return result.text;
7814         }
7815         container.className += ' needsclick';
7816         return result.text;
7817       }
7818     });
7819     $customSelects.each(function(index, el){$(el).data('select2').$container.find('*').addClass('needsclick');});
7820     $(document).on('select2:open', () => {
7821       document.querySelector('.select2-search__field').focus();
7822     });
7823     
7824 
7825     $(".overlay").click(function(){
7826       $(".js-drawer-close").click();
7827     });
7828     $(".site-nav--mobile .js-drawer-open-left, #NavDrawer .icon-close, .overlay-nav").click(function(){
7829       $("html").toggleClass("nav_open");
7830     });
7831     
7832     $('.swatch-element label').on('click', function(){
7833       var srcImg = $(this).data('src');
7834       $('#thumb-image-product .product-single__thumbnail').each(function(){
7835         if ($(this).attr("href") == srcImg) {
7836           $(this).trigger('click');
7837         }
7838       });
7839     });
7840     var defaultValue = $(".swatch input:checked").val()
7841     
7842     $('#purchaseProduct .swatch [type=radio]').change(function() {
7843       var optionIndex = $(this).closest('.swatch').attr('data-option-index');
7844       var optionValue = $(this).val();
7845       console.log(optionIndex, optionValue)
7846       var value = parseInt(optionValue.split(' ')[0])
7847       $(this)
7848       .closest('#purchaseProduct')
7849       .find('.single-option-selector')
7850       .eq(optionIndex)
7851       .val(optionValue)
7852       .trigger('change');
7853       
7854     });
7855     
7856   });
7857   $(document).ready(function(){
7858     $(".nav-search a").click(function(e){
7859       e.preventDefault();
7860       $(".icon-navsearch").toggle();
7861       $(".icon-navclose").toggle();
7862       $(".site-nav__item > .site-nav__link").toggle();
7863       $(".open-search").toggle();
7864       $(".open-search input").focus();
7865     });
7866     $(".best-price-guarantee").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/logo-best-price-guarantee-grid_75x.png?v=72489032173169839651752652420' alt='Logo Best Price Guarantee'>");
7867     if ($(window).width() < 768) {
7868       $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_75x.png?v=82732945490105366961752652419' alt='Icon Valentine'>");
7869       $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_45x.png?v=101884295148001743851752652418' alt='Icon CNY'>");
7870       $(".bg-products .label-tag.free-valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-valentine_150x.png?v=171641187769238175351752652421' alt='Icon Free Valentine'>");
7871     } else {
7872       $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_60x.png?v=82732945490105366961752652419' alt='Icon Valentine'>");
7873       $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_60x.png?v=101884295148001743851752652418' alt='Icon CNY'>");
7874       $(".bg-products .label-tag.free-valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-valentine_200x.png?v=171641187769238175351752652421' alt='Icon Free Valentine'>");
7875     }
7876     $(".bg-products .label-tag.free-cookies").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-cookies_80x.png?51468' alt='Icon Free Cookies'>");
7877     $(".bg-products .label-tag.mothersday").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/mothers-day_70x.png?v=171373711354766377891752652419' alt='Icon Mothers day'>");
7878   });
7879 </script>
7879
7880 
7881 
7882     
7883 
7884     
7884<script type="text/javascript">
7885       var wishlistpage = 0;
7886        
7887        var quickShop_money_format="<span class='money'>"+"Rp {{amount_no_decimals}}"+"</span>";
7888     </script>
7888
7889     
7890       <!-- Remove duplicate wishlist.js reference -->
7891       <style>
7892   .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999999;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.fade.in{opacity:1}.modal-open .modal{overflow-x:hidden;overflow-y:auto;z-index:999999;background-color:rgba(0,0,0,.3)}.modal-dialog{position:relative;width:auto;margin:10px}.wishlist-model .modal-dialog{width:700px}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.wishlist-model .modal-content{}.wishlist-model .modal-header{min-height:0;padding:0;border-bottom:0}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #121212;filter:alpha(opacity=20);opacity:.2}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-header .close{margin-top:-2px}.wishlist-model .close{position:absolute;top:-10px;right:-10px;background:#fff;opacity:1;width:30px;height:30px;font-size:15px;border-radius:50%;z-index:10;box-shadow:0 1px 4px 0 #121212}.wishlist-model .close .icon-close{width:25px;height:25px}.modal-body{position:relative;padding:15px}.wishlist-model .modal-body{padding:0 30px;display:flex}.wishlist-model .wishlist-left{width:66.67%;border-right:1px solid #ccc;padding:30px 0}.wishlist-model .wishlist-note{position:relative;display:inline-block;margin-bottom:20px;margin-left:35px;border-bottom:1px solid #121212;color:#121212}.wishlist-model .wishlist-note a{color: #ffffff;}.wishlist-model .wishlist-note .cirle{position:absolute;top:-4px;left:-35px;width:25px;height:25px;color:#fff;background:#121212;line-height:25px;border-radius:50%;text-align:center}.wishlist-model .wishlist-note svg{fill:#fff}.wishlist-model .wishlist-note .cirle .icon-check{vertical-align:middle}.wishlist-model .product-left{width:33.33%;float:left;margin-right:30px}.wishlist-model .wishlist-image{overflow:hidden}.wishlist-model .wishlist-image img{transition:all .3s linear}.wishlist-model .wishlist-name{padding:0;margin-bottom:10px}.wishlist-model .wishlist-name a{color: #ffffff;}.wishlist-model .wishlist-price{margin-bottom:10px}.wishlist-model .wishlist-price .price{font-weight:700;margin-right:10px;font-size:15px}.wishlist-model .wishlist-price .price_compare{color:#ccc}.wishlist-model .wishlist-right{width:33.33%;padding:30px 0;padding-left:30px}.wishlist-model .btn-quick-shop{width:100%;border-color:#121212;background:#fff;color:#121212;padding:0 30px;transition:all .2s linear;height:36px;margin-bottom:10px;text-transform:uppercase}.wishlist-model .btn-cta{width:100%;font-size:1em;border-color:#ffffff;background:#ffffff;color:#fff;padding:0;transition:all .2s linear;height:36px;line-height:36px;margin-bottom:10px}.wishlist-model .quantity-content{text-align:center}.wishlist-model .quantity-content input{outline:none;text-align:center;font-weight:600;border:1px solid #121212}.wishlist-model .quantity-content button{border-color:#121212}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}
7893 </style>
7894 
7895 <div class="modal fade" id="modalwishlist0" tabindex="-1" role="dialog">
7896   <div class="modal-dialog" role="document">
7897     <div class="modal-content">        
7898       <div class="modal-body">Your Wishlist is empty!</div>
7899       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>          
7900     </div>
7901   </div>
7902 </div> 
7903 
7904 <div class="wishlist-model">
7905   <div class="modal fade" id="modalwishlist1" tabindex="-1" role="dialog" aria-hidden="true">
7906     <div class="modal-dialog white-modal">
7907       <div class="modal-content">
7908         <div class="modal-header">
7909           <button type="button" class="close" data-dismiss="modal" aria-label="Close">
7910             <svg class="icon icon-close" version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32">
7911 <title>icon-close</title>
7912 <path d="M16.943 16l8.862 8.862c0.26 0.26 0.26 0.682 0 0.943s-0.682 0.26-0.943 0l-8.862-8.862-8.862 8.862c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l8.862-8.862-8.862-8.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8.862 8.862 8.862-8.862c0.26-0.26 0.682-0.26 0.943 0s0.26 0.682 0 0.943l-8.862 8.862z"></path>
7913 </svg>
7914           </button>
7915         </div>
7916         <div class="modal-body">
7917           <div class="wishlist-left">
7918             <div class="wishlist-note">
7919               <span class="cirle"><svg version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32">
7920 <title>icon-check</title>
7921 <path d="M12 21.766l14.218-12.926c0.272-0.248 0.694-0.228 0.942 0.045s0.228 0.694-0.045 0.942l-14.667 13.333c-0.254 0.231-0.643 0.231-0.897 0l-6.667-6.061c-0.272-0.248-0.293-0.669-0.045-0.942s0.669-0.293 0.942-0.045l6.218 5.653z"></path>
7922 </svg></span>
7923               Product added to <a href="/pages/wish-list">Wishlist</a>
7924             </div>
7925             <div class="wishlist-product">
7926               <div class="product-left">
7927                 <div class="wishlist-image"></div>
7928               </div>
7929               <div class="product-right">
7930                 <div class="wishlist-name"></div>
7931                 <div class="wishlist-price"></div>
7932               </div>
7933             </div>
7934           </div>
7935           <div class="wishlist-right">
7936             <div class="wishlist-cart">
7937               <form action="/cart/add" method="post" class="variants-form variants" id="AddToCartForm" enctype="multipart/form-data">                  
7938                 <div class="others-bottom">
7939                   <a class="btn btn-quick-shop" href="/pages/wish-list">View Wishlist</a>
7940                   <button type="submit" name="add" id="AddToCart" class="btn btn-cta">
7941                     <span id="AddToCartText" class="">Beli Sekarang</span>
7942                   </button>
7943                 </div>
7944                 <div id="wishlist-variants-container" class="variants-wrapper"></div> 
7945                 <div class="quantity-content">
7946                   <label>QTY</label>
7947                   <input type="number" size="5" class="" name="quantity" value="1" />
7948                 </div>
7949               </form> 
7950             </div>
7951           </div>
7952         </div>
7953       </div>
7954     </div>
7955   </div>
7956 </div>
7957 
7958     
7959     <style>
7960        .stamped-badge[data-rating="0.0"]{display: none !Important;}
7961        
7962         div[data-load-type="continue"] ul.stamped-pagination li.next a, div[data-widget-load-type="continue"] ul.stamped-pagination li.next a {
7963           border-radius: 0px;
7964       }
7965           .stamped-review-body {
7966           padding-left: 0px !important;
7967       }
7968           #product-reviews .stamped-header:after {
7969             display:none !Important;
7970           }
7971       #stamped-main-widget .stamped-container, .stamped-badge-caption,#stamped-reviews-widget {
7972           font-family:inherit !important;
7973       }
7974     </style>
7975 
7976     
7977 
7978 <div id='stamped-rewards-init' class='stamped-rewards-init'
7979   data-key-public=''
7980 
7981 ></div>
7982 
7983     
7983<script src="//outerbloom.com/cdn/shop/t/138/assets/variant-sku-handler.js?v=91239063692820757781752652418" defer></script>
7983
7984     <!-- Remove duplicate jQuery reference and load wishlist script properly -->
7985     
7985<script src="//outerbloom.com/cdn/shop/t/138/assets/wishlist-fixed.js?v=35991423018869066281754360012" defer></script>
7985
7986 
7987     
7987<script>
7988       function myInit(){ StampedFn.init({ apiKey: 'pubkey-hCS8DHE9QbBHhHN89WXFkuJ0Y3422D', sId: '23462' }); }
7989     </script>
7989
7990     
7990<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
7990<style>
7991   .jss59 {
7992     background-color: rgba(0, 0, 0, 0.6);
7993   }
7994   .MuiBackdrop-root {
7995     top: 0;
7996     left: 0;
7997     right: 0;
7998     bottom: 0;
7999     display: flex;
8000     z-index: -1;
8001     position: fixed;
8002     align-items: center;
8003     justify-content: center;
8004     background-color: rgba(0, 0, 0, 0.5);
8005     -webkit-tap-highlight-color: transparent;
8006   }
8007   .MuiDialog-scrollPaper {
8008     display: flex;
8009     align-items: center;
8010     justify-content: center;
8011   }
8012   .MuiDialog-container {
8013     height: 100%;
8014     outline: 0;
8015   }
8016   .MuiPaper-elevation24 {
8017     box-shadow: 0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12);
8018   }
8019   .MuiDialog-paper {
8020     margin: 32px;
8021     position: relative;
8022     overflow-y: auto;
8023   }
8024   .MuiDialog-paperScrollPaper {
8025     display: flex;
8026     max-height: calc(100% - 64px);
8027     flex-direction: column;
8028   }
8029   .MuiDialog-paperWidthSm {
8030     max-width: 600px;
8031   }
8032   #location-lock-dialog {
8033     top: 20%;
8034     left: 0;
8035     right: 0;
8036     width: 30%;
8037     margin: 0px auto;
8038     display: block;
8039     padding: 30px;
8040     z-index: 99999;
8041     position: fixed;
8042     font-size: 14px;
8043     background: rgb(0, 0, 0);
8044     box-shadow: rgba(11, 11, 12, 0.2) 2px 4px 5px 0px;
8045     text-align: center;
8046     font-family: Roboto, Arial, sans-serif;
8047     line-height: 1;
8048     border-radius: 8px;
8049     -webkit-font-smoothing: subpixel-antialiased;
8050   }
8051   .MuiButtonBase-root {
8052     color: inherit;
8053     border: 0;
8054     cursor: pointer;
8055     margin: 0;
8056     display: inline-flex;
8057     outline: 0;
8058     padding: 0;
8059     position: relative;
8060     align-items: center;
8061     user-select: none;
8062     border-radius: 0;
8063     vertical-align: middle;
8064     -moz-appearance: none;
8065     justify-content: center;
8066     text-decoration: none;
8067     background-color: transparent;
8068     -webkit-appearance: none;
8069     -webkit-tap-highlight-color: transparent;
8070   }
8071   .MuiIconButton-root {
8072     flex: 0 0 auto;
8073     color: rgba(0, 0, 0, 0.54);
8074     padding: 12px;
8075     overflow: visible;
8076     font-size: 1.5rem;
8077     text-align: center;
8078     transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
8079     border-radius: 50%;
8080   }
8081   .MuiIconButton-label {
8082     width: 100%;
8083     display: flex;
8084     align-items: inherit;
8085     justify-content: inherit;
8086   }
8087   .MuiSvgIcon-root {
8088     fill: currentColor;
8089     width: 1em;
8090     height: 1em;
8091     display: inline-block;
8092     font-size: 1.5rem;
8093     transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
8094     flex-shrink: 0;
8095     user-select: none;
8096   }
8097   .MuiTouchRipple-root {
8098     top: 0;
8099     left: 0;
8100     right: 0;
8101     bottom: 0;
8102     z-index: 0;
8103     overflow: hidden;
8104     position: absolute;
8105     border-radius: inherit;
8106     pointer-events: none;
8107   }
8108   .jss36 {
8109     color: #222222;
8110     font-size: 24px;
8111     font-family: Roboto, Arial, sans-serif;
8112     font-weight: 500;
8113   }
8114   .jss37 {
8115     color: #555555;
8116     padding: 10px 0px 0px;
8117     font-size: 14px;
8118   }
8119   .MuiFormGroup-root {
8120     display: flex;
8121     flex-wrap: wrap;
8122     flex-direction: column;
8123   }
8124   .MuiFormGroup-row {
8125     flex-direction: row;
8126   }
8127   .jss63 {
8128     width: 85%;
8129     margin: 15px auto;
8130     display: flex;
8131     padding: 11px 0px 0px;
8132     justify-content: space-evenly;
8133   }
8134   .MuiFormControlLabel-root {
8135     cursor: pointer;
8136     display: inline-flex;
8137     align-items: center;
8138     margin-left: -11px;
8139     margin-right: 16px;
8140     vertical-align: middle;
8141     -webkit-tap-highlight-color: transparent;
8142   }
8143   .jss70 {
8144     margin: 0;
8145   }
8146   .MuiButtonBase-root {
8147     color: inherit;
8148     border: 0;
8149     cursor: pointer;
8150     margin: 0;
8151     display: inline-flex;
8152     outline: 0;
8153     padding: 0;
8154     position: relative;
8155     align-items: center;
8156     user-select: none;
8157     border-radius: 0;
8158     vertical-align: middle;
8159     -moz-appearance: none;
8160     justify-content: center;
8161     text-decoration: none;
8162     background-color: transparent;
8163     -webkit-appearance: none;
8164     -webkit-tap-highlight-color: transparent;
8165   }
8166   .MuiIconButton-root {
8167     flex: 0 0 auto;
8168     color: rgba(0, 0, 0, 0.54);
8169     padding: 12px;
8170     overflow: visible;
8171     font-size: 1.5rem;
8172     text-align: center;
8173     transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
8174     border-radius: 50%;
8175   }
8176   .MuiIconButton-colorSecondary {
8177     color: #f50057;
8178   }
8179   .jss71 {
8180     padding: 9px;
8181   }
8182   .MuiRadio-root {
8183     color: rgba(0, 0, 0, 0.54);
8184   }
8185   .jss64 {
8186     padding: 2px;
8187   }
8188   .MuiRadio-colorSecondary.Mui-checked {
8189     color: #f50057;
8190   }
8191   .MuiIconButton-label {
8192     width: 100%;
8193     display: flex;
8194     align-items: inherit;
8195     justify-content: inherit;
8196   }
8197   .MuiTypography-root {
8198     margin: 0;
8199   }
8200   .MuiTypography-body1 {
8201     font-size: 18px;
8202     font-family: Roboto,sans-serif;
8203     font-weight: 400;
8204     line-height: 1.5;
8205   }
8206   .location-popup_area-block__sp9Ws {
8207     display: -moz-box;
8208     display: flex;
8209     -moz-box-orient: vertical;
8210     -moz-box-direction: normal;
8211     flex-direction: column;
8212     -moz-box-pack: center;
8213     justify-content: center;
8214     position: relative;
8215     margin: 10px 10% 0;
8216   }
8217   .location-popup_pin-search-box__3l5mJ {
8218     width: 100%;
8219     display: -moz-box;
8220     display: flex;
8221     -moz-box-align: center;
8222     align-items: center;
8223   }
8224   .location-popup_place-icon-city__1XAX5, .location-popup_place-icon__jSG0Q {
8225     position: absolute;
8226     z-index: 999;
8227   }
8228   .location-popup_place-icon__jSG0Q {
8229     color: #ffffff;
8230     padding-left: 8px;
8231   }
8232   .location-popup_place-icon__jSG0Q svg {
8233     width: 18px;
8234     height: 18px;
8235   }
8236   .location-popup_cancel-icon__FHujU {
8237     color: #fff;
8238     right: 10px;
8239     width: 16px;
8240     cursor: pointer;
8241     height: 16px;
8242     display: none;
8243     padding: 5px;
8244     position: absolute;
8245     background: #999;
8246     text-align: center;
8247     border-radius: 50%;
8248   }
8249   .location-popup_pin-search-box__3l5mJ>div>select {
8250 /*     -webkit-box-shadow: 0 0 10px #ffffff;
8251     box-shadow: 0 0 10px #ffffff; */
8252     text-transform: capitalize;
8253     border: 1px solid #ffffff;
8254     color: #ffffff;
8255     width: 100%;
8256     margin: 0;
8257     display: -moz-box;
8258     display: flex;
8259     padding: 0 30px;
8260     -webkit-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite;
8261     -moz-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite;
8262     animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite;
8263     font-size: 16px;
8264     border-radius: 4px;
8265     height: 44px;
8266     moz-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite;
8267     webkit-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite;
8268   }
8269   .MuiButtonBase-root {
8270     color: inherit;
8271     border: 0;
8272     cursor: pointer;
8273     margin: 0;
8274     display: inline-flex;
8275     outline: 0;
8276     padding: 0;
8277     position: relative;
8278     align-items: center;
8279     user-select: none;
8280     border-radius: 0;
8281     vertical-align: middle;
8282     -moz-appearance: none;
8283     justify-content: center;
8284     text-decoration: none;
8285     background-color: transparent;
8286     -webkit-appearance: none;
8287     -webkit-tap-highlight-color: transparent;
8288   }
8289   .MuiButton-root {
8290     color: rgba(0, 0, 0, 0.87);
8291     padding: 6px 16px;
8292     font-size: 0.875rem;
8293     min-width: 64px;
8294     box-sizing: border-box;
8295     transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
8296     font-family: Roboto,sans-serif;
8297     font-weight: 500;
8298     line-height: 1.75;
8299     border-radius: 4px;
8300     text-transform: uppercase;
8301   }
8302   .MuiButton-contained {
8303     color: rgba(0, 0, 0, 0.87);
8304     box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12);
8305     background-color: #e0e0e0;
8306   }
8307   .MuiButtonBase-root.Mui-disabled {
8308     cursor: default;
8309     pointer-events: none;
8310   }
8311   .MuiButton-label {
8312     width: 100%;
8313     display: inherit;
8314     align-items: inherit;
8315     justify-content: inherit;
8316   }
8317   .cartButton_login_content__2j1f7 {
8318     display: -moz-box;
8319     display: flex;
8320     text-align: center;
8321     z-index: 9;
8322     font-size: 18px;
8323     font-weight: 500;
8324     color: #fff;
8325   }
8326   
8327   .jss35 {
8328     top: 5px;
8329     right: 5px;
8330     padding: 4px;
8331     position: absolute;
8332     border-radius: 50%;
8333   }
8334   .jss67 {
8335     cursor: pointer;
8336     font-size: 15px;
8337     line-height: 1.3;
8338     padding-left: 5px;
8339   }
8340   .jss69 {
8341     color: #222222;
8342   }
8343   .jss80 {
8344     color: #fff;
8345     width: 100%;
8346     height: 52px;
8347     padding: 11px 16px;
8348     font-size: 18px;
8349     min-width: 88px;
8350     min-height: 36px;
8351     transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
8352     font-weight: 500;
8353     line-weight: 1em;
8354     border-radius: 4px;
8355     text-transform: uppercase;
8356     background-color: #ff6600;
8357   }
8358   @media (min-width: 991px){
8359     .cartButton_login_content__2j1f7 {
8360         font-weight: 500;
8361     }
8362   }
8363 
8364   @media (max-width: 992px) {
8365     #location-lock-dialog {
8366       width: 100%;
8367       top: auto;
8368       bottom: 0;
8369       padding-left: 0;
8370       padding-right: 0;
8371     }
8372     .MuiFormGroup-row {
8373       display: block
8374     }
8375     .MuiIconButton-label input {
8376       margin: 0;
8377     }
8378   }
8379 </style>
8380 <div role="presentation" class="MuiDialog-root jss34" style="display: none;position: fixed; z-index: 9999; inset: 0px;">
8381   <div class="MuiBackdrop-root" aria-hidden="true" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div>
8382   <div tabindex="0" data-test="sentinelStart"></div>
8383   <div class="MuiDialog-container MuiDialog-scrollPaper" role="none presentation" tabindex="-1" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;">
8384     <div class="MuiPaper-root MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" role="dialog">
8385       <div class="jss31 undefined" id="location-lock-dialog">
8386         <button id="close-popup-delivery" class="MuiButtonBase-root MuiIconButton-root jss35" tabindex="0" type="button" aria-label="close">
8387           <span class="MuiIconButton-label">
8388             <svg class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true">
8389               <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
8390             </svg>
8391           </span>
8392           <span class="MuiTouchRipple-root"></span>
8393         </button>
8394         <div>
8395           <div class="jss36">Select Delivery Location</div>
8396           <div class="jss37">Select a delivery location to see product availability</div>
8397         </div>
8398         <div class="MuiFormGroup-root jss63 MuiFormGroup-row" role="radiogroup">
8399           <label for="jabodetabek" class="MuiFormControlLabel-root jss45">
8400             <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 jss47 Mui-checked MuiIconButton-colorSecondary" aria-disabled="false">
8401               <span class="MuiIconButton-label">
8402                 <input id="jabodetabek" class="jss49" type="radio" value="Jabodetabek" checked="" name="location">
8403                 <span class="jss41"></span>
8404               </span>
8405               <span class="MuiTouchRipple-root"></span>
8406             </span>
8407             <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1">
8408               <span class="jss67 jss69">Jabodetabek</span>
8409             </span>
8410           </label>
8411           <label for="non-jabodetabek" class="MuiFormControlLabel-root jss45">
8412             <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 MuiIconButton-colorSecondary" aria-disabled="false">
8413               <span class="MuiIconButton-label">
8414                 <input id="non-jabodetabek" class="jss49" type="radio" value="Outside Jabodetabek" name="location">
8415                 <span class="jss40"></span>
8416               </span>
8417               <span class="MuiTouchRipple-root"></span>
8418             </span>
8419             <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1">
8420               <span class="jss67 jss68">Outside Jabodetabek</span>
8421             </span>
8422           </label>
8423         </div>
8424         <div>
8425           <div class="MuiGrid-root location-popup_area-block__sp9Ws">
8426             <div class="MuiGrid-root location-popup_pin-search-box__3l5mJ false">
8427               <div class="MuiGrid-root location-popup_place-icon__jSG0Q">
8428                 <svg class="MuiSvgIcon-root jss6" focusable="false" viewBox="0 0 24 24" aria-hidden="true" style="font-size:16px"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"></path></svg>
8429               </div>
8430               <div class="MuiGrid-root location-popup_cancel-icon__FHujU false">
8431                 <i class="material-icons location-popup_clear-pin__s1dRc">close</i>
8432               </div>
8433               <div style="width: 100%;">
8434                 <select id="choose-location" class="form-control">
8435                   <option value="">Choose Location</option>
8436                   <option value="jakarta">Jakarta</option>
8437                   <option value="bogor">Bogor</option>
8438                   <option value="depok">Depok</option>
8439                   <option value="tangerang">Tangerang</option>
8440                   <option value="bekasi">Bekasi</option>
8441                 </select>
8442               </div>
8443             </div>
8444           </div>
8445         </div>
8446         <button class="MuiButtonBase-root MuiButton-root MuiButton-contained jss55" tabindex="-1" type="button" title="" id="location-lock-submit" data-idforcdp="actionBtn-cdp" data-testid="location-lock-submit" style="background-color: #ffffff; width: 80%; padding: 14px 0px 12px; margin: 20px 0px; font-size: 18px; font-weight: 500; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px 0px; border-radius: 4px; color: rgb(0, 0, 0); height: 44px;" data-content="">
8447           <span class="MuiButton-label">
8448             <span class=""></span>
8449             <span id="location-lock-continue-btn" class="cartButton_login_content__2j1f7" style="font-weight: 500;" data-content="">Continue Shopping</span>
8450           </span>
8451         </button>
8452       </div>
8453     </div>
8454   </div>
8455   <div tabindex="0" data-test="sentinelEnd"></div>
8456 </div>
8457 
8458 
8458<script>
8459   const jabodetabek = [
8460     {
8461       "code": "jakarta",
8462       "city": "jakarta",
8463       "zip": []
8464     },
8465     {
8466       "code": "bogor",
8467       "city": "bogor",
8468       "zip": []
8469     },
8470     {
8471       "code": "depok",
8472       "city": "depok",
8473       "zip": []
8474     },
8475     {
8476       "code": "tangerang",
8477       "city": "tangerang",
8478       "zip": []
8479     },
8480     {
8481       "code": "bekasi",
8482       "city": "bekasi",
8483       "zip": []
8484     }
8485   ]
8486   let cityNonJabodetabek = [
8487     
8488
8489     
8490     
8491     "pengiriman_aceh",
8492     
8493     
8494     
8495     
8496     
8497     "pengiriman_ambon",
8498     
8499     
8500     
8501     
8502     
8503     "pengiriman_atambua",
8504     
8505     
8506     
8507     
8508     
8509     "pengiriman_badung",
8510     
8511     
8512     
8513     
8514     
8515     "pengiriman_bali",
8516     
8517     
8518     
8519     
8520     
8521     "pengiriman_balikpapan",
8522     
8523     
8524     
8525     
8526     
8527     "pengiriman_bandar lampung",
8528     
8529     
8530     
8531     
8532     
8533     "pengiriman_bandung",
8534     
8535     
8536     
8537     
8538     
8539     "pengiriman_bandung barat",
8540     
8541     
8542     
8543     
8544     
8545     "pengiriman_banjarmasin",
8546     
8547     
8548     
8549     
8550     
8551     "pengiriman_banyumas",
8552     
8553     
8554     
8555     
8556     
8557     "pengiriman_banyuwangi",
8558     
8559     
8560     
8561     
8562     
8563     "pengiriman_batam",
8564     
8565     
8566     
8567     
8568     
8569     
8570     
8571     
8572     
8573     "pengiriman_biak",
8574     
8575     
8576     
8577     
8578     
8579     "pengiriman_binjai",
8580     
8581     
8582     
8583     
8584     
8585     "pengiriman_blitar",
8586     
8587     
8588     
8589     
8590     
8591     "pengiriman_blora",
8592     
8593     
8594     
8595     
8596     
8597     
8598     
8599     
8600     
8601     "pengiriman_bojonegoro",
8602     
8603     
8604     
8605     
8606     
8607     "pengiriman_boyolali",
8608     
8609     
8610     
8611     
8612     
8613     "pengiriman_bukittinggi",
8614     
8615     
8616     
8617     
8618     
8619     "pengiriman_buleleng",
8620     
8621     
8622     
8623     
8624     
8625     "pengiriman_ciamis",
8626     
8627     
8628     
8629     
8630     
8631     "pengiriman_cianjur",
8632     
8633     
8634     
8635     
8636     
8637     "pengiriman_cibinong",
8638     
8639     
8640     
8641     
8642     
8643     "pengiriman_cikarang",
8644     
8645     
8646     
8647     
8648     
8649     "pengiriman_cikupa",
8650     
8651     
8652     
8653     
8654     
8655     "pengiriman_cilacap",
8656     
8657     
8658     
8659     
8660     
8661     "pengiriman_cileunyi",
8662     
8663     
8664     
8665     
8666     
8667     "pengiriman_cimahi",
8668     
8669     
8670     
8671     
8672     
8673     "pengiriman_cirebon",
8674     
8675     
8676     
8677     
8678     
8679     "pengiriman_ciwidey",
8680     
8681     
8682     
8683     
8684     
8685     "pengiriman_deli serdang",
8686     
8687     
8688     
8689     
8690     
8691     "pengiriman_demak",
8692     
8693     
8694     
8695     
8696     
8697     "pengiriman_denpasar",
8698     
8699     
8700     
8701
8702     
8703     
8704     "pengiriman_garut",
8705     
8706     
8707     
8708     
8709     
8710     "pengiriman_gianyar",
8711     
8712     
8713     
8714     
8715     
8716     "pengiriman_gresik",
8717     
8718     
8719     
8720     
8721     
8722     "pengiriman_gunung kidul",
8723     
8724     
8725     
8726
8727     
8728     
8729     "pengiriman_jambi",
8730     
8731     
8732     
8733     
8734     
8735     "pengiriman_jayapura",
8736     
8737     
8738     
8739     
8740     
8741     "pengiriman_jember",
8742     
8743     
8744     
8745     
8746     
8747     "pengiriman_jepara",
8748     
8749     
8750     
8751     
8752     
8753     "pengiriman_jombang",
8754     
8755     
8756     
8757     
8758     
8759     "pengiriman_karanganyar",
8760     
8761     
8762     
8763     
8764     
8765     "pengiriman_karawang",
8766     
8767     
8768     
8769     
8770     
8771     "pengiriman_karo",
8772     
8773     
8774     
8775     
8776     
8777     "pengiriman_kebumen",
8778     
8779     
8780     
8781     
8782     
8783     "pengiriman_kediri",
8784     
8785     
8786     
8787     
8788     
8789     "pengiriman_keerom",
8790     
8791     
8792     
8793     
8794     
8795     "pengiriman_kendal",
8796     
8797     
8798     
8799     
8800     
8801     "pengiriman_klaten",
8802     
8803     
8804     
8805     
8806     
8807     "pengiriman_kudus",
8808     
8809     
8810     
8811     
8812     
8813     "pengiriman_kupang",
8814     
8815     
8816     
8817     
8818     
8819     "pengiriman_lainnya",
8820     
8821     
8822     
8823     
8824     
8825     "pengiriman_lamongan",
8826     
8827     
8828     
8829     
8830     
8831     "pengiriman_lampung",
8832     
8833     
8834     
8835     
8836     
8837     "pengiriman_lampung barat",
8838     
8839     
8840     
8841     
8842     
8843     "pengiriman_lembang",
8844     
8845     
8846     
8847     
8848     
8849     "pengiriman_lombok",
8850     
8851     
8852     
8853     
8854     
8855     "pengiriman_lumajang",
8856     
8857     
8858     
8859     
8860     
8861     "pengiriman_madiun",
8862     
8863     
8864     
8865     
8866     
8867     "pengiriman_magelang",
8868     
8869     
8870     
8871     
8872     
8873     "pengiriman_majalengka",
8874     
8875     
8876     
8877     
8878     
8879     "pengiriman_makassar",
8880     
8881     
8882     
8883     
8884     
8885     "pengiriman_malang",
8886     
8887     
8888     
8889     
8890     
8891     "pengiriman_manado",
8892     
8893     
8894     
8895     
8896     
8897     "pengiriman_medan",
8898     
8899     
8900     
8901     
8902     
8903     "pengiriman_mengwi",
8904     
8905     
8906     
8907     
8908     
8909     "pengiriman_mojokerto",
8910     
8911     
8912     
8913     
8914     
8915     "pengiriman_nganjuk",
8916     
8917     
8918     
8919     
8920     
8921     "pengiriman_ngawi",
8922     
8923     
8924     
8925     
8926     
8927     "pengiriman_padang",
8928     
8929     
8930     
8931     
8932     
8933     "pengiriman_palembang",
8934     
8935     
8936     
8937     
8938     
8939     "pengiriman_pasuruan",
8940     
8941     
8942     
8943     
8944     
8945     "pengiriman_pati",
8946     
8947     
8948     
8949     
8950     
8951     "pengiriman_pekalongan",
8952     
8953     
8954     
8955     
8956     
8957     "pengiriman_pekanbaru",
8958     
8959     
8960     
8961     
8962     
8963     "pengiriman_pemalang",
8964     
8965     
8966     
8967     
8968     
8969     "pengiriman_ponorogo",
8970     
8971     
8972     
8973     
8974     
8975     "pengiriman_pontianak",
8976     
8977     
8978     
8979     
8980     
8981     "pengiriman_probolinggo",
8982     
8983     
8984     
8985     
8986     
8987     "pengiriman_purbalingga",
8988     
8989     
8990     
8991     
8992     
8993     "pengiriman_purwakarta",
8994     
8995     
8996     
8997     
8998     
8999     "pengiriman_purwokerto",
9000     
9001     
9002     
9003     
9004     
9005     "pengiriman_rembang",
9006     
9007     
9008     
9009     
9010     
9011     "pengiriman_riau",
9012     
9013     
9014     
9015     
9016     
9017     "pengiriman_salatiga",
9018     
9019     
9020     
9021     
9022     
9023     "pengiriman_samarinda",
9024     
9025     
9026     
9027     
9028     
9029     "pengiriman_semarang",
9030     
9031     
9032     
9033     
9034     
9035     "pengiriman_sentani",
9036     
9037     
9038     
9039     
9040     
9041     "pengiriman_serang",
9042     
9043     
9044     
9045     
9046     
9047     "pengiriman_sidoarjo",
9048     
9049     
9050     
9051     
9052     
9053     "pengiriman_singkawang",
9054     
9055     
9056     
9057     
9058     
9059     "pengiriman_sragen",
9060     
9061     
9062     
9063     
9064     
9065     "pengiriman_subang",
9066     
9067     
9068     
9069     
9070     
9071     "pengiriman_sukabumi",
9072     
9073     
9074     
9075     
9076     
9077     "pengiriman_sumbawa",
9078     
9079     
9080     
9081     
9082     
9083     "pengiriman_surabaya",
9084     
9085     
9086     
9087     
9088     
9089     "pengiriman_surakarta solo",
9090     
9091     
9092
9093     
9094     "pengiriman_tasikmalaya",
9095     
9096     
9097     
9098     
9099     
9100     "pengiriman_tegal",
9101     
9102     
9103     
9104     
9105     
9106     "pengiriman_timika",
9107     
9108     
9109     
9110     
9111     
9112     "pengiriman_wamena",
9113     
9114     
9115     
9116     
9117     
9118     "pengiriman_wiyung",
9119     
9120     
9121     
9122     
9123     
9124     "pengiriman_wonokromo",
9125     
9126     
9127     
9128     
9129     
9130     "pengiriman_yogyakarta",
9131 
9132   ]
9133   console.log(cityNonJabodetabek)
9134   let non_jabodetabek = []
9135   for(var i=0;i<cityNonJabodetabek.length;i++) {
9136     const obj = {
9137       "code": cityNonJabodetabek[i].toLowerCase().replace('pengiriman_', '').replace(' ','-'),
9138       "city": cityNonJabodetabek[i].replace('pengiriman_', '').replace(' ','-'),
9139       "zip": []
9140     }
9141     non_jabodetabek.push(obj)
9142   }
9143   let current_location = getCookie("location_delivery")
9144   $("[name=location]").change(function(){
9145     let v = $(this).val()
9146     let option = []
9147     if(v == 'Jabodetabek') {
9148       for(var i=0;i<jabodetabek.length;i++) {
9149         const jabodetabekHtml = `<option value=${jabodetabek[i].city}>${jabodetabek[i].city}</option>`
9150         option.push(jabodetabekHtml)
9151       }
9152       $("#choose-location").html(`<option value="">Choose Location</option>${option}`)
9153     } else {
9154       for(var i=0;i<non_jabodetabek.length;i++) {
9155         const nonjabodetabekHtml = `<option value=${non_jabodetabek[i].city}>${non_jabodetabek[i].city}</option>`
9156         option.push(nonjabodetabekHtml)
9157       }
9158       $("#choose-location").html(`<option value="">Choose Location</option>${option}`)
9159     }
9160   })
9161 
9162   $("#location-lock-submit").click(function(e){
9163     let select = $("#choose-location")
9164     let value = select.val().toLowerCase()
9165     console.log(value)
9166     if(select.val() == "") {
9167       return alert("Choose Your Location")
9168       e.preventDefault()
9169     }
9170     setCookie("location_delivery",value,1000000);
9171     
9172     location.reload();
9173     
9174   })
9175 
9176   $("#close-popup-delivery").click(function(){
9177     $(".MuiDialog-root").hide()
9178     if(!current_location){
9179       setCookie("location_delivery","jakarta",1000000);
9180       $("#loc_delivery_city, #loc_delivery_city_mobile").text("Jakarta")
9181     }
9182   })
9183   $("#loc_delivery, #loc_delivery_mobile").click(function(){
9184     $(".MuiDialog-root").show()
9185   })
9186 
9187   
9188   if(!current_location){
9189     
9190   } else {
9191     $("#loc_delivery_city, #loc_delivery_city_mobile").text(current_location)
9192     console.log(current_location)
9193     $("#choose-location").each(function(){
9194       if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi'){
9195         $("#jabodetabek").trigger("click")
9196       } else {
9197         $("#non-jabodetabek").trigger("click")
9198       }
9199       $("#choose-location").find("option[value="+current_location+"]").attr("selected", "selected")
9200     })
9201   }
9202 
9203   // if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi' || current_location == 'bandung' || current_location == 'semarang' || current_location == 'yogyakarta' || current_location == 'surabaya'){
9204   //   $("#timeMalam").attr("disabled", false)
9205   // } else {
9206   //   $("#timeMalam").attr("disabled", true)
9207   // }
9208 
9209   if(current_location && current_location != 'jakarta') {
9210     $("#self-pickup").attr("disabled", true)
9211   }
9212 
9213   function setCookie(name,value,days) {
9214     var expires = "";
9215     if (days) {
9216       var date = new Date();
9217       date.setTime(date.getTime() + (days*24*60*60*1000));
9218       expires = "; expires=" + date.toUTCString();
9219     }
9220     document.cookie = name + "=" + (value || "")  + expires + "; path=/";
9221   }
9222   function getCookie(name) {
9223     var nameEQ = name + "=";
9224     var ca = document.cookie.split(';');
9225     for(var i=0;i < ca.length;i++) {
9226       var c = ca[i];
9227       while (c.charAt(0)==' ') c = c.substring(1,c.length);
9228       if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
9229     }
9230     return null;
9231   }
9232 </script>
9232
9233 <!-- One Tap -->
9234     
9234<script>
9235       console.log("Outerbloom...");
9236     </script>
9236
9237   <div id="shopify-block-ANVEzSUcxTUxZOGpwZ__9703700522657871012" class="shopify-block shopify-app-block">
9238 
9239 
9240 
9241 
9242 
9243 
9244 
9245 
9246 
9247 
9248 
9249 
9250 
9251 
9252 
9253 
9254 
9255 
9256 
9257 
9258 
9259 
9260 
9261 
9262 
9263 
9264 
9265 
9266 
9267 
9268 
9269 
9270 
9271 
9272 
9273 
9274 
9275 
9276 
9277 
9278 
9279 
9280 
9281 
9282 
9283 
9284 <link rel="stylesheet" href="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.css" />
9285 
9285<script src="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.js" defer></script>
9285
9286 
9286<script>
9287   const widgetConfig = {
9288     id: "clz7897za002cz7otleaz0d3d",
9289     showQuickResponse: false,
9290     quickResponsesData: [],
9291     themeColor: "#ffffff",
9292     widgetText: "",
9293     radiusType: "circle",
9294     widgetIconType: "whatsapp",
9295     position: "right",
9296     storeLogo: "",
9297     storeName: "Outerbloom",
9298     storeDescription: "",
9299     size: "small",
9300     showCard: false,
9301     widgetColorType: "solid",
9302     widgetColor1: "#008069",
9303     widgetColor2: "#008069",
9304     social: {
9305       socialOrders: ["instagram","tiktok","facebook","x","youtube","linkedin","email"],
9306       values: {
9307         instagram: {
9308           enabled: false,
9309           value: "",
9310         },
9311         facebook: {
9312           enabled: false,
9313           value: "",
9314         },
9315         email: {
9316           enabled: false,
9317           value: "",
9318         },
9319         x: {
9320           enabled: false,
9321           value: "",
9322         },
9323         tiktok: {
9324           enabled: false,
9325           value: "",
9326         },
9327         linkedin: {
9328           enabled: false,
9329           value: "",
9330         },
9331         youtube: {
9332           enabled: false,
9333           value: "",
9334         },
9335       },
9336     },
9337   };
9338 
9339   function initializeWidget() {
9340     if (typeof BBBWidget !== 'undefined') {
9341       BBBWidget.init(widgetConfig);
9342     } else {
9343       setTimeout(initializeWidget, 100);
9344     }
9345   }
9346 
9347   initializeWidget();</script>
9347
9348 
9349 
9350 </div><div id="shopify-block-ATzRpVTBPU3k1R2pnW__286197278318599166" class="shopify-block shopify-app-block">
9351 
9352 
9353 <div style="position: fixed; bottom: 0; right: 0"></div>
9354 
9355 
9355<script>
9356 console.info("bitlogin extension version: v2.5.7");
9357 
9358 const googleScript = document.createElement("script");
9359 googleScript.setAttribute("src", "https://accounts.google.com/gsi/client");
9360 document.head.append(googleScript);
9361 
9362 const bitLoginBaseUrl = "https://api.bitbybit.studio";
9363 const apiUrl = `${bitLoginBaseUrl}/bitlogin/api`;
9364 
9365 const appearance = {"style":"square","hasShadow":true,"domain":"outerbloom1.myshopify.com","colorScheme":"match","backgroundColor":"#ffffff","outlineColor":"#ffe100","textColor":"#700000","position":"top","hideDivider":false,"dividerText":"","size":"small","format":"contentFlex","language":"en","buttonText":"Continue With","redirectLink":"\/account","googleOneTap":true,"googleOneTapBanner":true,"captureAdditionalData":true,"customerTag":"bitLogin","redirectOneTapDesktop":"[{\"label\":\"Account\",\"label2\":\"Desktop: Account\",\"value\":\"account\",\"parentValue\":\"Desktop\"}]","redirectOneTapMobile":"[{\"label\":\"Thank you page\",\"label2\":\"Mobile: Thank you page\",\"value\":\"thank_you\",\"parentValue\":\"Mobile\"}]","watermark":true,"buttonList":{"google":"Continue with Google","facebook":"Continue with Facebook","apple":"Continue with Apple","whatsapp":"Continue with WhatsApp","microsoft":"Continue with Microsoft","twitter":"Continue with X","amazon":"Continue with Amazon","instagram":"Continue with Instagram","magic_link":"Continue with Magic Link","mobile_app":"Continue with Mobile App","linkedin":"Continue with LinkedIn"}};
9366 const config = [{"domain":"outerbloom1.myshopify.com","provider":"FACEBOOK","enabledMobile":false,"enabledWeb":true,"clientId":"922184709213757","clientSecret":"e3c874c8bce6da4211538ebda706d1cb","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"GOOGLE","enabledMobile":true,"enabledWeb":true,"clientId":"933600373534-vk6hiu9lqrtbblj0357q0gsoo7mqvsd0.apps.googleusercontent.com","clientSecret":"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","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":true,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"APPLE","enabledMobile":true,"enabledWeb":true,"clientId":"com.bitlogin.outerbloom","clientSecret":"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","appleTeamId":"1A","applePrivateKey":"1A","usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"WHATSAPP","enabledMobile":false,"enabledWeb":true,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"MICROSOFT","enabledMobile":false,"enabledWeb":false,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"TWITTER","enabledMobile":false,"enabledWeb":false,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"AMAZON","enabledMobile":false,"enabledWeb":false,"clientId":"amzn1.application-oa2-client.5b560a5e3e2943d6b25c50cd6dca5532","clientSecret":"amz
9366n1.oa2-cs.v1.1cb5f9085a202341f60daf5a7be16c570ccc0b4bd5908b3afd080f34e9b8935d","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null}];
9367 const redirectUrl = appearance.redirectLink;
9368 
9369 let locationCacheSet = false;
9370 let errorLocation = false;
9371 let oneTapSet = false;
9372 
9373 let bitloginCache = {
9374   appearance: appearance,
9375   config: config
9376 };
9377 
9378 let isInitializing = false;
9379 const queue = [];
9380 
9381 // Add CSS for the popup
9382 const popupStyles = document.createElement('style');
9383 popupStyles.textContent = `
9384   /* Styles for login popup */
9385   .bitlogin-popup-overlay {
9386     position: fixed;
9387     top: 0;
9388     left: 0;
9389     width: 100%;
9390     height: 100%;
9391     background: rgba(0, 0, 0, 0.45);
9392     backdrop-filter: blur(4px);
9393     display: flex;
9394     align-items: center;
9395     justify-content: center;
9396     opacity: 0;
9397     transition: opacity 0.3s ease-in-out;
9398     z-index: 999999;
9399   }
9400   
9401   .bitlogin-popup-overlay.visible {
9402     opacity: 1;
9403   }
9404   
9405   .bitlogin-popup {
9406     background: #FFFFFF;
9407     box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
9408     border-radius: 16px;
9409     width: 100%;
9410     max-width: 560px;
9411     display: flex;
9412     overflow: hidden;
9413     position: relative;
9414     opacity: 0;
9415     transform: translateY(20px) scale(0.98);
9416     transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
9417   }
9418   
9419   .bitlogin-popup.visible {
9420     opacity: 1;
9421     transform: translateY(0) scale(1);
9422   }
9423   
9424   .bitlogin-popup-with-image {
9425     max-width: 640px;
9426   }
9427   
9428   .bitlogin-popup-right-image {
9429     flex-direction: row-reverse;
9430   }
9431   
9432   .bitlogin-popup-image {
9433     object-fit: cover;
9434     width: 50%;
9435     height: auto;
9436   }
9437   
9438   .bitlogin-popup-content {
9439     padding: 32px;
9440     position: relative;
9441     width: 50%;
9442   }
9443   
9444   .bitlogin-popup-close {
9445     position: absolute;
9446     top: 16px;
9447     right: 16px;
9448     background: white;
9449     border: none;
9450     width: 30px;
9451     height: 30px;
9452     display: flex;
9453     align-items: center;
9454     justify-content: center;
9455     cursor: pointer;
9456     transition: background-color 0.2s;
9457     color: inherit;
9458     padding: 0;
9459   }
9460   
9461   .bitlogin-popup-close:hover {
9462     background-color: #e5e5e5;
9463   }
9464   
9465   .bitlogin-popup-buttons {
9466     display: flex;
9467     flex-direction: column;
9468     gap: 12px;
9469     margin-top: 24px;
9470   }
9471   
9472   /* Button styles within popup - override width for popup buttons */
9473   .bitlogin-popup-buttons #google-login,
9474   .bitlogin-popup-buttons #facebook-login,
9475   .bitlogin-popup-buttons #apple-login,
9476   .bitlogin-popup-buttons #whatsapp-login,
9477   .bitlogin-popup-buttons #microsoft-login,
9478   .bitlogin-popup-buttons #twitter-login,
9479   .bitlogin-popup-buttons #amazon-login,
9480   .bitlogin-popup-buttons #instagram-login,
9481   .bitlogin-popup-buttons #magic-link-login,
9482   .bitlogin-popup-buttons #mobile-app-login {
9483     width: 100% !important;
9484     font-family: inherit !important;
9485   }
9486   
9487   .bitlogin-popup-footer {
9488     margin-top: 32px;
9489     text-align: center;
9490     font-size: 14px;
9491     opacity: 0.6;
9492   }
9493   
9494   /* Modern Typography */
9495   .bitlogin-popup h2 {
9496     margin-top: 12px;
9497     font-size: 21px !important;
9498     line-height: 1.2 !important;
9499     font-weight: 700 !important;
9500     letter-spacing: -0.02em !important;
9501     margin-bottom: 16px !important;
9502   }
9503   
9504   .bitlogin-popup-header {
9505     position: relative;
9506     margin-bottom: 24px;
9507   }
9508   
9509   /* Modern gradient accent */
9510   .bitlogin-popup-content > div {
9511     font-size: 16px !important;
9512     line-height: 1.2 !important;
9513     opacity: 0.85 !important;
9514   }
9515   
9516   /* Enhanced button interactions */
9517   .bitlogin-popup-buttons button {
9518     position: relative;
9519     overflow: hidden;
9520   }
9521   
9522   @keyframes ripple {
9523     0% {
9524       transform: scale(0, 0);
9525       opacity: 0.5;
9526     }
9527     100% {
9528       transform: scale(100, 100);
9529       opacity: 0;
9530     }
9531   }
9532   
9533   /* Responsive adjustments */
9534   @media (max-width: 640px) {
9535     .bitlogin-popup {
9536       max-width: 90%;
9537       width: 90%;
9538       margin: 0 16px;
9539     }
9540     
9541     .bitlogin-popup-with-image {
9542       flex-direction: column !important;
9543     }
9544     
9545     .bitlogin-popup-image {
9546       width: 100%;
9547       height: 180px;
9548     }
9549     
9550     .bitlogin-popup-content {
9551       padding: 24px;
9552     }
9553     
9554     .bitlogin-popup h2 {
9555       font-size: 24px !important;
9556     }
9557   }
9558 `;
9559 
9560 document.head.appendChild(popupStyles);
9561 
9562 // Add fonts link for different font options
9563 const fontsLink = document.createElement('link');
9564 fontsLink.rel = 'stylesheet';
9565 fontsLink.href = 'https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600&family=Roboto:wght@400;500&family=Open+Sans:wght@400;500;600&family=Noto+Sans:wght@400;500;600&family=Lato:wght@400;700&family=Poppins:wght@400;500;600&family=Quicksand:wght@400;500;600&family=Raleway:wght@400;500;600&family=PT+Sans:wght@400;700&family=Oswald:wght@400;500;600&display=swap';
9566 document.head.appendChild(fontsLink);
9567 
9568 (async () => {
9569   try {
9570     let host = window.location.host;
9571     if (host === "admin.shopify.com") {
9572       host = `${window.location.pathname.split("/")[2]}.myshopify.com`;
9573     }
9574 
9575     const urlSearchParams = new URLSearchParams(window.location.search);
9576     const checkoutUrl = urlSearchParams.get("checkout_url");
9577 
9578     async function init({ inputRef, index }) {
9579       if (isInitializing) {
9580         queue.push(() => init({ inputRef, index }));
9581         return;
9582       }
9583 
9584       isInitializing = true;
9585 
9586       try {
9587         let bitLoginSectionRoot = document.querySelector(
9588           `.bitlogin-root[data-index="${index}"]`
9589         );
9590 
9591         const formRef = inputRef?.closest(
9592           "form:not([action='/account/recover'])"
9593         );
9594 
9595         if (formRef && !bitLoginSectionRoot) {
9596           await getLocation();
9597 
9598           bitLoginSectionRoot = document.createElement(`div`);
9599 
9600           bitLoginSectionRoot.setAttribute("class", "bitlogin-root");
9601           bitLoginSectionRoot.setAttribute("data-index", `${index}`);
9602 
9603           updateAppearance({
9604             formRef,
9605             rootRef: bitLoginSectionRoot,
9606             host,
9607           });
9608         }
9609       } catch (err) {
9610         console.error(`error while initiating bitlogin extensions`, err);
9611       } finally {
9612         // Release the lock
9613         isInitializing = false;
9614 
9615         // Check if there are pending items in the queue
9616         if (queue.length > 0) {
9617           // Process the next function in the queue
9618           const nextFunction = queue.shift();
9619           nextFunction();
9620         }
9621       }
9622     }
9623 
9624     function initAll() {
9625       return new Promise((resolve, reject) => {
9626         setTimeout(async () => {
9627           const inputRefs = document.querySelectorAll(
9628             'input[name="customer[email]"]'
9629           );
9630 
9631           for (let i = 0; i < inputRefs.length; i++) {
9632             const currentInputRef = inputRefs[i];
9633             const isVisible = isElementVisible(currentInputRef);
9634 
9635             if (isVisible) {
9636               await init({ inputRef: currentInputRef, index: i });
9637             }
9638           }
9639 
9640           resolve("ok");
9641         }, 100);
9642       });
9643     }
9644 
9645     const observer = new MutationObserver((mutationsList) => {
9646       for (let mutation of mutationsList) {
9647         initAll();
9648       }
9649     });
9650 
9651     observer.observe(document.body, {
9652       childList: true,
9653       subtree: true,
9654       attributes: true,
9655     });
9656 
9657     initAll();
9658 
9659     if (appearance.googleOneTap) {
9660       setupOneTap({ host, checkoutUrl });
9661     }
9662 
9663     // Initialize popup
9664     await initPopup(host);
9665   } catch (error) {
9666     console.error("Error initializing BitLogin:", error);
9667   }
9668 })();
9669 
9670 async function initPopup(host) {
9671   // Check if user is already logged in using Liquid checks properly
9672   const isLoggedIn = false || 
9673                     document.querySelector('.customer-logout-link') || 
9674                     document.querySelector('.account-link') || 
9675                     window.location.pathname.includes('/account');
9676   
9677   if (isLoggedIn) {
9678     return; // User is logged in, don't show popup
9679   }
9680 
9681   try {
9682     // Fetch the popup configuration
9683     const popupConfig = await fetch(`${apiUrl}/appearance/popup/domain/${host}`)
9684       .then(res => res.json())
9685       .catch(err => {
9686         console.error('Error fetching popup configuration:', err);
9687         return null;
9688       });
9689 
9690     if (!popupConfig || !popupConfig.enabled) {
9691       return;
9691 // Don't show popup if disabled or config not found
9692     }
9693 
9694     // Create popup after 10 seconds
9695     setTimeout(() => {
9696       // Check if user is still on the page and still not logged in
9697       if (document.visibilityState === 'visible') {
9698         // Additional check in case user logged in during the 10 second wait
9699         const currentlyLoggedIn = false || 
9700                               document.querySelector('.customer-logout-link') || 
9701                               document.querySelector('.account-link');
9702         
9703         if (!currentlyLoggedIn) {
9704           createLoginPopup(popupConfig, host);
9705         }
9706       }
9707     }, 10000);
9708   } catch (error) {
9709     console.error('Error initializing popup:', error);
9710   }
9711 }
9712 
9713 function createLoginPopup(popupConfig, host) {
9714   // Font mapping
9715   const fontFamilyMap = {
9716     system_fonts: 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
9717     montserrat: 'Montserrat, sans-serif',
9718     roboto: 'Roboto, sans-serif',
9719     open_sans: 'Open Sans, sans-serif',
9720     noto_sans: 'Noto Sans, sans-serif',
9721     lato: 'Lato, sans-serif',
9722     poppins: 'Poppins, sans-serif',
9723     quicksand: 'Quicksand, sans-serif',
9724     raleway: 'Raleway, sans-serif',
9725     pt_sans: 'PT Sans, sans-serif',
9726     oswald: 'Oswald, sans-serif',
9727   };
9728 
9729   // Create overlay
9730   const overlay = document.createElement('div');
9731   overlay.className = 'bitlogin-popup-overlay';
9732   
9733   // Create popup container with appropriate styling
9734   const popup = document.createElement('div');
9735   popup.className = 'bitlogin-popup';
9736 
9737   if (popupConfig.layout === 'default') {
9738     popup.style.maxWidth = '400px';
9739   }
9740   
9741   // Function to close the popup
9742   const closePopup = () => {
9743     overlay.classList.remove('visible');
9744     popup.classList.remove('visible');
9745     setTimeout(() => {
9746       if (document.body.contains(overlay)) {
9747         document.body.removeChild(overlay);
9748       }
9749     }, 300);
9750   };
9751   
9752   // Add click handler to the overlay to close when clicking outside
9753   overlay.addEventListener('click', (event) => {
9754     // Close only if clicking directly on the overlay, not its children
9755     if (event.target === overlay) {
9756       closePopup();
9757     }
9758   });
9759   
9760   // Add escape key handler to close popup
9761   document.addEventListener('keydown', (event) => {
9762     if (event.key === 'Escape' && document.body.contains(overlay)) {
9763       closePopup();
9764     }
9765   });
9766 
9767   // Create layout with image if specified
9768   let contentWrapper;
9769   if (popupConfig.layout !== 'default' && popupConfig.popupImage) {
9770     popup.classList.add('bitlogin-popup-with-image');
9771     
9772     if (popupConfig.layout === 'right') {
9773       popup.classList.add('bitlogin-popup-right-image');
9774     }
9775     
9776     // Add image
9777     const image = document.createElement('img');
9778     image.className = 'bitlogin-popup-image';
9779     image.src = popupConfig.popupImage;
9780     image.alt = 'Login';
9781     image.loading = 'lazy';
9782     popup.appendChild(image);
9783     
9784     // Create content container
9785     contentWrapper = document.createElement('div');
9786     contentWrapper.className = 'bitlogin-popup-content';
9787 
9788     if (popupConfig.layout === 'right') {
9789       const closeButton = document.createElement('button');
9790       closeButton.className = 'bitlogin-popup-close';
9791       closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="image/logo-login-emo78.png">
9792         <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
9793       </svg>`;
9794       closeButton.setAttribute('aria-label', 'Close');
9795       closeButton.onclick = closePopup;
9796   
9797       popup.appendChild(closeButton);
9798     }
9799   } else {
9800     contentWrapper = document.createElement('div');
9801     contentWrapper.className = 'bitlogin-popup-content';
9802     contentWrapper.style.width = '100%';
9803   }
9804 
9805   // Set background style
9806   if (popupConfig.backgroundTheme === 'gradient') {
9807     contentWrapper.style.background = `linear-gradient(135deg, ${popupConfig.backgroundPopupColor}, ${popupConfig.gradientColor})`;
9808   } else {
9809     contentWrapper.style.backgroundColor = popupConfig.backgroundPopupColor;
9810   }
9811 
9812   // Apply font family
9813   contentWrapper.style.setProperty('font-family', fontFamilyMap[popupConfig.font] || fontFamilyMap.system_fonts, 'important');
9814 
9815   if (popupConfig.layout !== 'right') {
9816     const closeButton = document.createElement('button');
9817     closeButton.className = 'bitlogin-popup-close';
9818     closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="image/logo-login-emo78.png">
9819       <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
9820     </svg>`;
9821     closeButton.setAttribute('aria-label', 'Close');
9822     closeButton.onclick = closePopup;
9823   
9824     contentWrapper.appendChild(closeButton);
9825   }
9826 
9827   // Add heading with subtle animation effect
9828   const header = document.createElement('div');
9829   header.className = 'bitlogin-popup-header';
9830   
9831   const heading = document.createElement('h2');
9832   heading.textContent = popupConfig.headingText || 'Sign in for exclusive benef
9832its';
9833   heading.style.color = popupConfig.fontColor;
9834   header.appendChild(heading);
9835 
9836   // Add body text with improved formatting
9837   const bodyText = document.createElement('div');
9838   bodyText.innerHTML = popupConfig.bodyText || 'Join our community to access exclusive offers and a personalized shopping experience.';
9839   bodyText.style.color = popupConfig.fontColor;
9840   header.appendChild(bodyText);
9841   
9842   contentWrapper.appendChild(header);
9843 
9844   // Create buttons container with modern styling
9845   const buttonsContainer = document.createElement('div');
9846   buttonsContainer.className = 'bitlogin-popup-buttons';
9847   
9848   // Add social buttons
9849   const providerLabels = {
9850     'GOOGLE': 'Continue with Google',
9851     'FACEBOOK': 'Continue with Facebook',
9852     'APPLE': 'Continue with Apple',
9853     'WHATSAPP': 'Continue with WhatsApp',
9854     'MAGIC_LINK': 'Continue with Email',
9855   };
9856 
9857   // Add first login provider button
9858   if (popupConfig.loginProvider1 !== 'NONE') {
9859     const buttonConfig = {
9860       theme: popupConfig.colorScheme || 'match',
9861       customColor: popupConfig.textColor,
9862       format: 'contentFlex',
9863       buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider1.toLowerCase()],
9864       hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true,
9865       style: popupConfig.style || 'rounded',
9866       size: popupConfig.size || 'medium',
9867       colorScheme: popupConfig.colorScheme || 'match',
9868       backgroundColor: popupConfig.backgroundColor || '#3B82F6',
9869       textColor: popupConfig.textColor || '#FFFFFF',
9870       outlineColor: popupConfig.outlineColor || '#3B82F6',
9871       host: host
9872     };
9873     
9874     const button1 = createSocialLoginButton(popupConfig.loginProvider1, buttonConfig);
9875     
9876     // Handle click event - this overrides the default click handler in createSocialLoginButton
9877     button1.onclick = () => {
9878       onClickSocialLogin({ provider: popupConfig.loginProvider1.toLowerCase(), host });
9879       closePopup();
9880     };
9881     
9882     buttonsContainer.appendChild(button1);
9883   }
9884 
9885   // Add second login provider button if enabled
9886   if (popupConfig.loginProvider2 !== 'NONE') {
9887     const buttonConfig = {
9888       theme: popupConfig.colorScheme || 'match',
9889       customColor: popupConfig.textColor,
9890       format: 'contentFlex',
9891       buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider2.toLowerCase()],
9892       hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true,
9893       style: popupConfig.style || 'rounded',
9894       size: popupConfig.size || 'medium',
9895       colorScheme: popupConfig.colorScheme || 'match',
9896       backgroundColor: popupConfig.backgroundColor || '#3B82F6',
9897       textColor: popupConfig.textColor || '#FFFFFF',
9898       outlineColor: popupConfig.outlineColor || '#3B82F6',
9899       host: host
9900     };
9901     
9902     const button2 = createSocialLoginButton(popupConfig.loginProvider2, buttonConfig);
9903     
9904     // Handle click event - this overrides the default click handler in createSocialLoginButton
9905     button2.onclick = () => {
9906       onClickSocialLogin({ provider: popupConfig.loginProvider2.toLowerCase(), host });
9907       closePopup();
9908     };
9909     
9910     buttonsContainer.appendChild(button2);
9911   }
9912 
9913   contentWrapper.appendChild(buttonsContainer);
9914 
9915   // Append content to popup
9916   popup.appendChild(contentWrapper);
9917   
9918   // Append popup to overlay
9919   overlay.appendChild(popup);
9920   
9921   // Append overlay to body
9922   document.body.appendChild(overlay);
9923   
9924   // Trigger animation with slight delay for better perceived performance
9925   setTimeout(() => {
9926     overlay.classList.add('visible');
9927     setTimeout(() => {
9928       popup.classList.add('visible');
9929     }, 50);
9930   }, 10);
9931 }
9932 
9933 window.addEventListener("load", () => {
9934   window.addEventListener("message", (event) => {
9935     const receivedData = event.data;
9936 
9937     if (receivedData.type === "authorize") {
9938       post(
9939         JSON.parse(
9940           JSON.stringify({
9941             "customer[email]": receivedData.email,
9942             "customer[password]": receivedData.password,
9943             form_type: "customer_login",
9944             utf8: "✓",
9945             return_url: redirectUrl,
9946           })
9947         )
9948       );
9949     } else if (receivedData.type === "rejected") {
9950       if (receivedData.reason === "customer_account_disabled") {
9951         showAlert(
9952           "Your account needs to be activated. We've sent you an activation link - please check your email to complete this step."
9953         );
9954       } else if (receivedData.reason === "customer_entry_created_email_not_set") {
9955         showAlert(
9956           "A new account was created but requires an email address. Please update your account with a valid email address to continue."
9957         );
9958       } else if (receivedData.reason === "customer_exist_email_not_set") {
9959         showAlert(
9960           "Your existing account is missing an email address. Please contact support to update your account with a valid email address."
9961         );
9962       }
9963     }
9964 
9965     if (receivedData.type === "customer_authenticated") {
9966       // Dispatch a custom event that merchants can listen for to implement their custom logic
9967       const customerAuthEvent = new CustomEvent('bitlogin:customer_authenticated', {
9968         detail: {
9969           provider: receivedData.provider,
9970           customer: receivedData.customer,
9971           shopifyCustomerCreated: receivedData.shopifyCustomerCreated
9972         }
9973       });
9974       
9975       // Dispatch the event on the window object so merchants can listen for it
9976       window.dispatchEvent(customerAuthEvent);
9977       
9978     }
9979   });
9980 });
9981 
9982 // Reusable functions for social login buttons
9983 function createSocialLoginButton(provider, config = {}) {
9984   const {
9985     theme = 'match',
9986     customColor = null,
9987     format = 'contentFlex',
9988     buttonText = null,
9989     hasShadow = true,
9990     style = 'rounded',
9991     size = 'medium',
9992     colorScheme = 'match',
9993     backgroundColor = '#3B82F6',
9994     textColor = '#FFFFFF',
9995     outlineColor = '#3B82F6',
9996     rootRef = null,
9997     host = null
9998   } = config;
9999   
10000   // Create button element with appropriate ID and attributes
10001   const button = document.createElement('button');
10002   button.id = `${provider.toLowerCase()}-login`;
10003   button.type = 'button';
10004   
10005   // Set the inner SVG based on provider
10006   switch (provider.toUpperCase()) {
10007     case 'GOOGLE':
10008       button.innerHTML = googleLoginIcon(theme, customColor);
10009       break;
10010     case 'FACEBOOK':
10011       button.innerHTML = facebookLoginIcon(theme, customColor);
10012       break;
10013     case 'APPLE':
10014       button.innerHTML = appleLoginIcon(theme, customColor);
10015       break;
10016     case 'WHATSAPP':
10017       button.innerHTML = whatsappLoginIcon(theme, customColor);
10018       break;
10019     case 'MICROSOFT':
10020       button.innerHTML = microsoftLoginIcon(theme, customColor);
10021       break;
10022     case 'TWITTER':
10023       button.innerHTML = twitterLoginIcon(theme, customColor);
10024       break;
10025     case 'AMAZON':
10026       button.innerHTML = amazonLoginIcon(theme, customColor);
10027       break;
10028     case 'INSTAGRAM':
10029       button.innerHTML = instagramLoginIcon(theme, customColor);
10030       break;
10031     case 'MAGIC_LINK':
10032       button.innerHTML = magicLinkLoginIcon(theme, customColor);
10033       break;
10034     case 'MOBILE_APP':
10035       button.innerHTML = mobileAppLoginIcon(theme, customColor);
10036       break;
10037     case 'LINKEDIN':
10038       button.innerHTML = linkedinLoginIcon(theme, customColor);
10039       break;
10040   }
10041   
10042   // Add text if format isn't icon-only and buttonText is provided
10043   if (format !== "wrapperFlexContainerOnlyLogo" && buttonText) {
10044     button.innerHTML += `<p>${buttonText}</p>`;
10045   }
10046   
10047   // Apply styling
10048   // Shadow
10049   if (hasShadow) {
10050     const shadowProperties = `0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`;
10051     button.style["box-shadow"] = shadowProperties;
10052   }
10053   
10054   // Border radius
10055   const radiusProperties =
10056     style === "rounded"
10057       ? "8px"
10058       : style === "square"
10059       ? "0px"
10060       : style === "fullRounded"
10061       ? format === "wrapperFlexContainerOnlyLogo"
10062         ? "50%"
10063         : "50px"
10064       : undefined;
10065   button.style["border-radius"] = radiusProperties;
10066   
10067   // Size
10068   const sizeProperties =
10069     size === "medium"
10070       ? "12px"
10071       : size === "small"
10072       ? "8px"
10073       : size === "large"
10074       ? "16px"
10075       : "8px";
10076 
10077   button.style["padding-block"] = sizeProperties;
10078 
10079   // Format styling
10080   if (format) {
10081     if (
10082       format === "contentFlexReverse" ||
10083       format === "contentFlexCenterReverse"
10084     ) {
10085       const flexDir = `row-reverse`;
10086       button.style["flex-direction"] = flexDir;
10087     }
10088     
10089     if (
10090       format === "contentFlexCenter" ||
10091       format === "contentFlexCenterReverse"
10092     ) {
10093       const justifyContent = `center`;
10094       button.style["justify-content"] = justifyContent;
10095     } else if (
10096       format === "contentFlex" ||
10097       format === "contentFlexReverse"
10098     ) {
10099       const buttonTextElement = button.querySelector("p");
10100       if (buttonTextElement) {
10101         buttonTextElement.style["flex-grow"] = 1;
10102         buttonTextElement.style["text-align"] = "center";
10103       }
10104     }
10105 
10106     if (format === "wrapperFlexContainerOnlyLogo" && rootRef) {
10107       rootRef.style["flex-direction"] = "row";
10108       rootRef.style["gap"] = "8px";
10109       rootRef.style["display"] = "flex";
10110       rootRef.style["flex-wrap"] = "wrap";
10111 
10112       const sizeMapping = {
10113         small: "52px",
10114         medium: "62px",
10115         large: "72px",
10116       };
10117       const buttonSize = sizeMapping[size] || "52px";
10118 
10119       button.style["margin"] = 0;
10120       button.style["width"] = buttonSize;
10121       button.style["height"] = buttonSize;
10122       button.style["display"] = "flex";
10123       button.style["align-items"] = "center";
10124       button.style["justify-content"] = "center";
10125 
10126       const svgElement = button.querySelector("svg");
10127       if (svgElement) {
10128         svgElement.style["flex"] = "none";
10129       }
10130     }
10131   }
10132 
10133   // Color scheme styling
10134   if (colorScheme === "black") {
10135     button.classList.add("scheme-black");
10136   } else if (colorScheme === "white") {
10137     button.classList.add("scheme-white");
10138   } else if (colorScheme === "custom") {
10139     button.style["background-color"] = backgroundColor;
10140     button.style["color"] = textColor;
10141     button.style["border-color"] = outlineColor;
10142 
10143     const darkenColor = (color, percentage) => {
10144       const value = parseInt(color.slice(1), 16);
10145       const r = Math.max(0, ((value >> 16) & 0xff) - (0xff * percentage));
10146       const g = Math.max(0, ((value >> 8) & 0xff) - (0xff * percentage));
10147       const b = Math.max(0, (value & 0xff) - (0xff * percentage));
10148       return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`;
10149     };
10150 
10151     button.addEventListener("mouseover", () => {
10152       button.style["background-color"] = darkenColor(backgroundColor, 0.2);
10153     });
10154     button.addEventListener("mouseout", () => {
10155       button.style["background-color"] = backgroundColor;
10156     });
10157   } else if (colorScheme === "match") {
10158     button.classList.add("scheme-match");
10159   } else if (colorScheme === "matchOutline") {
10160     button.classList.add("scheme-match-outline");
10161   }
10162   
10163   // Add click event listener if host is provided
10164   if (host) {
10165     button.addEventListener("click", () => 
10166       onClickSocialLogin({ provider: provider.toLowerCase(), host })
10167     );
10168   }
10169   
10170   return button;
10171 }
10172 
10173 function setupSocialLoginButtons(config, rootRef, data, host) {
10174   // Clear any existing content
10175   rootRef.innerHTML = '';
10176 
10177   const sortedEnabledProviders = config
10178     .filter(c => c.enabledWeb)
10179     .sort((a, b) => a.position - b.position);
10180 
10181   sortedEnabledProviders.forEach(provider => {
10182     const key = provider.provider;
10183     const lowerKey = key.toLowerCase();
10184 
10185     const buttonText = data.format !== "wrapperFlexContainerOnlyLogo"
10186       ? (lowerKey === 'twitter'
10187           ? data.buttonList.twitter.replace('Twitter', 'X')
10188           : data.buttonList[lowerKey])
10189       : null;
10190 
10191     const button = createSocialLoginButton(key, {
10192       theme: data.colorScheme || 'match',
10193       customColor: data.textColor,
10194       format: data.format,
10195       buttonText: buttonText,
10196       hasShadow: data.hasShadow !== undefined ? data.hasShadow : true,
10197       style: data.style,
10198       size: data.size,
10199       colorScheme: data.colorScheme,
10200       backgroundColor: data.backgroundColor,
10201       textColor: data.textColor,
10202       outlineColor: data.outlineColor,
10203       rootRef: rootRef,
10204       host: host
10205     });
10206 
10207     rootRef.appendChild(button);
10208   });
10209 
10210   return rootRef;
10211 }
10212 
10213 function updateAppearance({ formRef, rootRef, host }) {
10214   if (!formRef) return;
10215 
10216   const data = bitloginCache.appearance || {
10217     style: "square",
10218     hasShadow: false,
10219     colorScheme: "match",
10220     backgroundColor: "#FFFFFF",
10221     outlineColor: "#000000",
10222     textColor: "#000000",
10223     position: "bottom",
10224     hideDivider: "false",
10225     dividerText: "OR",
10226     size: "small",
10227     format: "contentFlex",
10228     language: "en",
10229     buttonText: "Continue with",
10230     redirectLink: "/account",
10231     googleOneTap: true,
10232     googleOneTapBanner: true,
10233     customerTag: "bitLogin",
10234     redirectOneTapDesktop: null,
10235     redirectOneTapMobile: null,
10236     buttonList: {
10237       google: "Continue with Google",
10238       facebook: "Continue with Facebook",
10239       apple: "Continue with Apple",
10240       whatsapp: "Continue with WhatsApp",
10241       microsoft: "Continue with Microsoft",
10242       twitter: "Continue with X",
10243       amazon: "Continue with Amazon",
10244       instagram: "Continue with Instagram",
10245       magic_link: "Continue with Magic Link",
10246       mobile_app: "Continue with Mobile App",
10247       linkedin: "Continue with LinkedIn",
10248     },
10249   };
10250 
10251   // Use the new setupSocialLoginButtons function to create and configure all buttons
10252   setupSocialLoginButtons(bitloginCache.config, rootRef, data, host);
10253 
10254   let divider;
10255 
10256   if (!data.hideDivider) {
10257     divider = document.createElement("div");
10258     const dividerStyle = "text-align:center;margin-block:16px";
10259     divider.setAttribute("style", dividerStyle);
10260     divider.innerHTML = data.dividerText;
10261   }
10262 
10263   if (data.position === "bottom") {
10264     if (divider) {
10265       formRef.appendChild(divider);
10266     }
10267     formRef.appendChild(rootRef);
10268   } else if (data.position === "top") {
10269     if (divider) {
10270       formRef.prepend(divider);
10271     }
10272     formRef.prepend(rootRef);
10273   }
10274 }
10275 
10276 
10277 async function onClickSocialLogin({ provider, host }) {
10278   const rand = Math.random().toString();
10279 
10280   const locationQueryString = bitloginCache.location
10281     ? `&${objectToQueryString(bitloginCache.location)}`
10282     : "";
10283 
10284   const width = 800;
10285   const height = 600;
10286   const left = (window.screen.width / 2) - (width / 2);
10287   const top = (window.screen.height / 2) - (height / 2) - 50;
10288 
10289   if(provider === 'whatsapp') {
10290     window.open(
10291       `/apps/bitlogin/whatsapp${locationQueryString ? `?${locationQueryString}` : ''}`,
10292       "mywindow",
10293       `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}`
10294     );
10295   } else {
10296     window.open(
10297       `${apiUrl}/login/${provider}?referrerId=${rand}&shop=${host}${locationQueryString}`,
10298       "mywindow",
10299       `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}`
10300     );
10301   }
10302 }
10303 
10304 function objectToQueryString(obj) {
10305   return Object.keys(obj)
10306     .map((key) => {
10307       return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]);
10308     })
10309     .join("&");
10310 }
10311 
10312 async function getLocation() {
10313   if (locationCacheSet) return;
10314 
10315   try {
10316     const response = await fetch("https://ipapi.co/json/");
10317 
10318     if (!response.ok) {
10319       console.error(`error retrieving location...`, response.status);
10320       errorLocation = true;
10321     } else {
10322       const data = await response.json();
10323 
10324       const { city, region, country_name, country_code } = data;
10325 
10326       const formattedLocationData = {
10327         city,
10328         region,
10329         country_name,
10330         country_code,
10331       };
10332 
10333       bitloginCache.location = formattedLocationData;
10334       locationCacheSet = true;
10335       errorLocation = false;
10336     }
10337   } catch (err) {
10338     console.error(`error fetching location`, err);
10339     errorLocation = true;
10340   }
10341 }
10342 
10343 function post(params) {
10344   // The rest of this code assumes you are not using a library.
10345   // It can be made less verbose if you use one.
10346   const form = document.createElement("form");
10347   form.method = "post";
10348   form.action = `/account/login`;
10349   form.acceptCharset = "UTF-8";
10350   form.setAttribute("data-login-with-shop-sign-in", "true");
10351   form.setAttribute("novalidate", "novalidate");
10352 
10353   for (const key in params) {
10354     if (params.hasOwnProperty(key)) {
10355       const hiddenField = document.createElement("input");
10356       hiddenField.type = "hidden";
10357       hiddenField.name = key;
10358       hiddenField.value = params[key];
10359 
10360       form.appendChild(hiddenField);
10361     }
10362   }
10363 
10364   document.body.appendChild(form);
10365   form.submit();
10366 }
10367 
10368 async function setupOneTap({ host, checkoutUrl }) {
10369   if (oneTapSet) return;
10370 
10371   const redirectOneTapDesktop = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapDesktop || '[]'));
10372   const redirectOneTapMobile = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapMobile || '[]'));
10373 
10374   const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
10375   const redirectList = JSON.parse(isMobile ? redirectOneTapMobile : redirectOneTapDesktop);
10376 
10377   const currentPath = window.location.pathname.toLowerCase();
10378   const currentUrl = window.location.href.toLowerCase();
10379 
10380   const shouldHideGoogleOneTap = redirectList.some(({ value }) => {
10381     switch (value) {
10382       case 'home':
10383         return currentPath === '/';
10384       case 'product':
10385         return currentPath.startsWith('/products/');
10386       case 'collections':
10387         return currentPath.startsWith('/collections');
10388       case 'cart':
10389         return currentPath === '/cart';
10390       case 'checkout':
10391         return currentPath.startsWith('/checkouts') && !currentPath.includes('thank_you');
10392       case 'thank_you':
10393         return currentPath.includes('/thank_you');
10394       case 'account':
10395         return currentPath.startsWith('/account');
10396       case 'pages':
10397         return currentPath.startsWith('/pages');
10398       case 'blogs':
10399         return currentPath === '/blogs' || currentPath === '/blogs/news';
10400       case 'blog_post':
10401         return currentPath.startsWith('/blogs/') && currentPath.split('/').length > 3;
10402       default:
10403         return false;
10404     }
10405   });
10406 
10407   if (shouldHideGoogleOneTap) return;
10408 
10409   const oneTapClientId = bitloginCache.config.find(
10410     (config) => config.provider === "GOOGLE"
10411   )?.clientId;
10412 
10413   const isLoggedIn = false;
10414 
10415   if (bitloginCache.appearance.googleOneTap && oneTapClientId && !isLoggedIn) {
10416     const googleOneTapButton = document.createElement("div");
10417     googleOneTapButton.setAttribute("id", "g_id_onload");
10418     googleOneTapButton.setAttribute("data-client_id", oneTapClientId);
10419     googleOneTapButton.setAttribute("data-context", "signin");
10420     googleOneTapButton.setAttribute(
10421       "data-callback",
10422       "handleGoogleOneTapResponse"
10423     );
10424     googleOneTapButton.setAttribute("data-itp_support", "true");
10425 
10426     const googleOneTapScript = document.createElement("script");
10427 
10428     googleOneTapScript.innerHTML += `
10429           function handleGoogleOneTapResponse(response) {
10430               if (response.credential) {
10431                   const idToken = response.credential;
10432                   fetch('${bitLoginBaseUrl}/bitlogin/api/login/google-one-tap', {
10433                       method: 'POST',
10434                       headers: { 'Content-Type': 'application/json' },
10435                       body: JSON.stringify({ idToken, shop: "${host}", ...bitloginCache.location })
10436                   }).then(response => {
10437                       response.json().then((data) => {
10438                         post(
10439                           JSON.parse(
10440                             JSON.stringify({
10441                               "customer[email]": data.email,
10442                               "customer[password]": data.password,
10443                               form_type: "customer_login",
10444                               utf8: "✓",
10445                               return_url: redirectUrl,
10446                             })
10447                           )
10448                         );
10449                       });  
10450                   }).catch(error => {
10451                       console.error('Error occurred:', error);
10452                   });
10453               } else {
10454                   console.error('No credential available');
10455               }
10456           }
10457        `;
10458 
10459     document.body.append(googleOneTapButton);
10460     document.body.append(googleOneTapScript);
10461   }
10462 
10463   oneTapSet = true;
10464 }
10465 
10466 const googleLoginIcon = (
10467   theme,
10468   customColor
10469 ) => `
10470 ${
10471   theme === "match" || theme === "matchOutline" || theme === "custom"
10472     ? `<svg
10473     xmlns='image/logo-login-emo78.png'
10474     xmlns:v='https://vecta.io/nano'
10475     width='24'
10476     height='24'
10477     viewBox='0 0 186.69 190.5'
10478   >
10479     <g transform="translate(1184.583 765.171)"><path clip-path="none" mask="none" d="M-1089.333-687.239v36.888h51.262c-2.251 11.863-9.006 21.908-19.137 28.662l30.913 23.986c18.011-16.625 28.402-41.044 28.402-70.052 0-6.754-.606-13.249-1.732-19.483z" fill="${
10480       theme === "custom" ? customColor : "#4285f4"
10481     }"/><path clip-path="none" mask="none" d="M-1142.714-651.791l-6.972 5.337-24.679 19.223h0c15.673 31.086 47.796 52.561 85.03 52.561 25.717 0 47.278-8.486 63.038-23.033l-30.913-23.986c-8.486 5.715-19.31 9.179-32.125 9.179-24.765 0-45.806-16.712-53.34-39.226z" fill="${
10482         theme === "custom" ? customColor : "#34a853"
10483       }"/><path clip-path="none" mask="none" d="M-1174.365-712.61c-6.494 12.815-10.217 27.276-10.217 42.689s3.723 29.874 10.217 42.689c0 .086 31.693-24.592 31.693-24.592-1.905-5.715-3.031-11.776-3.031-18.098s1.126-12.383 3.031-18.098z" fill="${
10484         theme === "custom" ? customColor : "#fbbc05"
10485       }"/><path d="M-1089.333-727.244c14.028 0 26.497 4.849 36.455 14.201l27.276-27.276c-16.539-15.413-38.013-24.852-63.731-24.852-37.234 0-69.359 21.388-85.032 52.561l31.692 24.592c7.533-22.514 28.575-39.226 53.34-39.226z" fill="${
10486         theme === "custom" ? customColor : "#ea4335"
10487       }" clip-path="none" mask="none"/></g>
10488   </svg>`
10489     : `<svg xmlns="image/logo-login-emo78.png" width="25" height="25" viewBox="0 0 25 25" fill="none">
10490 <path d="M24.1906 12.7758C24.1906 11.96 24.1244 11.1399 23.9833 10.3374H12.6646V14.9584H19.1463C18.8773 16.4488 18.0131 17.7672 16.7476 18.6049V21.6032H20.6146C22.8854 19.5132 24.1906 16.4267 24.1906 12.7758Z" fill="${
10491         theme !== "black" ? "black" : "white"
10492       }"/>
10493 <path d="M12.6647 24.5001C15.9011 24.5001 18.6305 23.4374 20.619 21.6031L16.7521 18.6048C15.6762 19.3368 14.2873 19.7513 12.6691 19.7513C9.53845 19.7513 6.88403 17.6391 5.93161 14.7996H1.94116V17.8904C3.97828 21.9428 8.12746 24.5001 12.6647 24.5001Z" fill="${
10494         theme !== "black" ? "black" : "white"
10495       }"/>
10496 <path d="M5.92709 14.7995C5.42442 13.3091 5.42442 11.6953 5.92709 10.205V7.11401H1.94105C0.23905 10.5048 0.23905 14.4996 1.94105 17.8903L5.92709 14.7995Z" fill="${
10497         theme !== "black" ? "black" : "white"
10498       }"/>
10499 <path d="M12.6647 5.24893C14.3755 5.22248 16.029 5.86623 17.268 7.04794L20.694 3.62188C18.5247 1.58477 15.6454 0.464802 12.6647 0.500076C8.12745 0.500076 3.97828 3.05749 1.94116 7.11408L5.9272 10.205C6.8752 7.36099 9.53403 5.24893 12.6647 5.24893Z" fill="${
10500         theme !== "black" ? "black" : "white"
10501       }"/>
10502 </svg>`
10503 }`;
10504 
10505 const appleLoginIcon = (
10506   theme,
10507   customColor
10508 ) => `<svg width="24" height="24" viewBox="0 0 19 24" fill="none" xmlns="image/logo-login-emo78.png">
10509 <path d="M15.4146 22.08C14.263 23.2897 12.9925 23.1013 11.7815 22.5307C10.494 21.9489 9.31698 21.9121 7.95724 22.5307C6.26395 23.322 5.36524 23.092 4.34544 22.08C-1.4122 15.663 -0.562362 5.88801 5.98138 5.52001C7.56844 5.61201 8.6796 6.46991 9.61442 6.54121C11.0039 6.23531 12.3339 5.35901 13.8211 5.47401C15.6078 5.63041 16.9443 6.39401 17.8366 7.76711C14.161 10.1591 15.0321 15.4031 18.4082 16.8751C17.7324 18.7956 16.8656 20.6931 15.4125 22.0961L15.4146 22.08ZM9.48695 5.45101C9.31486 2.59901 11.4501 0.25301 13.9061 0.0230103C14.2439 3.31201 11.1441 5.77301 9.48695 5.45101Z" fill="${
10510   theme === "custom"
10511     ? customColor
10512     : theme === "match" || theme === "black"
10513     ? "white"
10514     : "black"
10515 }"/>
10516 </svg>`;
10517 
10518 const facebookLoginIcon = (
10519   theme,
10520   customColor
10521 ) => `
10522 ${
10523   theme === "match" || theme === "matchOutline" || theme === "custom"
10524     ? `<svg xmlns="image/logo-login-emo78.png" width="24" height="25" viewBox="0 0 24 25" fill="none">
10525     <path fill-rule="evenodd" clip-rule="evenodd" d="M24 12.5C24 5.8731 18.6268 0.5 12 0.5C5.3731 0.5 0 5.8731 0 12.5C0 18.489 4.38762 23.4537 10.1252 24.355V15.9696H7.07748V12.5H10.1252V9.85562C10.1252 6.84842 11.9173 5.18622 14.6579 5.18622C15.9707 5.18622 17.3443 5.42077 17.3443 5.42077V8.37398H15.8307C14.3406 8.37398 13.8748 9.29875 13.8748 10.2488V12.4999H17.2025L16.671 15.9695H13.8747V24.3548C19.6123 23.4553 23.9998 18.4907 23.9998 12.4999L24 12.5Z" fill="${
10526       theme === "custom" ? customColor : theme === "match" ? "white" : "#1977F3"
10527     }"/>
10528     <path fill-rule="evenodd" clip-rule="evenodd" d="M16.5934 16.2833L17.1251 12.8137H13.7973V10.5626C13.7973 9.61422 14.2614 8.68778 15.7532 8.68778H17.2669V5.73457C17.2669 5.73457 15.8933 5.5 14.5804 5.5C11.8399 5.5 10.0477 7.16057 10.0477 10.1694V12.8138H7V16.2834H10.0477V24.6688C10.6586 24.7648 11.2846 24.8138 11.9225 24.8138C12.5604 24.8138 13.1865 24.7631 13.7973 24.6688V16.2834H16.5936L16.5934 16.2833Z" fill="${
10529       theme === "match" ? "#1778f2" : "transparent"
10530     }"/>
10531     </svg>`
10532     : `<svg xmlns="image/logo-login-emo78.png" width="24" height="25" viewB
10532ox="0 0 24 25" fill="none">
10533 <path fill-rule="evenodd" clip-rule="evenodd" d="M24 12.5C24 5.8731 18.6268 0.5 12 0.5C5.3731 0.5 0 5.8731 0 12.5C0 18.489 4.38762 23.4537 10.1252 24.355V15.9696H7.07748V12.5H10.1252V9.85562C10.1252 6.84842 11.9173 5.18622 14.6579 5.18622C15.9707 5.18622 17.3443 5.42077 17.3443 5.42077V8.37398H15.8307C14.3406 8.37398 13.8748 9.29875 13.8748 10.2488V12.4999H17.2025L16.671 15.9695H13.8747V24.3548C19.6123 23.4553 23.9998 18.4907 23.9998 12.4999L24 12.5Z" fill="${
10534         theme === "black" ? "white" : "black"
10535       }"/>
10536 <path fill-rule="evenodd" clip-rule="evenodd" d="M16.5934 16.2833L17.1251 12.8137H13.7973V10.5626C13.7973 9.61422 14.2614 8.68778 15.7532 8.68778H17.2669V5.73457C17.2669 5.73457 15.8933 5.5 14.5804 5.5C11.8399 5.5 10.0477 7.16057 10.0477 10.1694V12.8138H7V16.2834H10.0477V24.6688C10.6586 24.7648 11.2846 24.8138 11.9225 24.8138C12.5604 24.8138 13.1865 24.7631 13.7973 24.6688V16.2834H16.5936L16.5934 16.2833Z" fill="${
10537         theme === "black" ? "black" : "white"
10538       }"/>
10539 </svg>`
10540 }`;
10541 
10542 const whatsappLoginIcon = (
10543   theme,
10544   customColor
10545 ) => `<svg
10546   viewBox="0 0 24 24"
10547   fill="none"
10548   width="24"
10549   height="25"
10550   xmlns="image/logo-login-emo78.png"
10551 >
10552   <g id="SVGRepo_bgCarrier" stroke-width="0"></g>
10553   <g
10554     id="SVGRepo_tracerCarrier"
10555     stroke-linecap="round"
10556     stroke-linejoin="round"
10557   ></g>
10558   <g id="SVGRepo_iconCarrier">
10559     <path
10560       fill-rule="evenodd"
10561       clip-rule="evenodd"
10562       d="M3.50002 12C3.50002 7.30558 7.3056 3.5 12 3.5C16.6944 3.5 20.5 7.30558 20.5 12C20.5 16.6944 16.6944 20.5 12 20.5C10.3278 20.5 8.77127 20.0182 7.45798 19.1861C7.21357 19.0313 6.91408 18.9899 6.63684 19.0726L3.75769 19.9319L4.84173 17.3953C4.96986 17.0955 4.94379 16.7521 4.77187 16.4751C3.9657 15.176 3.50002 13.6439 3.50002 12ZM12 1.5C6.20103 1.5 1.50002 6.20101 1.50002 12C1.50002 13.8381 1.97316 15.5683 2.80465 17.0727L1.08047 21.107C0.928048 21.4637 0.99561 21.8763 1.25382 22.1657C1.51203 22.4552 1.91432 22.5692 2.28599 22.4582L6.78541 21.1155C8.32245 21.9965 10.1037 22.5 12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5ZM14.2925 14.1824L12.9783 15.1081C12.3628 14.7575 11.6823 14.2681 10.9997 13.5855C10.2901 12.8759 9.76402 12.1433 9.37612 11.4713L10.2113 10.7624C10.5697 10.4582 10.6678 9.94533 10.447 9.53028L9.38284 7.53028C9.23954 7.26097 8.98116 7.0718 8.68115 7.01654C8.38113 6.96129 8.07231 7.046 7.84247 7.24659L7.52696 7.52195C6.76823 8.18414 6.3195 9.2723 6.69141 10.3741C7.07698 11.5163 7.89983 13.314 9.58552 14.9997C11.3991 16.8133 13.2413 17.5275 14.3186 17.8049C15.1866 18.0283 16.008 17.7288 16.5868 17.2572L17.1783 16.7752C17.4313 16.5691 17.5678 16.2524 17.544 15.9269C17.5201 15.6014 17.3389 15.308 17.0585 15.1409L15.3802 14.1409C15.0412 13.939 14.6152 13.9552 14.2925 14.1824Z"
10563       fill="${
10564         theme === "match" || theme === "black"
10565           ? "#ffffff"
10566           : theme === "white"
10567           ? "#000000"
10568           : theme === "matchOutline"
10569           ? "#25d366"
10570           : customColor
10571       }"
10572     ></path>
10573   </g>
10574 </svg>`;
10575 
10576 const microsoftLoginIcon = (
10577   theme,
10578   customColor
10579 ) => `<svg
10580 xmlns="image/logo-login-emo78.png"
10581 width="25"
10582 height="25"
10583 viewBox="0 0 48 48">
10584 <path fill="${
10585   theme === "match" || theme == "matchOutline"
10586     ? "#ff5722"
10587     : theme === "black"
10588     ? "#ffffff"
10589     : theme === "white"
10590     ? "#000000"
10591     : customColor
10592 }" d="M6 6H22V22H6z" transform="rotate(-180 14 14)"></path>
10593 <path
10594   fill="${
10595     theme === "match" || theme == "matchOutline"
10596       ? "#4caf50"
10597       : theme === "black"
10598       ? "#ffffff"
10599       : theme === "white"
10600       ? "#000000"
10601       : customColor
10602   }"
10603   d="M26 6H42V22H26z"
10604   transform="rotate(-180 34 14)"></path>
10605 <path
10606   fill="${
10607     theme === "match" || theme == "matchOutline"
10608       ? "#ffc107"
10609       : theme === "black"
10610       ? "#ffffff"
10611       : theme === "white"
10612       ? "#000000"
10613       : customColor
10614   }"
10615   d="M26 26H42V42H26z"
10616   transform="rotate(-180 34 34)"></path>
10617 <path fill="${
10618   theme === "match" || theme == "matchOutline"
10619     ? "#03a9f4"
10620     : theme === "black"
10621     ? "#ffffff"
10622     : theme === "white"
10623     ? "#000000"
10624     : customColor
10625 }" d="M6 26H22V42H6z" transform="rotate(-180 14 34)"></path>
10626 </svg>`;
10627 
10628 const twitterLoginIcon = (
10629   theme,
10630   customColor
10631 ) => `<svg
10632 xmlns="image/logo-login-emo78.png"
10633 width="25"
10634 height="25"
10635 viewBox="0 0 48 48">
10636 <polygon fill="${
10637   theme === "match" || theme === "black"
10638     ? "#ffffff"
10639     : theme === "matchOutline" || theme === "white"
10640     ? "#000000"
10641     : customColor
10642 }" points="41,6 9.929,42 6.215,42 37.287,6"></polygon>
10643 <polygon
10644   fill="${
10645     theme === "match" || theme === "black"
10646       ? "#000000"
10647       : theme === "matchOutline" || theme === "white"
10648       ? "#ffffff"
10649       : customColor
10650   }"
10651   fill-rule="evenodd"
10652   points="31.143,41 7.82,7 16.777,7 40.1,41"
10653   clip-rule="evenodd"></polygon>
10654 <path
10655   fill="${
10656     theme === "match" || theme === "black"
10657       ? "#ffffff"
10658       : theme === "matchOutline" || theme === "white"
10659       ? "#000000"
10660       : customColor
10661   }"
10662   d="M15.724,9l20.578,30h-4.106L11.618,9H15.724 M17.304,6H5.922l24.694,36h11.382L17.304,6L17.304,6z"></path>
10663 </svg>`;
10664 
10665 const amazonLoginIcon = (theme, customColor) => `
10666  <svg
10667       xmlns="image/logo-login-emo78.png"
10668       x="0px"
10669       y="0px"
10670       width="25"
10671       height="25"
10672       viewBox="0 0 50 50"
10673     >
10674       <path
10675         fill="${
10676           theme === "black"
10677             ? "#ffffff"
10678             : theme === "matchOutline"
10679             ? "#FF9900"
10680             : theme === "white" || theme === "match"
10681             ? "#000000"
10682             : customColor
10683         }"
10684         d="M 25.3125 3 C 19.210938 3 12.492188 5.3125 11.09375 12.8125 C 10.894531 13.613281 11.5 13.992188 12 14.09375 L 18.1875 14.6875 C 18.789063 14.6875 19.207031 14.101563 19.40625 13.5 C 19.90625 10.898438 22.101563 9.59375 24.5 9.59375 C 25.800781 9.59375 27.292969 10.113281 28.09375 11.3125 C 28.992188 12.613281 28.8125 14.40625 28.8125 15.90625 L 28.8125 16.8125 C 25.113281 17.210938 20.3125 17.5 16.8125 19 C 12.8125 20.699219 10 24.207031 10 29.40625 C 10 36.007813 14.199219 39.3125 19.5 39.3125 C 24 39.3125 26.5 38.195313 30 34.59375 C 31.199219 36.292969 31.585938 37.105469 33.6875 38.90625 C 34.1875 39.207031 34.789063 39.085938 35.1875 38.6875 L 35.1875 38.8125 C 36.488281 37.710938 38.792969 35.601563 40.09375 34.5 C 40.59375 34.199219 40.492188 33.5 40.09375 33 C 38.894531 31.398438 37.6875 30.09375 37.6875 27.09375 L 37.6875 17.1875 C 37.6875 12.988281 38.007813 9.085938 34.90625 6.1875 C 32.40625 3.789063 28.414063 3 25.3125 3 Z M 27 22 L 28.6875 22 L 28.6875 23.40625 C 28.6875 25.804688 28.792969 27.894531 27.59375 30.09375 C 26.59375 31.894531 24.988281 33 23.1875 33 C 20.789063 33 19.3125 31.207031 19.3125 28.40625 C 19.3125 23.707031 23 22.300781 27 22 Z M 44.59375 36.59375 C 42.992188 36.59375 41.085938 37 39.6875 38 C 39.289063 38.300781 39.3125 38.6875 39.8125 38.6875 C 41.414063 38.488281 44.988281 38.007813 45.6875 38.90625 C 46.289063 39.707031 45.007813 43.085938 44.40625 44.6875 C 44.207031 45.1875 44.601563 45.300781 45 45 C 47.699219 42.699219 48.40625 38.007813 47.90625 37.40625 C 47.605469 36.90625 46.195313 36.59375 44.59375 36.59375 Z M 2.1875 37.5 C 1.886719 37.5 1.695313 38.011719 2.09375 38.3125 C 8.09375 43.710938 16.007813 47 24.90625 47 C 31.207031 47 38.492188 45.011719 43.59375 41.3125 C 44.394531 40.710938 43.707031 39.695313 42.90625 40.09375 C 37.207031 42.492188 31.101563 43.6875 25.5 43.6875 C 17.199219 43.6875 9.1875 41.386719 2.6875 37.6875 C 2.488281 37.488281 2.289063 37.5 2.1875 37.5 Z"
10685       ></path>
10686     </svg>`;
10687 
10688 const instagramLoginIcon= (theme, customColor) => `
10689     <svg
10690       width="25"
10691       height="25"
10692       viewBox="0 0 25 24"
10693       fill="none"
10694       xmlns="image/logo-login-emo78.png">
10695       <path
10696         fill-rule="evenodd"
10697         clip-rule="evenodd"
10698         d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.
1069864321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z"
10699         fill="url(#paint0_radial_378_3535)" />
10700       <path
10701         fill-rule="evenodd"
10702         clip-rule="evenodd"
10703         d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.64321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z"
10704         fill="url(#paint0_radial_378_3535)" />
10705       <path
10706         fill-rule="evenodd"
10707         clip-rule="evenodd"
10708         d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.
1070864321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z"
10709         fill="url(#paint0_radial_378_3535)" />
10710       <path
10711         fill-rule="evenodd"
10712         clip-rule="evenodd"
10713         d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.64321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z"
10714         fill="url(#paint1_radial_378_3535)" />
10715       <defs>
10716         <radialGradient
10717           id="paint0_radial_378_3535"
10718           cx="0"
10719           cy="0"
10720           r="1"
10721           gradientUnits="userSpaceOnUse"
10722           gradientTransform="translate(17.4 22.7) rotate(-115.776) scale(27.2737 40.5665)">
10723           <stop offset="0.24392" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF1B90' : customColor}" />
10724           <stop offset="0.436673" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#F80261' : customColor}" />
10725           <stop offset="0.688476" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#ED00C0' : customColor}" />
10726           <stop offset="0.776787" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#C500E9' : customColor}" />
10727           <stop offset="0.893155" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#7017FF' : customColor}" />
10728         </radialGradient>
10729         <radialGradient
10730           id="paint1_radial_378_3535"
10731           cx="0"
10732           cy="0"
10733           r="1"
10734           gradientUnits="userSpaceOnUse"
10735           gradientTransform="translate(7.75 19.31) rotate(-57.4396) scale(11.8174 12.2918)">
10736           <stop stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FFD600' : customColor}" />
10737           <stop offset="0.484375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF6930' : customColor}" />
10738           <stop offset="0.734375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" />
10739           <stop offset="1" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" stop-opacity="0" />
10740         </radialGradient>
10741       </defs>
10742     </svg>`;
10743 
10744 const magicLinkLoginIcon = (theme, customColor) => `
10745   <svg
10746     xmlns="image/logo-login-emo78.png"
10747     width="25"
10748     height="25"
10749     fill="none"
10750     viewBox="0 0 25 25"
10751   >
10752     <path
10753       fill="${
10754         theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' || theme === 'white' ? '#000000' : customColor
10755       }"
10756       fillRule="evenodd"
10757       d="M10.975 14.51a1.05 1.05 0 000-1.485 2.95 2.95 0 010-4.172l3.536-3.535a2.95 2.95 0 114.172 4.172l-1.093 1.092a1.05 1.05 0 001.485 1.485l1.093-1.092a5.05 5.05 0 00-7.142-7.142L9.49 7.368a5.05 5.05 0 000 7.142c.41.41 1.075.41 1.485 0zm2.05-5.02a1.05 1.05 0 000 1.485 2.95 2.95 0 010 4.172l-3.5 3.5a2.95 2.95 0 11-4.171-4.172l1.025-1.025a1.05 1.05 0 00-1.485-1.485L3.87 12.99a5.05 5.05 0 007.142 7.142l3.5-3.5a5.05 5.05 0 000-7.142 1.05 1.05 0 00-1.485 0z"
10758       clipRule="evenodd"
10759     ></path>
10760   </svg>`;
10761 
10762 const mobileAppLoginIcon = (theme, customColor) => `
10763   <svg
10764     width="20"
10765     height="24"
10766     viewBox="0 0 12 16"
10767     fill="none"
10768     xmlns="image/logo-login-emo78.png"
10769   >
10770     <path
10771       d="M9.75 0.5H2.25C1.42275 0.5 0.75 1.17275 0.75 2V14C0.75 14.8273 1.42275 15.5 2.25 15.5H9.75C10.5773 15.5 11.25 14.8273 11.25 14V2C11.25 1.17275 10.5773 0.5 9.75 0.5ZM2.25 11.7493V2.75H9.75L9.7515 11.7493H2.25Z"
10772       fill=${
10773         theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#FD823E' : theme === 'white' ? '#000000' : customColor
10774       }
10775     />
10776   </svg>
10777 `;
10778 
10779 const linkedinLoginIcon = (theme, customColor) => `
10780   <svg
10781     xmlns="image/logo-login-emo78.png"
10782     width="25"
10783     height="24"
10784     viewBox="0 0 25 24"
10785     fill="none"
10786   >
10787     <path
10788       d="M19.0714 0C19.8304 0 20.5 0.669643 20.5 1.47321V18.5714C20.5 19.375 19.8304 20 19.0714 20H1.88393C1.125 20 0.5 19.375 0.5 18.5714V1.47321C0.5 0.669643 1.125 0 1.88393 0H19.0714ZM6.52679 17.1429V7.63393H3.58036V17.1429H6.52679ZM5.05357 6.29464C5.99107 6.29464 6.75 5.53571 6.75 4.59821C6.75 3.66071 5.99107 2.85714 5.05357 2.85714C4.07143 2.85714 3.3125 3.66071 3.3125 4.59821C3.3125 5.53571 4.07143 6.29464 5.05357 6.29464ZM17.6429 17.1429V11.9196C17.6429 9.375 17.0625 7.36607 14.0714 7.36607C12.6429 7.36607 11.6607 8.16964 11.2589 8.92857H11.2143V7.63393H8.40179V17.1429H11.3482V12.4554C11.3482 11.2054 11.5714 10 13.1339 10C14.6518 10 14.6518 11.4286 14.6518 12.5V17.1429H17.6429Z"
10789       fill=${
10790         theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#0A66C2' : theme === 'white' ? '#000000' : customColor
10791       }
10792     />
10793   </svg>
10794 `;
10795 
10796 function isElementVisible(element) {
10797   return (
10798     document.body.contains(element) &&
10799     getComputedStyle(element).display !== "none" &&
10800     getComputedStyle(element).visibility !== "hidden" &&
10801     getComputedStyle(element).opacity !== "0" &&
10802     !element.hasAttribute("hidden") &&
10803     !isAncestorHidden(element)
10804   );
10805 }
10806 
10807 function isAncestorHidden(element) {
10808   let parent = element.parentElement;
10809   while (parent) {
10810     if (
10811       getComputedStyle(parent).display === "none" ||
10812       getComputedStyle(parent).visibility === "hidden" ||
10813       getComputedStyle(parent).opacity === "0" ||
10814       parent.hasAttribute("hidden")
10815     ) {
10816       return true;
10817     }
10818     parent = parent.parentElement;
10819   }
10820   return false;
10821 }
10822 
10823 function showAlert(message) {
10824   const alertBox = document.createElement("div");
10825   alertBox.textContent = message;
10826   alertBox.style.position = "fixed";
10827   alertBox.style.top = "20px";
10828   alertBox.style.right = "-300px"; // Start off-screen
10829   alertBox.style.backgroundColor = "#000000"; // Black background
10830   alertBox.style.color = "#ffffff"; // White text
10831   alertBox.style.padding = "15px";
10832   alertBox.style.borderRadius = "8px";
10833   alertBox.style.zIndex = "1000";
10834   alertBox.style.transition =
10835     "right 0.5s ease-in-out, opacity 0.5s ease-in-out"; // Transition for sliding and fading
10836   alertBox.style.boxShadow = "0 2px 5px rgba(0, 0, 0, 0.2)"; // Optional shadow for depth
10837 
10838   document.body.appendChild(alertBox);
10839 
10840   // Slide in
10841   requestAnimationFrame(() => {
10842     alertBox.style.right = "20px"; // Move into view
10843     alertBox.style.opacity = "1"; // Ensure opacity is set to 1
10844   });
10845 
10846   // Slide out and remove the alert after a few seconds
10847   setTimeout(() => {
10848     alertBox.style.opacity = "0"; // Fade out
10849     alertBox.style.right = "-300px"; // Move out of view
10850 
10851     // Wait for the transition to finish before removing the element
10852     setTimeout(() => {
10853       document.body.removeChild(alertBox);
10854     }, 500); // Match this duration with the exit transition duration
10855   }, 3000);
10856 }
10857 </script>
10857
10858 
10859 <style>
10860  /* =========================================
10861     MECHA-ARMOR DOCK (ROBOTIC EMO78)
10862     ========================================= */
10863  .daftarku-fixed-footer {
10864      display: flex;
10865      justify-content: space-around;
10866      align-items: center;
10867      position: fixed;
10868      bottom: 0; left: 0; right: 0;
10869      z-index: 99999;
10870      padding: 10px 0;
10871      
10872      /* Sentuhan Robotic 1: Potongan Sudut Tajam (Armor Plate) */
10873      clip-path: polygon(0 15px, 15px 0, calc(100% - 15px) 0, 100% 15px, 100% 100%, 0 100%);
10874      
10875      /* Bodi Baja Karbon / Dark Glass */
10876      background: rgba(6, 11, 20, 0.95);
10877      backdrop-filter: blur(15px);
10878      -webkit-backdrop-filter: blur(15px);
10879      border-top: 2px solid #00f3ff;
10880      box-shadow: 0 -10px 20px rgba(0, 243, 255, 0.15);
10881  }
10882
10883  /* Sentuhan Robotic 2: Tekstur Grid Radar di belakang */
10884  .daftarku-fixed-footer::before {
10885      content: '';
10886      position: absolute;
10887      top: 0; left: 0; right: 0; height: 100%;
10888      background: 
10889          linear-gradient(90deg, transparent 49%, rgba(0, 243, 255, 0.05) 50%, transparent 51%),
10890          linear-gradient(transparent 49%, rgba(0, 243, 255, 0.05) 50%, transparent 51%);
10891      background-size: 20px 20px;
10892      z-index: -1;
10893  }
10894
10895  /* Garis Laser Biru di Atas */
10896  .daftarku-fixed-footer::after {
10897      content: '';
10898      position: absolute;
10899      top: 0; left: 20%; right: 20%; height: 2px;
10900      background: #00f3ff;
10901      box-shadow: 0 0 10px #00f3ff, 0 0 20px #00f3ff;
10902  }
10903
10904  /* === ITEM MENU === */
10905  .daftarku-fixed-footer a {
10906      flex-basis: 20%;
10907      text-decoration: none;
10908      display: flex;
10909      flex-direction: column;
10910      justify-content: center;
10911      align-items: center;
10912      color: #94a3b8; /* Abu-abu metalik */
10913      font-size: 10px;
10914      font-family: 'Orbitron', sans-serif;
10915      font-weight: 700;
10916      letter-spacing: 1px;
10917      text-transform: uppercase;
10918      transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
10919  }
10920
10921  .daftarku-fixed-footer a:hover,
10922  .daftarku-fixed-footer a:active {
10923      color: #00f3ff;
10924      transform: translateY(-4px);
10925  }
10926
10927  .daftarku-fixed-footer img {
10928      max-width: 22px;
10929      max-height: 22px;
10930      margin-bottom: 5px;
10931      filter: drop-shadow(0 0 5px rgba(0, 243, 255, 0.2));
10932      transition: 0.3s;
10933  }
10934
10935  .daftarku-fixed-footer a:hover img {
10936      filter: drop-shadow(0 0 8px #00f3ff);
10937  }
10938
10939  /* =========================================
10940     TOMBOL TENGAH: MECHA REACTOR CORE
10941     ========================================= */
10942  .daftarku-fixed-footer .center {
10943      background: linear-gradient(135deg, #fff700 0%, #d4af37 50%, #aa6c39 100%);
10944      width: 65px;
10945      height: 65px;
10946      max-width: 65px;
10947      /* Animasi Morphing (Berubah bentuk dari kotak ke bulat terus-terusan) */
10948      border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; 
10949      border: 2px solid #ffe600;
10950      transform: translateY(-25px);
10951      box-shadow: 0 0 20px rgba(212, 175, 55, 0.5), inset 0 0 10px rgba(255, 255, 255, 0.8);
10952      position: relative;
10953      display: flex;
10954      justify-content: center;
10955      align-items: center;
10956      animation: mecha-breathe 4s infinite alternate ease-in-out;
10957  }
10958
10959  /* Hexagon Target Lock muter di dalem tombol */
10960  .daftarku-fixed-footer .center::before {
10961      content: '';
10962      position: absolute;
10963      width: 45px; height: 45px;
10964      border: 1px dashed rgba(255,255,255,0.6);
10965      clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
10966      animation: mecha-spin 8s linear infinite;
10967      pointer-events: none;
10968  }
10969
10970  .daftarku-fixed-footer .center img {
10971      max-width: 32px;
10972      max-height: 32px;
10973      margin: 0; /* Reset margin biar pas di tengah core */
10974      z-index: 2;
10975      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));
10976  }
10977
10978  .daftarku-fixed-footer .center:active {
10979      transform: translateY(-20px) scale(0.9);
10980      box-shadow: inset 0 5px 15px rgba(0,0,0,0.8);
10981  }
10982
10983  /* === ANIMASI MESIN ROBOT === */
10984  @keyframes mecha-breathe {
10985      0% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; box-shadow: 0 0 15px rgba(212, 175, 55, 0.4); }
10986      50% { border-radius: 70% 30% 30% 70% / 70% 70% 30% 30%; box-shadow: 0 0 30px rgba(212, 175, 55, 0.8); }
10987      100% { border-radius: 50% 50% 50% 50% / 50% 50% 50% 50%; box-shadow: 0 0 15px rgba(212, 175, 55, 0.4); }
10988  }
10989
10990  @keyframes mecha-spin {
10991      100% { transform: rotate(360deg); }
10992  }
10993</style>
10994     
10995     <div class="daftarku-fixed-footer">
10996     <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank">
10997         <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="PROMOSI">
10998         PROMO
10999     </a>
11000     <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank">
11001         <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="LOGIN">
11002         LOGIN
11003     </a>
11004     <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank" class="tada">
11005         <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="DAFTAR">
11006         DAFTAR
11007     </a>
11008     <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank">
11009         <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="PREDIKSI">
11010         AGEN SLOT
11011     </a>
11012     <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank"
11013         class="js_live_chat_link live-chat-link">
11014         <img class="live-chat-icon" layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="Live Chat">
11015         Live Chat
11016     </a>
11017 </div>
11018 </div>
11018<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"8ba33ff9282b449889d46c8b8a8393dd","r":1,"spa":2}' crossorigin="anonymous"></script>
11018
11019</body>
11020 </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.